Ich möchte einige polygonbasierte shp-Dateien mit mehreren Polygon-Features in Punkte für jedes Feature konvertieren, die im Wesentlichen den Mittelpunkt jedes Polygon-Features darstellen. Ich weiß, dass ich in der ArcGIS-Welt das Feature-To-Point-Tool verwenden kann, aber ich möchte dies in einem Skript behalten, das auf PCs ausgeführt werden kann, auf denen kein Arcpy vorhanden ist. Daher suche ich nach einer Open-Source-Alternative dazu. Ist jemandem eine Bibliothek bekannt, die ich dafür verwenden könnte, zusammen mit einer Anleitung, wie man sie nutzen kann, um dies zu erreichen?
9
Antworten:
Sie können einen
ogr2ogr
Befehl ausführen (z. B. über eine OSGeo4w-Shell). ZB auf einem Shapefile von Ländern:Das neue Shapefile
countries_centroid.shp
sollte der Eingabe ähnlich sein, jedoch nur einen Punkt pro [Multi] -Polygon enthalten.@PEL zeigt auch ein gutes Beispiel mit ST_PointOnSurface, das in diesem Befehl einfach zu ersetzen ist.
Ähnliches kann bei Bedarf in Python getan werden, es kann jedoch einige Codezeilen länger dauern:
quelle
gdal-bin
diese Unterstützung.Verwenden Sie einfach Fiona oder GeoPandas (Python 2.7.x und 3.x)
Einige Polygone
Transformation zu Punkten (Zentroiden)
Ergebnis
quelle
Ein anderer, vielleicht "niedrigerer" Weg wäre die direkte Verwendung
fiona
undshapely
für die E / A- und Geometrieverarbeitung.quelle
Ich denke, der einfachste Weg ist die Verwendung des virtuellen Formats gdal / ogr. ( http://www.gdal.org/drv_vrt.html ) und SQL / SQLITE-Dialekt ( http://www.gdal.org/ogr_sql.html und https://www.gaia-gis.it/spatialite-3.0) .0-BETA / Spatialite-SQL-3.0.0.html )
Mein Polygon-Shapefile heißt poly.shp. Dann erstelle ich diese XML-ähnliche Datei mit dem Namen vrt.vrt. In dieser Datei (vrt.vrt) finden Sie hier den Inhalt, der in Punkte konvertiert werden soll
Zu diesem Zeitpunkt können Sie diese Datei zur Validierung in Qgis integrieren. Das Rendering ist sicher langsamer als die Rohquelle, da jedes Feature bei jeder Rendering-Abfrage als Punkt gewertet wird.
Konvertieren Sie anschließend diese Datei (vrt.vrt) mit gdal / ogr-Utils aus einer Python-Shell / einem Python-Skript in eine andere Datei
Sie erhalten ein Punkt-Shapefile mit dem Namen point_from_vrt.shp.
quelle
'wkbPoints' is not a valid value of the atomic type