Das ist seltsam, als ob die Leute plötzlich die Leistungsfähigkeit von Python entdeckten (ohne ArcPy, das unter anderem nur ein Python-Modul ist), siehe zum Beispiel die Frage Shapefile in Python visualisieren :
- Die geospatiale Verarbeitung in Python hat eine sehr lange Geschichte und ist viel älter als Arcpy (oder Arcgisscripting). > Die Fähigkeiten von ArcPy werden hier nicht "nachgeahmt", wie Paul sagt, die meisten waren bereits vor ArcPy vorhanden.
- Die Referenz für die Python-Module ist der Python Package Index ( Pypi ), und es gibt einen eigenen Abschnitt: Topic :: Scientific / Engineering :: GIS
- Mit diesen Modulen können Sie alles machen, und es ist oft einfacher und schneller als ArcPy, da es sich um reines Python handelt (keine Cursor ...).
- Shapely ist eines dieser Module zur Bearbeitung von Geodatengeometrien -> Flächen eines Polygons berechnen und Polygone in Punkte umwandeln.
- Wenn Sie Vektorebenen bearbeiten möchten, gibt es osgeo / ogr , Fiona oder Pyshp (und andere, weniger verwendete) -> Fragen Sie ein Shapefile nach Attributen ab, erstellen Sie eine neue Ebene aus der Auswahl, berechnen Sie Flächen eines Polygons, konvertieren Sie Polygone in Punkte
- für die verarbeitung von rastern ist der standard osgeo / gdal
- Für die räumliche Analyse gibt es Pysal
- Für 3D können Sie andere wissenschaftliche Module wie Numpy oder Scipy verwenden (3D-Algorithmen, Gitter, aber auch Statistiken, Geostatistik, 2D oder 3D).
- Und ich spreche nicht über Mapnik , Matplotlib / Basiskarte , Geodjango und ...
Sie können alle (Pysal mit Shapely, ...) kombinieren und mit den anderen wissenschaftlichen Modulen mischen.
Suchen Sie daher für Python-Skript-Beispiele nach Pyshp Fiona, ogr, gdal oder shapely in gis.stackexchange oder im Internet (viele Beispiele, nicht nur in Englisch).)
Eines davon in Französisch (die Skripte und Abbildungen sind universell!):
- Python: Verwenden von Vektor- und Rasterebenen in einer geologischen Perspektive, ohne GIS-Software und
eine andere in Englisch:
- GIS mit Python, Shapely und Fiona
und in Spanisch
- Bestimmen von Bereichen unregelmäßiger Polygone mithilfe der Koordinaten der Scheitelpunkte
in gis.stackexchange
- Höhenprofil 10 km pro Seite einer Linie
- Aktualisieren von Attributen mit Pyshp
- Wie erstelle ich ein 3D-Shapefile aus einem Raster?
- Python-Skript zum Ermitteln des Höhenunterschieds zwischen zwei Punkten
- usw
Das von Aaron vorgestellte Skript kann einfacher mit Fiona geschrieben werden, das nur Python-Wörterbücher verwendet:
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')
und wenn du formschön dazu verwendest:
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')
Es gibt auch zwei Bücher:
Python Geospatial Development von Eric Westra.
Lernen der Geodatenanalyse mit Python von Joel Lawhead
Python wird auch als Skriptsprache in anderen GIS-Anwendungen wie QGIS (Quantum GIS), GRASS GIS, gvSIG oder OpenJump oder 3D-Modellierern wie Paraview (und Blender auch!) Verwendet . In all diesen Anwendungen können Sie die meisten Geodatenmodule verwenden (siehe Visualisierung von QGIS-Daten mit Blender ).