ArcMap ve ArcGIS Pro Arasındaki Python Farklılıkları

ArcMap ve ArcGIS Pro Arasındaki Python Farklılıkları

Python açık kaynak kodlu, platformlar arası kolaylıkla kullanılabilen genel amaçlı bir programlama dilidir. ArcGIS Platformu’nda ise ArcMap 10.x ve ArcGIS Pro’daki Geoprocessing araçlarının ana dili olarak kullanılmaktadır. Geniş bir kullanıcı kitlesine sahip olması sebebiyle her geçen gün geliştirilmekte ve CBS kullanıcılarının ihtiyaçlarına karşılık verebilen bir dil haline gelmektedir. ArcGIS Pro içerisinde kullanılan Python versiyonu diğer ArcGIS ürünlerinden (ArcGIS Desktop, ArcGIS Server, ArcGIS Engine) farklı bir yapıdadır. ArcGIS Pro, Phyton 3.x kullanırken ArcMap Python 2.x versiyonlarını kullanmaktadır. Python dil yapısı ana hatlarıyla korunmakla birlikte Versiyon 3’te bazı değişiklikler yapılmıştır. Bu sebeple Python 2.x versiyonu ile yazılmış kodlar ArcGIS Pro’da uyumsuzluklara sebep olmaktadır.

ArcGIS Pro’da Desteklenmeyen Araçlar

Geoprocessing araçlarının pek çoğu ArcGIS Pro’da da mevcuttur, dahası aktarma ve geliştirme aşamasındadır. Ancak, ArcGIS Pro’nun içinde şu anda yer almayan birtakım araçlar vardır. Bunlardan bazıları;
Coverage,
Data Interoperability,
Parcel Fabric,
Schematics ve Tracking Analyst araçlarıdır.
Detaylı bilgi için tıklayınız.

Kütüphanenin Yeniden Düzenlenmesi

Python 3, Python 2 ‘nin kütüphanesinden farklı olarak önemli bir yapılanma içerir. Bu değişiklikler fonksiyonların çoğunun farklı lokasyonlara taşınmasından veya yeni bir modülün parçası olarak yeniden adlandırılmasından kaynaklanmaktadır. Eğer iki versiyonu da destekleyecek kodlara ihtiyacınız varsa bu gibi farklılıklarla başa çıkacak esnek importlar (içeri aktarma) kullanmalısınız. Bu işlemi Pro’da kullandığınız girdilere isim vererek yapabilirsiniz.

Print Komutu

Bir diğer önemli değişikliklerden biri çok sık kullanılan print komutudur. Python 2 versiyonunda kullanılan print statement ArcGIS Pro içerisinde kullanılamamaktadır. Ancak, yeni güncellemelerle beraber gelen print fonksiyonu her iki versiyonda da kullanılabilmektedir.

Import Yaparken Yaşanabilecek Sorunlar

Phyton 2 kodlarınızı Phyton 3 kurallarına göre yazdırmak için kod satırının en başına __future__ yazmanız gerekmektedir. Örneğin, Python 3’te yer alan print fonksiyonunu çağırmak için from __future__ import print_function kullanılmaktadır.

Sözlükte Yapılan Değişiklikler

Aşağıda yer alan kodlar Python 3’te değiştirilmiştir.

ArcMap ArcGIS Pro
dictionary.iteritems() dictionary.items()
iteritems items
xrange range

 

String ve Encoding Kurallarındaki Değişiklikler

Python 3’de tırnak içerisinde yazılan her şey Unicode string olarak tanımlanmaktadır. Ancak aynı kural Python 2 içerisinde geçerli değildir. Bunun için Python 2 içerisinde unicode_literals import edilmesi gerekmektedir. Bu sayede tırnak içerisindeki her şey Unicode olarak okunacaktır.

from __future__ import unicode_literals

Desteklenmeyen Veri Formatları

ArcGIS Pro’nun geliştirilmeye başlanmasıyla beraber bundan sonra pek çok veri formatı desteklenmemeye başlamıştır. Bunlardan bazıları aşağıda yer almaktadır.

Raster catalogs
Geometric networks
Topologies
Schematic datasets
Geodatabase servers
ArcMap document templates
ArcReader documents
Graphs
Tiled map packages
Personal geodatabases

 

Modül Güncellemeleri

Mapping Modülü

ArcGIS Desktop tarafında yer alan arcpy.mapping alt modülü ArcGIS Pro’da isim değiştirmiş ve arcpy.mp adını almıştır. Bu değişiklik ile modülün kabiliyetlerine esneklik kazandırılmıştır. Harita otomasyonuna ek olarak arcpy.mp proje seviye yönetimi sağlamaktadır. ArcGIS Pro’da acpy.mp in görevlerinden biri de harita dokümanının (.mxd) aksine proje dosyasına (.aprx) erişmektedir. ArcMap tarafında bu işlem arcpy.mapping.MapDocument(mxd_path) komutuyla sağlanırken, Pro’da komut ismi arcpy.mp.ArcGISProject(aprx_path) olarak değişmektedir. Aynı şekilde List fonksiyonlarının da ismi kısaltılmış ve basitleştirilmiştir. Aynı işlemleri gerçekleştirseler de ArcMap için yazılmış olan bu kodların ArcGIS Pro için düzeltilmesi gerekmektedir. Detaylı bilgi için tıklayınız.

ArcGIS Desktop tarafında katman dosyaları “.lyr” uzantısına sahipken ArcGIS Pro tarafında bu uzantı ismi “.lyrx” olmaktadır. “.lyrx” dosyaları birden çok katman veya grup katmanları içerebilme özelliğine sahipken “.lyr” dosyası tek bir katman veya katman grubu depolayabilmektedir. ArcGIS Pro .lyr dosya formatını okuyabilmekte olup dosya formatını çevirmek için arcpy.management.SaveToLayerFile() komutu kullanılmaktadır.

Veri Kaynaklarının Güncellenmesi

ArcGIS Pro ile bir katmanın veya tablonun veri kaynağını değiştirmek için uygulanması gereken metodlar ve parametreler değişmiştir. arcpy kütüphanesindeki scriptler dosyalarınızı tek tek açmak yerine hepsini birden güncelleyebilme imkanı sağlamaktadır. Detaylı bilgi için tıklayınız.

Network Analysis Modülü

ArcGIS Desktop tarafında kullanılan arcpy.na komutları, Pro’da farklılıklar göstermektedir. Desktop tarafında Make Route Layer aracı kullanılırken Pro tarafında bu araç Make Route Analysis Layer ismini almıştır. Pro’da bulunan bu yeni araçlar geliştirilmiş fonksiyonlar sunmaktadır. Pro’da bulunan Network Analysis katmanları verilerini ancak File Geodatabase’de tutmaktadır. Bu sebeple verilerin saklı tutulacağı veritabanı yeni bir işlemden önce değiştirilmelidir. İşlem adımlarıyla ilgili detaylı bilgi için tıklayınız.

Analyze Tools For Pro

Python kodlarınızı hem 10.x’de hem de ArcGIS Pro’da veya sadece ArcGIS Pro’da çalışacak şekilde güncellemeniz mümkündür. Geoprocessing araçlarından biri olan Analyze Tools For Pro ile diğer ArcGIS ürünlerinde kullandığınız Python 2 kodlarının ArcGIS Pro’da verdiği hataları tespit edebilirsiniz. Bu araç Python 2to3 özelliği ile göç ettirilen kodlardaki sorunları tespit eder, ArcGIS Pro’ya taşınmamış araç ve fonksiyonları belirler ve uygun Python 3 komutlarına dönüşüm sağlar. Eğer kodlarınızı Python 2’den Python 3’e tek bir yönde çevirmek istiyorsanız 2to3 komutu genellikle %100 başarıyla çözüm sağlayacaktır. Bazen bu başarı %95 civarında seyretmekte ve kodlayıcı tarafından ek değişiklikler yapılması gerektirmektedir.