To dziwne, jakby ludzie nagle odkryli moc Pythona (bez ArcPy, który jest tylko jednym z modułów Pythona), zobacz na przykład pytanie Wizualizuj plik kształtów w Pythonie :
- przetwarzanie geoprzestrzenne w Pythonie ma bardzo długą historię, znacznie starszą niż Arcpy (lub arcgisscripting) -> nie „naśladuje” możliwości ArcPy tutaj, jak mówi Paul, większość była już tam przed ArcPy.
- odnośnikiem do modułów Python jest Indeks pakietów Pythona ( Pypi ) i jest dedykowana sekcja: Temat :: Nauka / Inżynieria :: GIS
- możesz zrobić wszystko z tymi modułami i często jest to łatwiejsze i szybsze niż ArcPy, ponieważ jest to czysty Python (bez kursorów ...).
- Shapely jest jednym z tych modułów do przetwarzania geometrii geoprzestrzennych -> oblicz obszary wielokąta i konwertuj wielokąty na punkty.
- jeśli chcesz przetwarzać warstwy wektorowe, istnieje osgeo / ogr , Fiona lub Pyshp (i inne, rzadziej używane) -> przeszukuj plik kształtów według atrybutów, twórz nową warstwę z zaznaczenia, obliczaj obszary wielokąta, konwertuj wielokąty na punkty
- w przypadku przetwarzania rastrów standardem jest osgeo / gdal
- do analizy przestrzennej istnieje Pysal
- do 3D można użyć innych modułów naukowych, takich jak numpy lub scipy (algorytmy 3D, siatki, ale także statystyki, geostatystyka, 2D lub 3D)
- I nie mówię o mapniku , matplotlib / basemap , Geodjango i ...
Możesz połączyć wszystkie (Pysal z foremnym, ...) i mieszać je z innymi modułami naukowymi.
Tak więc dla przykładów skryptu Python wyszukaj Pyshp Fiona, ogr, gdal lub shapely w gis.stackexchange lub w Internecie (wiele przykładów, nie tylko w języku angielskim).)
Jeden z nich w języku francuskim (skrypty i liczby są uniwersalne!):
- Python: Korzystanie z warstw wektorowych i rastrowych w perspektywie geologicznej, bez oprogramowania GIS
i inne w języku angielskim:
- GIS z Python, Shapely i Fiona
oraz w języku hiszpańskim
- Określanie obszarów nieregularnych wielokątów za pomocą współrzędnych wierzchołków
w gis.stackexchange
- Profil wysokości 10 km po każdej stronie linii
- Aktualizowanie atrybutów za pomocą Pyshp
- Jak utworzyć plik kształtu 3D z rastra?
- Skrypt Python do uzyskiwania różnicy wysokości między dwoma punktami
- itp
Skrypt zaprezentowany przez Aarona można napisać prościej za pomocą Fiony, która używa tylko słowników Python:
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')
a jeśli dodatkowo używasz zgrabnie:
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')
Istnieją również dwie książki:
Python Geospatial Development of Eric Westra.
Nauka analizy geoprzestrzennej z Pythonem Joela Lawhead'a
Python jest również używany jako język skryptowy w innych aplikacjach GIS, takich jak QGIS (Quantum GIS), GRASS GIS, gvSIG lub OpenJump lub modelerach 3D, takich jak Paraview (i Blender również!). I możesz używać większości modułów geoprzestrzennych we wszystkich tych aplikacjach (zobacz Wizualizacja danych QGIS za pomocą Blendera )