Bu garip, sanki insanlar aniden Python'un gücünü keşfettiler (diğerleri arasında yalnızca bir Python modülü olan ArcPy olmadan), örneğin Python'daki Visualize shapefile sorusuna bakın :
- Python'daki coğrafi işlemlerin çok uzun bir geçmişi vardır, Arcpy'den çok daha eski (ya da arcgcripcripting) -> burada Paul'un söylediği gibi ArcPy'nin yeteneklerini "taklit etmiyor", çoğu zaten ArcPy'den önce oradaydı.
- Python modülleri için referans Python Paket Endeksi ( Pypi ) ve özel bir bölüm var: Topic :: Scientific / Engineering :: GIS
- Bu modüllerle her şeyi yapabilirsiniz ve ArcPy'den daha kolay ve hızlıdır çünkü saf Python'dur (imleç yok ...).
- Jeo-uzamsal geometrileri işlemek için bu modüllerden biri de aynıdır -> çokgen alanlarını hesaplayın ve çokgenleri noktalara dönüştürün ..
- Vektör katmanlarını işlemek istiyorsanız, osgeo / ogr , Fiona veya Pyshp (ve diğerleri, daha az kullanılmış) vardır -> niteliklere göre bir şekil dosyasını sorgula, seçimden yeni katman oluştur, çokgenin alanlarını hesapla, çokgenleri noktalara dönüştür
- rasterleri işlemek için standart osgeo / gdal
- mekansal analiz için Pysal var
- 3D için, numpy veya scipy gibi diğer Scientific modüllerini kullanabilirsiniz (3D algoritmaları, ızgaralar, aynı zamanda istatistikler, geostatistics, 2D veya 3D)
- Ve mapnik , matplotlib / basemap , Geodjango ve ... hakkında konuşmam .
Hepsini (Pysal ile düzgün şekilde ...) birleştirebilir ve diğer Bilimsel modüllerle karıştırabilirsiniz.
Bu nedenle, Python Script örnekleri için, gys.stackexchange veya internette ogr, gdal veya düzgün Pyshp Fiona'yı arayın (sadece İngilizce değil birçok örnek).
Onlardan biri Fransızca (scriptler ve şekiller evrenseldir!):
- Python: CBS yazılımı olmadan vektör ve jeolojik perspektifte kafes katmanları kullanarak
İngilizce bir diğer:
- Python, düzgün ve Fiona ile CBS
ve İspanyolca
- köşe koordinatlarını kullanarak düzensiz çokgen alanlarının tespiti
gis.stackexchange içinde
- Yükseklik profili, hattın her iki yanında 10 km.
- Pyshp kullanarak Özniteliklerin Güncellenmesi
- Bir rasterden 3D şekil dosyası nasıl oluşturulur?
- İki nokta arasındaki yükseklik farkını elde etmek için Python Script
- etc
Aaron tarafından sunulan senaryo, yalnızca Python sözlüklerini kullanan Fiona ile daha basit bir şekilde yazılabilir:
import fiona
with fiona.open('sites.shp', 'r') as input:
with open('hw1a.txt', 'w') as output:
for pt in input:
id = pt['properties']['id']
cover = pt['properties']['cover']
x = str(point['geometry']['coordinates'][0])
y = str(point['geometry']['coordinates'][21])
output.write(id + ' ' + x + ' ' + y+ ' ' + cover + '\n')
ve ek olarak düzgün kullanırsanız:
from shapely.geometry import shape
with fiona.open('sites.shp', 'r') as input:
with open('hw1a.txt', 'w') as output:
for pt in input:
id = pt['properties']['id']
cover = pt['properties']['cover']
x = str(shape(pt['geometry']).x)
y = str(shape(pt['geometry']).y)
output.write(id + ' ' + x + ' ' + y+ ' ' + cover + '\n')
Ayrıca iki kitap var:
Eric Westra'nın Piton Mekansal Gelişimi .
Joel Lawhead Python ile Mekansal Analizi Öğrenme
Python ayrıca QGIS (Quantum GIS), GRASS GIS, gvSIG veya OpenJump veya Paraview (ve Blender !) Gibi 3D modelleyiciler gibi diğer GIS uygulamalarında bir betik dili olarak kullanılır . Jeo uzamsal modüllerin çoğunluğunu tüm bu uygulamalarda kullanabilirsiniz (bkz. QGIS verilerini Blender ile görselleştirme ).