ArcGIS ile İş Süreçlerinizi Otomatikleştirin

ModelBuilder ile oluşturmuş olduğunuz bir coğrafi işlem modelini günün belirli bir saatinde veya belirli bir zaman aralığında tekrar tekrar çalıştırabileceğinizi biliyor muydunuz? Haftanın belirli günlerinde ya da her gün belirli saatlerde veri oluşturmak veya bazı analizleri gerçekleştirmek gibi rutin işleriniz olabilir. Bu işlerinizi gerçekleştirebileceğiniz bir model oluşturup ardından Windows Task Scheduler (Windows Görev Zamanlayıcı) ve birkaç satır Python kodu kullanarak belirli bir zamanda ve belirli bir frekansta çalışacak şekilde programlayabilirsiniz.

Örneğin, her gün müşterileriniz tarafından telefon veya internet aracılığıyla arıza kaydı doldurulmaktadır. Sizin görevinizin ise adres bilgilerini barındıran bu arıza kayıtlarının hangilerinin sizin sorumluluk bölgenizden geldiğinin tespit edilmesi ve saha çalışanlarına bir rapor olarak iletilmesi olduğunu varsayalım. Her gün belirli saatlerde böyle bir rutini gerçekleştirmek için manuel yöntemlerin kullanılmasının oldukça vaktinizi alacağı kaçınılmaz bir gerçektir. Fakat böyle bir senaryoyu ya da buna benzer günlük çok adımlı iş akışlarınızı ModelBuilder kullanarak otomatikleştirebilirsiniz. Yapmak istediğiniz işlerden bir iş akışı şeması oluşturarak bir işlemin birden çok adımını bir araya getirmenizi sağlayan ModelBuilder’ın nasıl oluşturulduğu hakkında daha fazla bilgi almak için “ArcGIS Pro’da ModelBuilder’la Çalışmak” adlı blog yazımızı inceleyebilirsiniz. Böyle bir iş akışı şeması oluşturmak tekrarlanan birçok işi tek seferde hızlıca gerçekleştirmenizi sağlayacaktır. Fakat bu oluşturulan modelinizi programlayarak belirli gün ve saatlerde kendiliğinden çalışmasını sağlamak sizlere oldukça zaman kazandıracaktır.

Yukarıdaki görsel böyle bir iş akışının modelini göstermektedir.

ArcPy kullanarak modelin çalıştırılması:

Modeller ArcGIS coğrafi işlem araçlarıyla tamamen entegre bir şekilde çalışmaktadır. ArcPy’ı ise yerleşik coğrafi işlem araçlarını (Buffer, Intersect gibi), tüm oluşturmuş olduğunuz modelleri ya da Python’da oluşturmuş olduğunuz kodları çalıştırmak için kullanabilirsiniz.

Yukarıdaki örnekteki gibi bir modeli programlayabilmeniz için -zaman belirleyerek otomatik olarak çalışmasını sağlayabilmek için- bir Python kod dosyası oluşturmalı ve modelinizi içeren araç kutunuzu (ToolBox) içe aktarmalısınız. Ardından ise modelinizi gerekli parametreler ile çalıştırmanız için bir kod satırı daha kullanmalısınız.

Görseldeki kod satırı bu işlemleri gerçekleştirmenizi sağlayan bir örnektir. Bu kod satırlarını kendi parametreleriniz ile özelleştirmeniz gerekmektedir.

  • “C:\path\myToolbox.tbx”ifadesi araç kutunuzun bulunduğu konumu göstermektedir.
  • “tbxAlias” araç kutunuzun görünür adını (Alias) ifade etmektedir.
  • arcpy.myModel_tbxAlias ifadesindeki “myModel” kelimesi modelinizin adına karşılık gelmektedir.
  • “C:\pathToInput\inputFolder” ifadesi girdi verilerinizin konumunu ve “C:\pathToGdb\output.gdb” ifadesi çıktı verilerinizin konumunu göstermektedir.

Windows Task Scheduler (Windows Görev Zamanlayıcı) kullanılarak görev oluşturulması:

ArcPy komutlarını kullanarak modelinizi çalıştırılan bir Python komut dosyası oluşturduktan sonra komut dosyanızı ve dolayısıyla modeli belirli bir zamanda çalıştırmak için Windows Task Scheduler (Görev Zamanlayıcı) kullanabilirsiniz.

Windows’da Task Scheduler penceresinden Action (Eylem) sekmesine ve ardından Create Task (Görev Oluştur) seçeneğine tıklayarak Create Task (Görev Oluştur) iletişim kutusunu açabilirsiniz. Name (Ad) alanından bir isim vererek görevi oluşturabilirsiniz.

Python komut dosyasını çalıştırabilmek için Create Task (Görev Oluştur) iletişim kutusunda Actions (Eylemler) ve ardından New (Yeni) butonlarına tıklayarak New Action (Yeni Eylem) iletişim kutusunu açabilirsiniz. Program/scripts (Program/komut dosyası) seçeneği için bir önceki adımda oluşturulan Python komut dosyasını tanımlayabilirsiniz.

 

Böylece bu görev için yeni bir eylem olarak bu Python komut dosyasının çalıştırılmasını belirlemiş olursunuz.

Oluşturulan görevin programlanması:

Create Task (Görev Oluştur) iletişim kutusundan Triggers (Tetikleyiciler) ve ardından New (Yeni) butonlarına tıklayarak oluşturmuş olduğunuz bu görevin otomatik olarak çalıştırılması için zaman belirleyebilirsiniz.

Eğer bu göreve daha gelişmiş ayarlar eklemek isterseniz, örneğin bilgisayar başlatılırken, boştayken ya da oturum açıldığında görevi başlat gibi, Begin the task (Görevi başlat) seçeneğinden bunları ayarlayabilirsiniz.

Böylece programladığınız zaman geldiğinde Windows Task Scheduler (Görev Zamanlayıcı) Python komut dosyanızın çalıştırılmasını sağlayacaktır. Python komut dosyanız da ModelBuilder ile oluşturmuş olduğunuz modelin çalışmasını sağlayacaktır. İşlemler tamamlandığında belirlemiş olduğunuz çıktı çalışma klasöründe modelin sonuç çıktısını bulabilirsiniz.

Bu yazımızla rutin işlerin Windows Task Scheduler ve Python komutlarını kullanarak nasıl programlayabileceğini ele aldık. Bu gibi teknik konularda ve Esri ürünleri yenilikleri hakkında daha fazla bilgi almak için blog sayfamızı takip edebilirsiniz.

 

Esri Türkiye, 2019

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;)