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

AppStudio for ArcGIS

“AppStudio for ArcGIS”, harita ve CBS (Coğrafi Bilgi Sistemi) verilerinizi native uygulamalara dönüştürerek kurumunuzdaki diğer kişilerle veya popular uygulama mağazaları sayesinde herkesle paylaşmanızı sağlar. AppStudio ile oluşturulan uygulamalar cross-platform (birden fazla işletim sisteminde desteklenen) özelliği sayesinde Android, iOS, Linux, macOS ve Windows işletim sistemlerinde çalışabilmektedir. AppStudio üyenin kullanıcı tipine dahil edildiğinde, uygulama oluşturmak için minimum kod yazımını sağlar. Üyeler, konfigüre edilebilir uygulama şablonlarıyla, özel kod yazarak şablonların özelliklerini geliştirerek veya sıfırdan uygulamalar oluşturabilirler. Yapacağınız konfigürasyon veya değişiklik miktarında göre çok az kod bilgisi ve efor ile AppStudio kullanarak tarayıcıda ya da masaüstünde çalışan uygulamalar geliştirebilirsiniz.

AppStudio for ArcGIS Desktop Edition Kurulumu

Masaüstünüzde AppStudio kullanmak için, işletim sisteminiz ve mimarisine göre kurulum dosyasını indiriniz ve yüklemek için çalıştırınız. Daha detaylı bilgi için linkere (1 ve 2) tıklayınız.

Kurulum tamamlandıktan sonra, masaüstünüzde iki adet kısayol oluşturulacaktır:

  • AppStudio for ArcGIS Desktop Edition; uygulamaları konfigüre etmek ve yönetmek için
  • Qt Creator (AppStudio for ArcGIS); uygulamalarınızı güncellemek için

AppStudio’nun tüm özelliklerinden faydalanmak için AppStudio kullanmanıza olanak sağlayan lisansa sahip ArcGIS Online hesabınız ile oturum açmanız gerekmektedir. Lisans hakkında daha detaylı bilgi için linke tıklayınız.

Temel (Basic) ve Standart (Standard) olarak iki farklı versiyonu bulunmaktadır:

  • AppStudio for ArcGIS Basic
    • Ücretsiz olarak her ArcGIS “named user” hesabına dahildir.
    • AppStudio web sitesinden ön tanımlı uygulama şablonları kullanılarak herkesin kullanımına açık harita uygulamaları oluşturmanız sağlanır.
  • AppStudio for ArcGIS Standard
    • ArcGIS Developer Subscription (Derleyici ve üstü) satın alınarak kullanılabilir
    • Tüm temel sürümün özellikleri yanında aşağıdaki yetenekleri de içerir:
      • Size ve kurumunuza özgü uygulamalar oluşturabilir.
      • Kurumunuza uygulamaları paylaşabilirsiniz.

Yeni bir uygulama Oluşturma

İlk kez kullanmanız durumunda mevcut bir uygulamanız olmayacaktır. Yeni bir uygulama oluşturmak için ekrandaki “New App” (Yeni Uygulama) düğmesine basınız.

Ekrana gelecek diyalog üzerinden uygulamanızın çeşidini ve başlığını belirleyebilirsiniz.

Uygulama Ayarlarını Değiştirme

Uygulamanızı oluşturduktan sonra ana panelde görüntülenecektir. İlgili uygulamayı seçip, sağ kısımdaki paneldeki yönetim bölümünden uygulamanızın özelliklerini, tekrar derlenmesini, çalıştırılmasını, silinmesi gibi işlevlerini gerçekleştirebilirsiniz.

Uygulamanın ArcGIS’e Yüklenmesi

Oluşturmuş olduğunuz uygulamanızı başkalarıyla paylaşmak için veya kurulum dosyalarını derlemek için ArcGIS üzerine yüklenmesi gerekmektedir. Yüklemek (Upload) için “Upload” düğmesine basınız. Yükleme yapabilmek için AppStudio for ArcGIS Standart lisansına sahip olunmalı.

Oynatıcıda Uygulamanın Test Edilmesi

Oluşturduğunuz uygulamaların hem masaüstü versiyonunu hem de mobil cihazlardaki versiyonunu test etmek için Oynatıcı (Player) uygulaması ile gerçekleştirilmektedir. Oynatıcı uygulaması Google Play ve App Store mağazalarından ücretsiz olarak edinebilirsiniz.

Oynatıcının masaüstü versiyonunu linkten temin edebilirsiniz. AppStudio ile oluşturduğunuz herhangi bir platformda çalışacak uygulamanız Oynatıcı sayesinde görüntüleyebilirsiniz.

AppStudio kullanarak yapacağımız uygulamalar hakkında blog yazılarımız için Esri Türkiye Blog web sayfamızı takip edebilirsiniz.

Esri Jupyter Notebook’ta OpenStreetMap Bina Verisi Kullanılarak Basit Analizler Yapımı

Esri Jupyter Notebook’ta OpenStreetMap Bina Verisi Kullanılarak Basit Analizler Yapımı

ArcGIS Pro yüklü makinede yüklenebilen ücretsiz Jupyter Notebook sayesinde ‘ArcGIS API for Python’ kullanılarak coğrafi uygulamalar geliştirip analizler gerçekleştirebilirsiniz. Bununla birlikte ArcGIS Online yönetimini de yapılabilmektedir.

ArcGIS Pro yazılımına sahip ama henüz Jupyter Notebook’u bilgisayarınıza yüklemediyseniz link içinde geçen yönergeleri takip edip bilgisayarınıza yükleyebilirsiniz. Hemen şimdi kullanmak istiyorsanız da Esri’nin ücretsiz hizmete sunduğu notebooks.esri.com adresinde Jupyter Notebook’u kullanabilirsiniz. Dikkat etmeniz gereken husus bu adreste yapacağınız çalışmaları ve verilerinizi kendi yerel bilgisayarınıza kopyalamanız. Çünkü açacağınız oturum, süre kısıtlı; eğer hiçbir işlem yapmazsanız belirli bir süre içinde oturumunuz otomatik olarak kapatılır ve yaptığınız çalışmaları kaybedebilirsiniz.

Bu yazıda Jupyter Notebook platformu üzerinde 3 boyutlu bir harita üzerinde OpenStreetMap (OSM) bina verilerini görselleştirip, metro duraklarına kendi oluşturacağımız yakınlık analizi algoritmasına göre görselleştirmesi anlatılmaktadır.

İşleyiş adımları aşağıdaki gibi olacaktır:

Şekil 1. İşleyiş adımları

Gereksinimler:

  1. ArcGIS Developer hesabı (ücretsiz oluşturmak için https://developers.arcgis.com/ adresini ziyaret edin)
  2. Jupyter Notebook

1.      OSM Bina Verilerinin Alınması

OSM ücretsiz servisler sunması nedeniyle içerdiği büyük boyutlarda coğrafi verilerin son kullanıcılar tarafında erişimi farklı ücretli ve ücretsiz olarak erişilebilmektedir. Bu yazıda overpass-turbo.eu sitesi üzerinden ücretsiz olarak bina verilerini indireceğiz. Yasal kullanım hakları için https://www.openstreetmap.org/copyright sitesine mutlaka bakın.

İlgili sitede, arama kutusuna istediğiniz bölgeyi yazın ve alacağınız bina verilerini öncelikle olabildiğince dar alan için alın. Yazı bitiminde istediğiniz büyüklükte bir alan üzerinden çalışabilirsiniz.

Şekil 2. Ankara şehir merkezi binalar

Sol üstteki ‘Wizard’ (Sihirbaz) düğmesine basıp, çıkan ekranda haritada görüntülenen alan için alabileceğimiz OSM verisi için sorgu oluşturacağız. Buradaki sorgu için kullanacağınız kelimelerin detaylarını linkte bulabilirsiniz.

Şekil 3. Sorgu sihirbazı

Sorgu sihirbazına yazacağınız ‘building=* OR building:levels=*’ yazarak, haritada görüntülediğiniz alandaki tüm binaları ve varsa seviye (kat) bilgisini da almış oluyorsunuz. Burada seviye bilgisi her bina için farklılık gösterecektir. ‘build and run query’ (derle ve çalıştır sorguyu) düğmesine basarak, ilgili alan için veriler çekilir.

Web sayfasının sol üst kısmındaki ‘Data’ (Veri) sekmesine tıklayarak, çekilen verileri görüntüleyebilirsiniz. Eğer verilerinizde sıkıntı yoksa, web sayfasının sol kısmındaki ‘Export’ (Dışarı Çıkart) düğmesine tıklayarak verileri indirme için gerekli paneli açacağız.

Şekil 4. ‘Dışarı Çıkarma’ paneli

‘Export’ panelindeki ‘Data’ kısmını genişlettiğinizde ‘download/copy as GeoJSON’ (indir/kopyala GeoJSON olarak) linkine tıklayın. Bu şekilde ArcGIS Developer hesabı ile giriş yapabileceğiniz ArcGIS Online içerisine kolay bir şekilde format değişimi yapmadan atabileceğiz.

2.      Verinin ArcGIS Online İçerisine Atılması

ArcGIS Online giriş yapın ve ‘Content’ (İçerik) linkine tıklayın. Sol kısımdaki ‘Add Item’ (Öğe Ekle) düğmesine tıklayıp dosya içeri aktarma sürecini başlatalım. ‘From my computer’ (Bilgisayarımdan) seçeneğini seçelim.

Şekil 5. ArcGIS Online ‘Bilgisayarımdan bir öğe ekle’ paneli

Bir önceki bölümden indirdiğimiz dosyayı burada seçip, ilgili alanları dolduruyoruz. Başlık kısmına girdiğimiz değeri sonraki bölümlerde kullanacağız. Kısa bir süre sonra öğemiz ‘Feature Layer’ (Feature Katmanı) olarak eklenmiş olacak.

Yeni eklenen öğeyi tıklayıp sayfasını açın. Analizler için kullanacağımız yeni bir ‘Field’ (Alan) oluşturmak için ‘Data’ (Veri) sekmesine tıklayıp verilerin görüntülendiği sayfa açılsın.

Şekil 6. ‘Alan Ekle’ menüsü

Sol kısımdaki üç tırtıklı ikona tıklandığı zaman açılan menüde ‘Add Field’ (Alan Ekle) menü seçeneğini tıklanır ve aşağıdaki resimdeki veriler girilir.

Şekil 7. ‘Alan Ekle’ paneli

3.      Jupyter Notebook içerisinde Programlama

Öncelikle analiz için kullanacağımız metro bilgisini almak. Bunun için ‘Jupyter Notebook’ uygulamasını çalıştırın ve yeni bir çalışma kitabı oluşturun ve aşağıdaki kodları yazıp çalıştırın.

Şekil 8. Metro bilgisinin alınıp ArcGIS Online’a kaydetme

Yukarıdaki kodlarda kırmızı ile kapatılmış alanları kendi bilgilerinize göre doldurmanız gerekmektedir. Bu kod parçası Ankara merkezde metro istasyonları POI bilgisini ‘feature’ olarak en fazla 20 tane olacak şekilde almaktadır. Sonrasında da harita üzerinde gösterimini sağlayıp, bilgiyi ArcGIS Online üzerine ‘metrolar’ olarak kaydetmektedir.

İsterseniz kaydedilen ‘metrolar’ katmanının görsel ikonunu değiştirebilirsiniz.

Metro bilgisini alma işlemini bitirdikten sonra, ana uygulamamızı oluşturabiliriz. Bunun için yeni bir çalışma kitabı oluşturalım Jupyter Notebook üzerinde.

Kod hücrelerinde:

  1. Gerekli kütüphane kullanımları yapılıyor ve ArcGIS Online hesabına bağlantı sağlanıyor.
  2. Merkezi Ankara olacak şekilde bir harita objesi oluşturuluyor.
  3. ArcGIS Online hesabına bağlı olan içerikte bina bilgilerini içeren ‘export’ katmanı bulunuyor.
  4. ‘metrolar’ katmanı bulunuyor.
  5. Yapılacak analiz sonucunda 3 boyutlu binaların görselliğini değiştirmek için özel bir semboloji tanımlanıyor. ‘ClassBreak’ tipindeki bu sembolojide alan ‘distance’ içindeki 0, 15, 25, 50, 75 ve 100 metrelik değerlere göre bina renklendirilmesi farklı olmaktadır.
    Metro katmanı haritaya katman olarak eklenir. Haritayı 3 boyutlu hale getirmeyi unutmayınız.
  6. Basit bir analiz yapılıyor. Metro konumlarına göre oluşturacağımız ‘buffer’ işlemini 100,75,50,25 ve 15 metrelik tekrarlar ile yapıp, her oluşturulan ‘buffer’ poligonun bina poligonu ile arasındaki uzaklık farkının sıfır olması durumunda, bina bilgisindeki ‘distance’ alanına ilgili ‘buffer’ uzaklığının değeri yazılmaktadır. Bu şekilde tüm binaların metro duraklarına olan uzaklığı hesaplanmaktadır.

Şekil 9. Basit bina-metro durağı analizi

Kodun çalıştırılması sonrasında haritamızda analiz sonucunu görüntüleyeceğiz.

Şekil 10. Ankara merkez bina-metro yakınlık analizi

Metro bilgisi yerine isteyeceğiniz farklı POI bilgilerin ve bina bilgilerine göre farklı analizler yapabilirsiniz artık.