ArcGIS ve Python: İş sürecinizi hızlandıracak ve kolaylaştıracak ipuçları

ArcGIS ve Python: İş sürecinizi hızlandıracak ve kolaylaştıracak ipuçları

ArcGIS masaüstü uygulamaları fonksyonlarını Python’da kullanmanızı sağlayan kütüphane olan arcpy ile diğer Python açık kaynak kütüphanelerini birleştirerek yazacağınız birkaç satır kod ile iş sürecinizi hızlandırabilir ve kolaylaştırabilirsiniz. Aşağıda verdiğimiz 5 örneği kolaylıkla detaylandırabilir ve çeşitlendirebilirsiniz.

1. Bir klasörün alt klasörlerinin içinde belirli karakterleri içeren klasörleri bulabilir ya da yeni klasör oluşturabilirsiniz.

 

2. “json” formatında saklanan veriyi, geodatabase tablosuna dönüştürebilirsiniz.

 

3. Geoprocessing araç çıktılarının adına, aracın çalıştığı zaman (tarih/saat/dakika/…) ekleyebilirsiniz. Bu şekilde, hem aynı araçtan üzerine yazmadan benzersiz çıktılar elde eder, hem de aracın çalıştığı zaman bilgisini çıktıda saklamış olursunuz.

4. Paralel işlememe (parallel processing) ile iş akışlarınızı hızlandırabilirsiniz. Paralel işleme, bir işlemi hızlandırmak için, o işlemin birden çok çekirdeğe dağıtılmasıdır. Bazı geoprocessing araçları paralel işlemeyi destekler. Ortam ayarlarından ArcGIS Pro’nun kullanabileceği maksimum çekirdek sayısını belirtebilirsiniz. Aynı şekilde arcpy kütüphanesinde de paralel işleme için bir modül bulunmaktadır. ArcGIS Pro’daki paralel işleme Paralel İşleme Faktörü tarafından kontrol edilir. Bazı araçlar varsayılan olarak paralel işlemeyi kullanır, diğerleri ise bu özelliği açmak için paralel işlem faktörünü ayarlamanızı gerektirir. Seçilen araç için paralel işlemenin nasıl kontrol edileceğini öğrenmek için, aracın  Esri web sitesindeki “help” dokümanını inceleyebilirsiniz.

Ayrıntılı bilgi almak için:

 

5. Bellekte (memory) çalışabilirsiniz. İş akışınızdaki ara çıktılara bilgisayarınızda yer ayırmak istemiyorsanız, ya da onları diskinize yazması ile vakit kaybetmek istemiyorsanız ara çıktılarınızı bellekte tutabilirsiniz. Çoğu geoprocessing aracı bellekte çalışmayı destekler.

NOT: RAM boyutunuza göre, işinizin bittiği ara çıktıları bellekten silerek, bir sonraki işlemler için yer açmak daha verimli çalışmanızı sağlayabilir.

Ayrıntılı bilgi almak için: Write geoprocessing output to memory

Blog serimizin ilk bloguna bu linke tıklayarak göz atabilirsiniz.

 

Bu yazı için bir etiket bulunmamaktadır.
ArcGIS ve Python: Python Toolbox Oluşturma

ArcGIS ve Python: Python Toolbox Oluşturma

ArcGIS Desktop platformlarındaki (ArcGIS Pro ve ArcMap) iş akışlarınızı otomatize etmek için Model Builder, ya da Python scriptleri kullanabilirsiniz.

Model Builder, karmaşık iş akışlarını görsel ve sezgisel olarak tasvir etmede daha iyi olsa da, Python kadar esnek bir çalışma ortamı sağlayamaz. Python fonksiyonalitesi ve açık kaynaklı kütüphaneleriyle yapabilecekleriniz daha geniş. Bu blog yazımızda, iş akışlarınızı otomatize ettiğiniz kodlarınızdan, kullanıcı dostu arayüze sahip araçlar oluşturmayı göstereceğiz.

NOT: Aşağıdaki örnek ArcGIS Pro için oluşturulmuştur. ArcGIS Pro, Python 3 sürümünü kullanırken, ArcMap Python 2.7 kullandığından kodlarda küçük farklılıklar içerebilir.

NOT 2: Toolbox, araç kutusu; Tool, araç olarak Türkçeleştirilmiştir.

Python Toolbox, bir ya da daha fazla aracınızı barındıran bir araç kutusudur. ArcGIS Desktop uygulamalarından Python araç kutusu oluşturabilirsiniz. Oluşturduğunuz araç kutusu dosyası taslak formatıyla karşınıza çıkar. Bu .pyt dosyasının içerisinde, 2 adet Class yapısı bulunmaktadır. Birincisi, dosyanın araç kutusu şeklinde ArcGIS Pro’da açılmasını sağlarken, ikisincisi aracınızı tanımlar. ‘Toolbox Class’ının adını değiştirmemelisiniz. Eğer, araç kutunuza özel bir ad vermek istiyorsanız, dosyanızın adında değişiklik yapabilirsiniz (Taşkın Analizi.pyt).

Araca özel bir ad vermek için ise, ‘Tool Class’ının içindeki ‘self.label’ değişkenindeki ‘Tool’ ibaresini silip, aracınızı yeniden adlandırabilirsiniz.

     1.  Birden fazla araç oluşturmak

Eğer araç kutunuzda birden fazla araç oluşturmak istiyorsanız, ‘Tool Class’ını kopyalayıp, farklı Class isimleri belirtmelisiniz (Tool, Tool2). Bu belirttiğiniz adları, ‘Toolbox Class’ının içindeki ‘self.tools’ satırına eklemelisiniz ki, diğer araçlarınız da araç kutunuz tarafından tanımlansın.

     2.  Girdi/ Çıktı Değerlerini Oluşturan Parametreleri Oluşturma

‘Tool Class’ınızın içindeki ‘getParameterInfo’ fonksiyonunda, aracı çalıştırmak için gerekli olan girdi ve çıktılar tanımlanır.

     2.1.  Değişkenleri Belirleme 

Her bir parametre için 5 farklı değişken girilmelidir.

  • ‘displayName’ parametrenin araç arayüzünde görüntülenecek adını,
  • ‘name’ parametrenin Python içerisindeki adını,
  • ‘datatype’ veri tipini,
  • ‘parameterType’ aracın çalışması için bu parametrenin doldurulmasının zorunlu olup olmadığını belirtir. Örneğin parametre tipi olarak ‘Required’ belirlediyseniz, araç arayüzünde bu parametrenin doldurulacağı satırda kırmızı yıldız bulunur ve parametre doldurulmadan Çalıştır(Run) butonuna basılamaz.
  • ‘direction’ ise parametrenin girdi, çıktı ya da araç tarafından türetilmiş olduğunun belirtildiği alandır. Örneğin bu parametre ‘Input’ olarak belirlenirse, araç arayüzünde kullanıcıdan doldurulması beklenir. ‘Output’ olarak belirlenirse, araç arayüzünde değil, araç çıktısı olarak karşımıza çıkar.

Parametrelerin değer kümelerinin belirtildiği tabloya buradan ulaşabilirsiniz.

     2.2.   Veri tipleri

Veri türlerinin ayrıntılı listesine buradan ulaşabilirsiniz. En çok kullanılan bazı veri türleri:

  • Feature Class: “DEFeatureClass”
  • Raster Dataset: “DERasterDataset”
  • Alan: “Field”
  • Çalışma alanı (Klasör ya da geodatabase): “DEWorkspace”

Araçları oluşturduk, girdi ve çıktı parametreleri belirledik. Şimdi ise aracın çalıştıracağı işlemleri belirten adımla aracı tamamlayabiliriz. İşlemlerin tanımlandığı fonksiyonda(execute) kullanılmak üzere yukarıda oluşturduğumuz parametreler return ifadesi ile döndürülür.

NOT: Class yapısında bulunan ‘isLicenced’, ’updateParameters’ ve ‘updateMessages’ Class’ları iş akışınıza göre opsiyonel kullanılabilecek fonksiyonlardır.

     3.  İş akışlarını kodlama

‘execute’ Fonksiyonu ile parametrelerinizi manipüle edebilir ve araç çıktınızı uygun iş akışları sonucunda oluşturabilirsiniz. Aşağıdaki örnekte, ‘getParameterInfo’ fonksiyonunun altında oluşturduğumuz ve ‘return’ ifadesi ile döndürdüğümüz parametreleri burada kullanacağız.

Oluşturduğumuz aracı, nasıl düzenlendiğini, nasıl çalıştığını aşağıdaki videodan takip edebilirsiniz.

 

ArcGIS ve Python blog serimizin ikinci blogunda ise Python’daki iş sürecinize değinilmiştir. Sürecinizi hızlandıracak ve kolaylaştıracak birkaç satırlık kod örneklerine erişmek için tıklayın.

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

Özelleşmiş Harita Elemanları ile Haritanız Kendi Kendini Anlatsın!

ArcGIS platformları, harita elemanlarının ihtiyaca yönelik özelleştirmelerini destekler. Detaylarınızın etiketlerini (Label) ve açılır pencerelerini (Pop-up) basit kodlarla ihtiyacınıza uygun bir şekilde özelleştirerek haritanızı anlamlandırabilirsiniz.

 

1. Etiket (Label) Özelleştirme

Etiketler, yalnızca belirli bir alan (field) değerini içerebildiği gibi, çeşitli işlemler uyguladıktan sonra oluşturulacak özelleşmiş, komplike içeriğe de sahip olabilirler. Bu yazıda Arcade dilinde 6 farklı fonksiyon ve renklendirme ile özelleştirme örnekleri gösterilmiştir.

  •      Koşullu İfadeler (iif)

Koşullu ifadeler için “iif” fonksiyonu kullanılır. Fonksiyonun başından ilk virgüle kadarki olan kısmı bir ifadeyi içerir ve “eğer bu ifade doğruysa” anlamı taşır. İlk virgülden ikinci virgüle kadar olan kısım ifadenin doğru olması durumunda yapılacak işlemi anlatır. İkinci virgülden sonra parantezi kapatana kadarki kısım ise ifade yanlış olduğunda yapılacak işlemi anlatır.

 

Örneğin bir mahalledeki binaları sayısallaştırdınız. “Kullanım Türü”; “Konut” olan binalarda “Nüfus” alanından etiketlenirken, “Ticari” olanlar ise “Çalışan Sayısı” alanından etiketlenebilir.

 

 

 

 

  •      Maximum/ Min Değer (Max/Min)

“Max” fonksiyonunu, iki veya daha fazla alandaki değerlerden en yüksek olan değer ile etiketleme yapmak için kullanılabilir. Aynı şekilde “Min” fonksiyonu ise bu alanlardan en düşük değeri etiket olarak detaya eklemek için kullanılabilir.

Yukarıdaki senaryoyu düşündüğümüzde, Konut olan binalarda çalışan olmayacağından en yüksek değer olan “Nüfus” alanı etiket olarak yazdırılırken, Ticari binaların ise nüfusu olmayacağından “Çalışan sayısı” alanına göre etiketlenme yapılır.

Bu durumda detaylar, hangi alanda bir değere sahipse o alandan etiketlenir.

 

 

 

  •      Mutlak değer (Abs)

Alanlarınızdaki negatif değerlerinizi positif bir sayı olarak etiketlemek için “Abs” fonksiyonunu kullanabilirsiniz. Örneğin binalardaki nüfusun bir önceki yıl bilgisi mevcutsa, iki alanı birbirinden çıkardıktan sonra “Abs” fonksiyonuyla nüfus değişimini pozitif bir sayı olarak etiketleyebilirsiniz.

 

  •      Alan değerlerini ayrıştırma (Split)

Bir alandaki değerlerin belirli bir kurala uygun bir şekilde ayrıştırıldıktan sonra etiketleme yapabilirsiniz. Örneğin, adres bilgilerini içeren alanınız var. Siz bu adres bilgilerinden yalnızca bina numaralarını etiketlemek istiyorsunuz. O halde, adresi içeren mahalle, sokak, bina numarası bilgileri birbirinden hangi karakter ile ayrılmış ise o karakteri “Split” fonksiyonunun bir parametresi olarak kullanmalısınız.

Örneğin aşağıda adres bilgileri virgül ile ayrılmıştır. Bu adresi “Split” ile ayrıştırdığımızda istediğimiz parçası ikinci parçasıdır. Programlama dillerinde listeler sıfırıncı eleman ile başladığından 1. parça isterimizi karşılayacaktır.

 

   

 

  •       Ondalıklı Sayıları Yuvarlama (Round)

Ondalıklı sayıları yuvarlamak için “Round” fonksiyonu kullanılır. Fonksiyonun bir parametresi de virgülden sonra korunacak basamak sayısını içerir. Eğer bu parametreyi belirtmezseniz, virgülden sonraki tüm basamakları yuvarlayarak tam sayıya çevirir.

 

  •      Tarih Aralığı Bulma (DateDiff)

İki ayrı tarih biçimindeki alanların gün, ay, yıl şeklindeki farkını “DateDiff” fonksiyonu ile bulabilirsiniz.

 

  •      Bir Alana Birden Fazla Renkler Atama (<CLR…>)

Etiketleme ve Açılır Pencere ayarlarında yazı tipi ve rengi seçimi mevcuttur. Ancak, bir alandaki (field) değerlere göre renk farklılaşması için Arcade ifadesi kullanılmalıdır.

Örneğin, Bina nüfusu 20’den fazla olan binaların etiketleri kırmızı belirlenirken, 20’den az olanlar yeşil olarak belirlenebilir.

 

 

 

 

 

2. Açılır Pencere (Pop-up) Özelleştirme

Açılır pencereler hem ArcGIS Pro’da hem de ArcGIS Online ve Portal’da özelleştirilebilirler. Yukarıda da örnekleri gösterilen tüm Arcade fonksiyonlarını açılır pencerelerde de özelleştirmek için kullanabilirsiniz.

Bu pencerelerde etiketlemeden farklı olarak, farklı alanlar ile de çalışılabilir. Bir alandaki değerlerin farklılaşmasına göre başka alanların görünürlüğü açılıp kapatılabilir.

Örneğin bir mahalledeki binaları sayısallaştırdınız. Kullanım türü konut olan binaların açılır pencerelerinde “Hizmet Türü” alanı görünmemeli ve kullanım türü ticari olan binalarda ise “Nüfus” alanı görünmemeli. 

 

 

 

 

Daha fazla bilgi için:

  1. ArcGIS Pro’da etiketleme : Create Labels
  2. ArcGIS Pro’da açılır pencere ayarları : Configure Pop-ups
  3. Web Haritalarında açılır pencere yapılandırmaları (Arcade ifadeleri kullanılmadan) :

ArcGIS Online Web Haritalarında Açılır Pencere Yapılandırmaları

Esri Türkiye 2020

Teknik Danışmanlık için Profesyonel Hizmetler Birimi ile iletişime geçiniz.

 

 

Coğrafi Kodlamada İhtiyacınıza Uygun ArcGIS Yetenekleri

Coğrafi Kodlamada İhtiyacınıza Uygun ArcGIS Yetenekleri

Coğrafi kodlama, adres bilgilerinin coğrafi koordinatlara dönüştürülerek harita üzerinde görüntülenmesi işlemidir. ArcGIS Pro, ArcGIS Online ve ArcGIS Enterprise platformlarında coğrafi kodlama yapabilirsiniz.

Coğrafi kodlama işlemi tek bir adres verisinin coğrafi koordinat sisteminde gösterilmesi veya bir dizi adres bilgisi içeren bir tablonun harita üzerine aktarılması olarak iki şekilde yapılabilir.

Örneğin, adres bilgisi içeren bir mekanın hangi konumda, size ne kadar uzak olduğunu ya da nasıl oraya ulaşacağınızı öğrenebilmek için yapılan ilk işlem o adresin coğrafi kodlama yapılarak harita üzerine aktarılmasıdır. Bu coğrafi kodlama işlemi tek bir adres verisi ile yapılabildiği gibi, bir dizi adres verisinin tek seferde harita üzerine aktarılması da sağlanabilir. Örneğin bir kuryenin gün içerisinde dağıtım yapacağı adresleri içeren bir tablo tek işlemle haritaya aktarılabilir.

Tek bir adres verisi, Esri’nin sunduğu ArcGIS World Geocoding Service ile kredi tüketilmeden kodlanırken, bir dizi adres verisi içeren tablonuzun coğrafi kodlaması için 3 ayrı yol izleyebilirsiniz.

 

  1. ArcGIS World Geocoding Service;

Bu işleminiz için de ArcGIS World Geocoding Service kullanabilirsiniz. Ancak, tablonuzun büyüklüğüne bağlı olarak belirli bir miktar ArcGIS Online krediniz tüketilir.

 

  1. Street Map Premium;

Eğer çok sayıda adres verisine coğrafi kodlama yapılacaksa ve bu işlem düzenli aralıklarla tekrarlanıyorsa her bir işlem için ArcGIS Online kredisi tüketmek yerine Street Map Premium ek bileşeni lisansına başvurulabilir. Street Map Premium lisansının sunmuş olduğu adres konumlandırıcıları ile sınırsız sayıda coğrafi kodlama yapılabilir.

 

 

  1. Adres Konumlandırıcı Üreterek;

Bir adres konumlandırıcı üretebilmek için coğrafi kodlama yapacağınız bölgenin bazı referans verilerine ihtiyacınız olacaktır. Bu veriler, yapacağınız coğrafi kodlamadaki kesinlik arayışınıza göre değişebilir. Örneğin, bir sokak ölçeğinde coğrafi kodlama ihtiyaçlarınızı karşılayacaksa, sokak verisini, referans verisi olarak kullanmak yeterli olacaktır. Ancak bina bazında coğrafi kodlama yapacaksanız, bölgenizdeki referans verilerinde bina numaraları bilgileri de yer almalıdır.

 

Adres konumlandırıcınızı ürettikten sonra dilediğiniz boyutta ve sayıda coğrafi kodlama yapabilirsiniz. Ancak dikkat edin, sürekli olarak değişmekte ve gelişmekte olan şehirler referans verilerinizi hızlıca eskitebilir! Bu verilerinizin güncelliği, coğrafi kodlamanızın kesinliği açısından oldukça önemlidir. Eğer yüksek hassasiyette çalışma yapacaksanız, güncel verileriyle ArcGIS World Geocoding Service ya da Street Map Premium lisansı ile edineceğiniz adres konumlandırıcı, sizin için daha uygun olacaktır.

 

 

Daha fazla bilgi için;

  1. Street Map Premium: Street Map Premium- Overview
  2. Kendi adres konumlandırıcınızı üretmek: Build Your Own Locator

 

 

 

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