Ich habe mich gefragt, ob es möglich ist, den Inhalt eines Shapefiles mit Python zu betrachten, ohne eine ArcMap-Lizenz zu besitzen. Die Situation ist, dass Sie Shapefiles aus vielen verschiedenen Anwendungen erstellen können, nicht nur aus ESRI-Software. Ich möchte ein Python-Skript erstellen, das den Raumbezug, den Feature-Typ, die Attributnamen und -definitionen sowie den Inhalt der Felder in einem Shapefile überprüft und mit einer Reihe akzeptabler Werte vergleicht. Ich möchte, dass dieses Skript auch dann funktioniert, wenn die Organisation keine ESRI-Lizenzen hat. Müssen Sie dafür ArcPy verwenden oder können Sie in ein Shapefile graben, ohne ArcPy zu verwenden?
40
Antworten:
Ich würde empfehlen, sich mit der Python GDAL / OGR- API vertraut zu machen , um sowohl mit Vektor- als auch mit Rasterdaten arbeiten zu können. Der einfachste Weg, um mit GDAL / OGR zu beginnen, ist über eine Python-Distribution wie Python (x, y) , Anaconda oder OSGeo4W .
Weitere Details zur Verwendung von GDAL für Ihre spezifischen Aufgaben:
Zusätzlich würde ich das folgende Tutorial von USU empfehlen, um Ihnen den Einstieg zu erleichtern.
In Anlehnung an die obigen Beispiele verwendet das folgende Skript FOSS-Tools, um die folgenden Aktionen auszuführen:
quelle
inFeature = None
. Das GDAL / OGR-Kochbuch ist nicht Teil des GDAL / OGR-Kernteams oder wird von diesem geschrieben.Es gibt viele Module zum Lesen von Shapefiles in Python, die älter als ArcPy sind. Schauen Sie sich den Python Package Index (PyPi) an: Shapefiles . Es gibt auch viele Beispiele in GIS SE (suchen Sie beispielsweise nach [Python] Fiona )
Alle können die Geometrie, die Felder und die Projektionen lesen.
Aber auch andere Module wie PySAL: Die Python Spatial Analysis Library , Cartopy (die pyshp verwenden ) oder Matplotlib Basemap können unter anderem Shapefiles lesen.
Am einfachsten zu bedienen ist Fiona , aber wenn Sie nur ArcPy kennen, verwenden Sie pyshp , da osgeo und Fiona die Installation der GDAL C / C ++ - Bibliothek erfordern , GeoPandas das Pandas- Modul benötigt und PySAL zu groß ist (viele, viele andere Behandlungen).
Wenn Sie nur den Inhalt eines Shapefiles lesen möchten, brauchen Sie keine komplexen Dinge. Verwenden Sie einfach das Geo-Interface- Protokoll (GeoJSON), das auch in ArcPy ( ArcPy: AsShape ) implementiert ist.
Mit Fiona (als Python-Wörterbücher):
Mit pyshp (als Python-Wörterbücher)
Mit osgeo / ogr (als Python-Wörterbücher)
Mit GeoPandas (als Pandas-Datenrahmen)
* Hinweis zu Geopandas Sie müssen ältere Versionen von Fiona und GDAL verwenden, sonst wird es nicht installiert. GDAL: 1.11.2 Fiona: 1.6.0 Geopandas: 0.1.0.dev-
Es gibt viele Tutorials im Web und sogar Bücher ( Python Geospatial Development , Learning Geospatial Analysis mit Python und Geoprocessing mit Python , im Druck)
Wenn Sie Python ohne ArcPy verwenden möchten, lesen Sie allgemein den Abschnitt Einfache thematische Zuordnung von Shapefile mit Python.
quelle
The kinds of data in GIS are roughly divided into rasters representing continuous scalar fields (land surface temperature or elevation, for example) and vectors representing discrete entities like roads and administrative boundaries. Fiona is concerned exclusively with the latter
Neben ArcPy gibt es auch räumliche Python-Bibliotheken, mit denen Sie diese Funktionen nutzen können. Hier sind zwei Beispiele:
Die Python-Shapefile-Bibliothek (pyshp)
GeoPandas
Wenn Sie an anderen Bibliotheken interessiert sind, ist dieser Beitrag zu wichtigen Python Geospatial-Bibliotheken ein guter Ort, um nachzuschauen.
quelle