Pyhton ile Hayatınızı Kolaylaştırın (Bölüm 3) – Sonuçların “xlsx” formatında yazılması

Pyhton ile Hayatınızı Kolaylaştırın (Bölüm 3) – Sonuçların “xlsx” formatında yazılması

Pyhton ile Hayatınızı Kolaylaştırın (Bölüm 2) blog yazımızda çeşitli fonksiyonlar ile domain, domain değerleri ve subtype bilgilerine erişim sağlamıştık. Çoğu zaman özellikle raporlama amacı ile bu bilgilerin görüntülenmesi değil okunabilir bir formata yazmamız önemlidir.

Bu blog yazısında Excel (xlsx) formatında nasıl çıktı oluşturabileceğimize değineceğiz.

Pyhton ile Hayatınızı Kolaylaştırın (Bölüm 1) blog yazımızda bu işlem için ihtiyacımız olan “openpyxl” kütüphanesini Python kütüphanemize eklemiştik.

İlk olarak bu kütüphaneyi kullanabilmek için kodumuzun başına aşağıdaki satırları yazmalıyız.

 

import openpyxl
from openpyxl import Workbook

 

Excel formatındaki dosyanın kayıt edilebilmesi için kullanıcıya dosya yolunu bir parametre olarak belirlemesini istiyoruz. Dosya yolunu kullanıcı seçimine bırakmadan hard-coded olarak da tanımlayabilirsiniz.

dosya = arcpy.GetParameterAsText(1)

...

arcpy.env.workspace = gdb
wb = Workbook()
ws = wb.active
ws['A1'] = 'Katman'
ws['B1'] = 'Sayi'
count = 2
for ds in arcpy.ListDatasets():
    for fc in sorted(arcpy.ListFeatureClasses('','',ds)):
        fc_path = os.path.join(gdb, fc)
        fc_count = str(arcpy.GetCount_management(fc_path))
        ws['A{0}'.format(count)] = fc
        ws['B{0}'.format(count)] = fc_count
        count += 1
output = dosya + "\\" + 'katmansayilari.xlsx'
wb.save(output)

 

Yukarıdaki kod bloğu, “katmansayilari.xlsx” Excel dokümanını açarak “A1” hücresine FeatureClass ismini (Katman), “B1” hücresine ise ilgili FeatureClass da bulunan nesne sayılarını (Sayi) yazdıracaktır.

Bu örnekleri kendi iş süreçlerinize rahatlıkla uyarlayabilir veya detaylı bilgi almak için eğitimlerimize katılım sağlayabilirsiniz.

 

Esri Türkiye, 2019

Pyhton ile Hayatınızı Kolaylaştırın (Bölüm 2) – Subtype ve Domain Sayısını Bulmak

Pyhton ile Hayatınızı Kolaylaştırın (Bölüm 2) – Subtype ve Domain Sayısını Bulmak

Günlük işlerimizde oldukça fazla kullandığımız “file geodatabase” yani “gdb” uzantılı dosyalarımızda bulunan subtype ve domain sayılarını Python kodu ile hızlı bir şekilde bulabiliriz.

Üzerinde işlem yapılacak “gdb” dosyasını kullanıcının seçmesini sağlayabilir veya doğrudan dosya yolunu tanımlayabilirsiniz. Aşağıdaki örnekte kullanıcı tarafından seçilebilecek bir parametre olarak tanımlanmıştır.

gdb = arcpy.GetParameterAsText(0)

Domain listesini oluşturmak

İlk olarak belirtilen “gdb” dosyasındaki domain listesini alalım.

desc = arcpy.Describe(gdb)
domains = desc.domains

Bu noktadan sonra;

for domain in domains:

döngüsü ile domain bilgilerini yazdırabilir veya görüntüleyebilirsiniz.

Not: Eğer yazdığınız kodu ArcToolbox içinde kullanacaksanız;

print (msg)

komutu işe yaramayacaktır. Bu komut ancak ArcMap’in Python penceresinde kullanılabilir.

Subtype sayısını öğrenmek

arcpy.env.workspace = gdb
Tsubtype = 0
for dataset in arcpy.ListDatasets():
    for fcls in arcpy.ListFeatureClasses('','',dataset):
        fcls_path = os.path.join(gdb, fcls)
        subtypes = arcpy.da.ListSubtypes(fcls_path)
        for subtype in subtypes:
            Tsubtype = Tsubtype + 1

döngüsü ile subtype sayısını yazdırabilir veya görüntüleyebilirsiniz.

Not: Eğer yazdığınız kodu ArcToolbox içinde kullanacaksanız;

print (msg)

komutu işe yaramayacaktır. Bu komut ancak ArcMap’in Python penceresinde görüntülenebilir.

Domain ve değerlerini öğrenmek

Tdomain = 0
Tvalue = 0
domains2 = arcpy.da.ListDomains(gdb)
for domain in domains2:
    Tdomain = Tdomain + 1
    coded_values = domain.codedValues
    for val, desc in coded_values.items():
        Tvalue = Tvalue + 1

Yukarıdaki içi içe bulunan döngüden “Tdomain” değeri ile Domain sayısını, “Tvalue” değeri ile Domain değerlerinin sayısını öğrenebilirsiniz.

Esri Türkiye, 2019

Pyhton ile Hayatınızı Kolaylaştırın (Bölüm 1) – ArcMap Python Kütüphanesi Genişletme

Pyhton ile Hayatınızı Kolaylaştırın (Bölüm 1) – ArcMap Python Kütüphanesi Genişletme

Bildiğiniz gibi Pyhton, kolaylıkla öğrenilebilir, ücretsiz ve açık kaynaklı bir programlama dilidir. Eğer daha önce hiç kullanmadıysanız ve meraklıysanız, bu link üzerinden göz atmanızı tavsiye ederiz.

Bu blog yazısı serisinde temel bilginiz olduğunu varsayarak size ArcMap (Pyhton 2.7 kullanır) üzerinde bazı ipuçları vererek günlük işlerinizde kullanabileceğiniz kod örnekleri paylaşacağız. ArcMap ve ArcGIS Pro üzerinde çalışan Python farklılıklarına ilişkin önceden yayınladığımız blog yazısını inceleyebilirsiniz.

ArcMap uygulamasını varsayılan ayarları ile yüklediğiniz zaman Python, aşağıdaki klasör yollarında bulunan kütüphaneleri kullanır.

c:\Program Files (x86)\ArcGIS\Desktop10.x\arcpy\
c:\Python27\ArcGIS10.x\DLLs\
c:\Python27\ArcGIS10.x\Lib\lib-tk
c:\Python27\ArcGIS10.x\Lib\site-packages

Her ne kadar çok geniş bir kütüphane olsa da bazen yeni kütüphaneler eklememiz gerekebilir. Bu ilk bölümde, daha sonradan da kullanacağımız “openpyxl” kütüphanesini yükleyerek “xlsx” dosyalarını okuma ve yazma kabiliyetini edineceğiz.

Bunun için ilk olarak, ilgili kütüphaneyi (ArcMap için kullanılabilecek sürüm 2.7 ‘yi aşmamalıdır) link üzerinden indirmeniz gerekmektedir. İndirmeden önce “Requires: Python >=2.7” olduğunu kontrol etmeniz önemlidir.

Setup.py dosyasının içinde bulunduğu root klasörü arşiv dosyasından dışarı çıkartıyoruz.

“Run–>cmd” ile komut penceresini açıyoruz ve arşiv dosyasından dışarı çıkarttığımız klasörü aktif ediyoruz. Aşağıdaki örnekte bulunan klasör yapısı, indirdiğiniz dizin ve dosya sürümüne bağlı olarak değişkenlik gösterebilir.

Bu pencerede aşağıdaki komutları sırası yazıp çalıştırarak Python kütüphanesine yüklemeyi tamamlıyoruz. Mevcut ArcGIS versiyonunuza göre aşağıdaki klasör isimlerinizi düzenlemeniz gerekmektedir.

c:\Python27\ArcGIS10.x\python.exe setup.py install
c:\Python27\ArcGIS10.x\Scripts\pip.exe install openpyxl

 

İşlemler başarı ile tamamlandıktan sonra yüklemiş olduğunuz kütüphaneyi Python içerisinde kullanabilirsiniz. Yüklediğimiz bu kütüphanenin kullanımı ile ilgili olarak serinin diğer yazılarını takip etmeyi unutmayın.

Esri Türkiye, 2019

Python 2 desteğinin sonlanması ArcGIS’i nasıl etkileyecek

2008 yılında Python 2’nin desteğinin 2015 yılında sonlandırılacağı duyurusunun ardından, 2014 yılında Python Yazılım Vakfı tarafından Python 2 desteğinin sonlandırılma tarihinin 2020’ye uzatıldığı açıklanmıştı. 1 Ocak 2020 tarihi itibariyle Python 2 desteği sonlandırılacaktır. Sahip olduğunuz Esri ürünlerinin bu değişimden nasıl etkileneceklerini yazının devamında bulabilirsiniz. (daha&helliip;)

Dinamik Detay Gruplama

Bazen haritanızdaki detayları hesaplanmış toplam değerlere göre sembolize etmeniz gerekebilir. Haritadaki büyük miktardaki noktayı bir araya getirerek göstermek görselliği daha anlamlı hale getirebilir, bunu yaparken kullanacağınız öznitelik değerlerinden hesaplanan bu değerlere örnek vermek gerekirse bunlar; en küçük değerler (min.), en büyük değerler (max.), ortalamalar (avg.) ya da toplamlar olabilir. Öznitelik bilgilerindeki herhangi bir sütunun değerlerini kullanabilirsiniz.

ArcGIS Pro’da nokta toplulaştırma ve görselleştirme için birçok yöntem vardır. Yazımızın konusu ise bu yeteneklere yeni olarak eklenen Dinamik Gruplama yeteneğidir. Ölçeğe ve haritadaki görüntülenen alana göre dinamik bir gruplama yeteneği, ArcGIS Pro 2.4 versiyonuyla birlikte kullanımınıza sunuldu.

Eğer çok fazla sayıda detaya sahip olan nokta detay sınıfınız varsa ve bunu dinamik olarak anlamlı gruplar halinde görselleştirmek istiyorsanız ve bir de bu veriyi İlişkisel Veri Tabanı Yönetim Sisteminde (İVTYS) barındırıyorsanız bu yeteneği kullanabilirsiniz.  Şu an için bu işlevi destekleyen veri tabanı platformları aşağıdaki gibidir:

  • IBM Db2
  • Microsoft SQL Server
  • Oracle
  • PostgreSQL
  • SAP HANA

Bunu yaparken çok büyük veri setleriyle çalışıyorsanız ya da çok sık güncellenmeyen verilerle çalışıyorsanız istediğiniz ölçekler için statik gruplama kullanarak, ardından da verilerinizi görselleştirmenin anlamlı olduğu aralıklarda dinamik gruplama gösterimi de sağlayabilirsiniz.

Coğrafi veri tabanınızda olan deprem noktaları detay sınıfına Python kullanarak da uygulayabileceğiniz dinamik gruplama Python kodu aşağıdadır:

*Bu kod örneği WGS 84 Coğrafi Koordinat Sisteminde olan Depremler detay sınıfı derinlik öznitelik sütunundan depremlerin maksimum derinliklerine göre kare şeklinde gruplama yapmayı aktif hale getirir.

Esri Türkiye, 2019

Esri CityEngine’de Python’u Kullanarak İş Akışlarınızı Otomatikleştirin

Esri CityEngine’de Python’u Kullanarak İş Akışlarınızı Otomatikleştirin

Python ve Esri CityEngine

Python, nesne yönelimli, yorumlamalı, birimsel ve etkileşimli yüksek seviyeli bir programlama dili olduğu için CityEngine’in olanaklarını büyük ölçüde arttırmaktadır. Bu blog yazısında Python konsolunun ve editörün temel kullanımı ve CityEngine görevlerinin otomatikleştirilmesi konusunda çeşitli örnekler verilecektir. CityEngine’de Python’u kullanma amacımız modelleme işlemlerinden ziyade, otomasyondur. Python komut dosyaları Python konsolunda veya Python düzenleyicisinden çalıştırılabilmektedir.

Python Console

Python konsolunu kullanarak CityEngine projemizin klasörlerinde veya herhangi bir klasörde bulunan komut dizinleri çalıştırılabilmektedir. Örneğin scripts klasöründe bulunan bir komut dizini direkt olarak konsolda, içeri aktarılarak çalıştırılabilmektedir.

Python Konsolu

Python Editor

Python Editor, komut dosyalarını düzenlemek ve yürütmek için daha uygun bir yol sunar .Python modüllerini Dosya → Yeni … → Python Modülü yolu ile oluşturabilir.  Yeni bir python modülü oluştururken kaynak klasör olarak mevcut projemizde bulunan scripts klasörünü seçebilir, hatta scripts klasörüne sağ tıklayarak yeni python modülü oluşturabilmekteyiz.

CityEngine yazılımında Python’u ne şekilde kullanabilmekteyiz ?

Python ile CityEngine de birçok şeyi otomatikleştirebilmekteyiz. Örneğin bir oyun projesinde çalışıyoruz ve tekrarlı olarak fbx formatında çıktılar elde etmek zorundayız.  Python ile oluşturacağımız yönergeler ile, sadece tek tıkla komut dosyası içerisinde belirttiğimiz tüm parametreler ile birlikte modelimizi dışarı aktarabiliriz. CityEngine model dışarı aktarım seçeneklerinde bulunan tüm doku, geometri ve diğer parametreleri komut dosyası içerisinde belirtebilmekteyiz.

FBX dışa aktarım komut dosyasının çalıştırılması.

Python  kullanarak CityEngine yazılımındaki iş akışlarımızı otomatik bir hale getirebiliriz. Yukarıdaki sahnede komut dosyasının çalıştırılmasının ardından sahnede bulunan modelin .fbx uzantılı çıktısı models klasörüne eklenmiştir.Komut satırı çalışırken yapılan tüm işlemler aynı zamanda ekranda görüntülebilmektedir.

Animasyon Oluşturma

Python komut dosyaları, üretim veya dışa aktarım işlemlerini otomatikleştirmek için kullanılabilir. Aşağıdaki örnekte ise cga kuralları ile oluşturulan bir bina özelinde yazılan bir komut dosyasının sonucu görüntülenmektedir. Cga kural dosyası, binanın pencere aralıklarını, boyutu ve kapı genişliği gibi özellikleri içermektedir. Bu değerleri elle ayarlamak yerine, değerleri değiştiren bir komut dosyası oluşturabiliriz. Sonuç görüntüsü aslında bir animasyon teknolojisinden ziyade bina içerisinde olan değerlerin otomatik olarak değiştirilmesidir.

CGA kuralı içerisinde bulunan parametrelerin, phyton komut dosyası ile otomatik bir şekilde yönetilmesi.

CityEngine kendi Jython kurulumunu kullanmaktadır. Başka kütüphaneleri CityEngine yazılımına entegre ederek etkileyici senaryolar oluşturabilirsiniz. Örneğin tweepy’i kütüphanesini kullanarak bir sahne oluşturabilirsiniz. Sahne kullanıcıların izin vermesi dahilinde gerçek zamanlı twitleri ve konumlarını içeren firehose’ları sunmaktadır. Bu şekilde twittlerin sıklığına göre binaların yukarı doğru büyüdüğü bir sahne oluşturabilirsiniz.

Esri Türkiye 2019

Bu yazı için bir etiket bulunmamaktadır.