GeoPcessing için Python'da ArcPy kullanımının endüstri tabanlı örnekleri?


12

Yakın zamanda bazı öğrenciler tarafından GIS Analyst / Developer'ın ArcGIS ve ArcPy site paketinde coğrafi işleme ile Python'u kullanarak hangi işlemleri otomatikleştirmeye çalıştığı soruldu. Yarattığınız şeyin sektörle alakalı olduğundan ve daha sonra zaten işyerinde tekrar kullanılabileceğinden emin olmak için bazı alıştırmalar yaparken bilmek yararlı olabilir.

En kolay cevap "Esri yardımını okuyun ve örnekleri gözden geçirin" olacaktır, ancak en yaygın olarak uygulanacak daha spesifik senaryolar arıyordum. Bu nedenle, iş akışlarını paylaşmak, "şekil dosyaları ile bir .zip dosyası alıyoruz, Python'u paketinden çıkarmak, hepsini X koordinat sistemine yansıtmak, bir ArcSDE coğrafi veritabanına yüklemek, kullanıcılara bu verilere erişim izni vermek" için çok hoş geldiniz. Lütfen iş akışının kısa bir tanımını yapmaktan çekinmeyin, aşırı ayrıntılara gerek yoktur.

Yanıtlar:


10

Benim için, sorunuzun da belirttiği gibi, özellikle toplu işlemeyi otomatikleştirmek için değil, aynı zamanda tekrarlanabilir uzman hesaplamaları oluşturmak için Python'u çok kullanıyorum. Bugünlerde ArcPy kullanmıyorum çünkü ESRI lisanslarını serbest CBS Danışmanı olarak karşılayamıyorum. GDAL / OGR, Shapely, PostGIS, Numpy ve SciPy'yi çok kullanıyorum, ancak listemdeki her şey ArcPy (ve bazıları) ile yapılabilirdi. Örnekler:

  1. Öncelikle iki farklı veri türünün 20 km'lik raster karolarının mozaiklenmesini gerektiren, tüm bu rasterler üzerinde bir miktar "harita" gerçekleştiren, 10km vektör çokgen karoların eşdeğer alanını birleştiren, sonucunun bölgesel istatistiklerini hesaplayan Bölgesel İstatistiklerin Türetilmesi raster haritalama ve mantıksal bir dizin yapısında şekil dosyalarına çıkış yapmadan ve istemci için CD'ye yazmadan önce istatistik tablosunu orijinal vektör verilerine birleştirir.
  2. Bir yol veya pist boyunca her 100 metrede bir ardışık görünürlük hesaplamaları yapmak ve ardından hesaplama sonuçlarını rota verilerinde M değerleri olarak atamak.
  3. Raster ve vektör verilerinin karolarını mozaikleyerek / birleştirerek, gerekli alana kırparak ve daha sonra özel (GIS olmayan) bir 3D formatına dönüştürerek 3D manzara modelleri oluşturmak için otomatik süreç. Serbest çalışmamda bunun için geliştirdiğim küçük Python kütüphanesini kullanıyorum.
  4. Bir ekipte üzerinde çalıştığım büyük bir proje ArcPy'yi kullanarak CBS verilerinden yeni verileri prosedürel bir bilgisayar-oyun-varlık-üreteci tarafından tüketilebilecek özelliklere sahip bir formata dönüştürmek veya türetmek için toplu işlemler oluşturmak için kullandı. Coğrafi işlem komut dosyaları Python'da yazılmış ve Django üzerinden çalışan bir toplu işleme 'slave-driver' tarafından çağrıldı.
  5. Python, özellikle herhangi bir tekrarlama olduğunda (örneğin özellik işleme özelliğiyle) küçük görevler için bile çok yararlıdır. ArcGIS 'Model Builder, sürüm 10'da gelen akış kontrolleri ile çok geliştirildi, ancak yine de sıklıkla gerekli kontrolü sağlayamıyor ve / veya işlemi ArcPy'de yazmak denemekten daha hızlı ve daha kolay zorlayıcı Model Oluşturucu.
  6. Python'da süpürme yolu analizi yapmak için bir araç oluşturdum (çok uzun bir aracın belirli bir rotayı takip edip edemeyeceğini ve römorkun binalar arasında sıkı dönüşlerde sıkışıp kalacağı olasılığını hesaplamak için). cephanelik.
  7. Mapnik'ten çıktı oluşturma
  8. ArcGIS çok iş parçacıklı hale gelmeden önce Python'u kullanarak ArcMap'in hafızayı bozmadan yükü uzun, yavaş hesaplamaları hızlandırabilen alt süreçleri üretmeme izin verdim.

Python ticari jeoişlemede harikadır çünkü Python'un sağladığı komut dosyası yazma hızına ve kısacılığına ve derlenmiş C stili kodunu işleme hızına sahip olursunuz, çünkü Python yorumlanırken çoğunlukla başlık altında derlenmiş C tarzı kod çağırır. Python, çok sayıda sıralı coğrafi işleme görevini bir arada tutabilen tutkal sağlar ve yukarıdaki liste kişisel olarak kullandığım bazı şeylerin küçük bir görüntüsüdür. 'Eski Eski Günlerde' bir Watch dosyası ayarlayıp ArcInfo komut satırı girdimizi kaydettirir ve ardından AML ile yapıştırılmış coğrafi işlem çağrılarının yeniden kullanılabilir bir işlemini yapmak için AML'yi (Arc Macro Language'i hatırlar!) Temizlerdik. Tutkal olarak Python veya C # kullanmamız dışında bu günlerde çok farklı değil.


1
Funilly yeterince bu soruyu cevapladım ( gis.stackexchange.com/questions/52478/… ) - Python'u ArcGIS bellek sızıntılarını yenmenin bir yöntemi olarak kullanmanın başka bir örneğini veriyor!
MappaGnosis

+1, özellikle # 4'te bir CBS.SE blog konusu görmek istiyorum .
blah238

1
Şirket şimdi geçersiz olmasına ve bir süre önce ayrılmama rağmen, başka bir şirket IP'yi satın aldı, bu yüzden ne kadar açık olabileceğimi bilmiyorum. Her neyse, yukarıdaki yorumumdaki bağlantıdaki cevabımdan çok işlem gören tarafla ilgili bazı ipuçları alabilirsiniz. Coğrafi işleme çiftliğimizde 16 çekirdekli bir makine, iki 8 çekirdekli sunucu ve yaklaşık bir düzine 'emekli' çift çekirdekli PC'nin hepsinin köle sürücüsü tarafından çalıştırıldığını da ekleyebilirim. ESRI, bazı adamları gelip ne yaptığımıza bakmaları için bile gönderdi çünkü bunun için ArcServer kullanmıyorduk. Makineleri o kadar sert koştuk ki, ikisi bile alev aldı!
MappaGnosis

7

Nereden başlamalı ... Şu anda daha yüksek ed / state hükümetinde çalışmama rağmen Python'un şirkette büyük bir savunucusuyum. İşte Python için kullandığım görevlere bazı örnekler:

  1. Verileri taşıma. Verileri düzenli olarak hareket ettirmek gibi oldukça basit görevler, özellikle shutilkutudan çıktığı gibi Python ile çok kolay bir şekilde otomatikleştirilebilir .
  2. Özellik sınıflarını bir ArcSDE veritabanından ve diğer yazılım paketleri tarafından tüketilmek üzere şekil dosyalarına vermek. ArcSDE (veya başka bir ilişkisel veritabanı) genellikle bir kuruluştaki ana kayıttır, ancak her yazılım paketi bir veritabanına bağlanamaz. Birçok paket hala iyi ole şekil dosyaları tüketecek ve bunları kullanarak arcpyher gece dışa aktarmak ağrısızdır, böylece kullanıcılarınız güncel verilere sahip olabilir.
  3. Farklı veri kümelerinden uzamsal veri kümeleri oluşturma. Kuruluştaki herkes verilerini tutmak için Excel'i kullanır (ve genellikle yanlış kullanır). İle arcpy(ya da diğer Pythonictir yöntemleri) bir mekansal bileşenine sahip olduğunu sekmeli veri almak ve hızlı bir şekilde ondan bir mekansal veri kümesi oluşturmak kolaydır. Metin dosyaları için de aynı şey geçerlidir. Kısa bir süre önce, tescilli bir XYZ biçiminde metin dosyalarını okuyan ve ZM özellikli çoklu çizgiler oluşturan bir istemci için bir ArcToolbox aracı oluşturdum (bundan daha fazlasını paylaşamıyorum).
  4. CBS verilerinin "mekansal" bile ne olduğu hakkında hiçbir fikri olmayan yazılıma aktarılabilmesi için çevrilmesi. Şu anda GIS veri kümelerini (rasterler, vektörler) alan ve verileri Python API'sı ile 3D modelleme programına iten araçlar yazıyorum. Bu 3B paket, uzamsal veri formatlarıyla hiç çalışamaz, ancak uzamsal verilerin arkasındaki metin değerleri ve niteliklerle çalışabilir. Bunun için kullanıyorum arcpybilgileri coğrafi veritabanından çekin ve metin dosyalarına veya bir XML yapılandırma dosyasına itmek.
  5. Veri işleniyor. İhtiyacınız olan veri tablolarına sahip bir web siteniz mi var? Çıkarmak beautifulsoupiçin kullanın . Getirmeniz gereken yüzlerce veya binlerce dosya içeren bir FTP siteniz mi var? Kolayca indirmek için urllib2veya tuşlarını kullanın ftplib.

Bu sadece birkaç örnek. İşletmedeki Python ile ilgili harika olan şey, makinenizde tam yönetici hakları olmasa bile, genellikle durumdur, yine de biraz başarabilirsiniz. Bunu Python'un nazik öğrenme eğrisi ve okunabilirliği ile birleştirin ve çok fazla programlama deneyimine sahip olmayan GIS Tech / Analyst için harika bir otomasyon aracına sahipsiniz.


6

Bir belediye için çalışıyorum ve CBS çetesi çeşitli departmanlarımıza (Mühendislik, Yapı Denetimleri, Yönetmelik, Parklar, Yangın vb.) Destek sağlıyor.

  1. Parsel ve sivil adres bilgilerini güncelleme. Hem uzamsal hem de öznitelik verilerini işleyen, uzamsal şeyler gerçekleştirmek için çeşitli coğrafi işlem araçlarının kullanılmasının yanı sıra uzamsal verilerimize katılan bilgileri almak için ilişkisel veritabanlarına bağlanmayı içeren oldukça uzun komut dosyalarımız var.
  2. Özel araçlar. CBS harici personelimiz için yeni Python Eklenti Sihirbazı'nı kullanarak özel araçlar oluşturduk . Bazı personelimizin uzamsal verileri okuması ve bazı temel manipülasyonları gerçekleştirmesi gerekiyor. ArcGIS ortamının bağırsaklarına girmeden yapmaları gereken her şeyi yapmalarını sağlayan araç çubukları tasarladık.

Diğerlerinin de belirttiği gibi, bunlar sadece birkaç örnektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.