Gibt es ein Tool, mit dem ich Millionen von Paket-Shapefiles ausführen und vereinfachen kann?
Gibt es ein Tool, mit dem ich Millionen von Paket-Shapefiles ausführen und vereinfachen kann?
Antworten:
Sie könnten Shapely ausprobieren - eine Python-API, die auf GEOS aufbaut . Da sowohl Shapely als auch GDAL über Python-Bibliotheken verfügen, können Sie diese auf einfache Weise zu Daten aus vielen verschiedenen Quellen (einschließlich Shapefiles) kombinieren und anschließend nach Bedarf vereinfachen und exportieren.
Der einzige Nachteil kann die Geschwindigkeit sein, wenn Sie Millionen von Funktionen ausführen - es könnte schneller sein, GEOS oder JTS direkt zu verwenden.
Siehe die simplify- Methode:
Alle Punkte im vereinfachten Objekt liegen innerhalb des Toleranzabstands der ursprünglichen Geometrie. Standardmäßig wird ein langsamerer Algorithmus verwendet, der die Topologie beibehält. Wenn "Topologie beibehalten" auf "Falsch" gesetzt ist, wird der viel schnellere Douglas-Peucker-Algorithmus verwendet.
>>> p = Point(0.0, 0.0)
>>> x = p.buffer(1.0)
>>> x.area
3.1365484905459389
>>> s = x.simplify(0.05, preserve_topology=False)
>>> s.area
3.0614674589207187
In Version 9.0 von GDAL / OGR wurde die Option -simplify zum Befehl ogr2ogr hinzugefügt . In der Dokumentation wird angegeben, dass die Topologie beibehalten wird.
-Einfache Toleranz: (ab GDAL 1.9.0) Abstandstoleranz zur Vereinfachung. Diese Methode erhält die Topologie, insbesondere für Polygongeometrien.
Anwendungsbeispiel:
ogr2ogr outfile.shp infile.shp -simplify 0.000001
Wenn Ihre Daten in PostGIS gespeichert sind, versuchen Sie, ST_SimplifyPreserveTopology zu verwenden .
ogr2ogr hat eine "Segmentierungs" -Option, die genau das tut, was Sie brauchen: GDAL ogr2ogr-Dokumentation
Von dieser Seite:
-segmentize max_dist: (beginnend mit GDAL 1.6.0) Maximaler Abstand zwischen 2 Knoten. Wird verwendet, um räumliche Abfragebereiche für Zwischenpunkte zu erstellen
GRASS v.generalisieren
Inspirieren Sie von Mapshaper, aber direkt vor Ort, unter https://github.com/migurski/Bloch