Wie werden Polygone mit Open Source-Tools aus Shapefile aufgelöst?


10

In meinem aktuellen Projekt visualisiere ich Daten auf einer Karte, die einige Werte für jeden Verwaltungsbereich eines Landes darstellen. Ich habe ein Shapefile dieses Landes erhalten, das ich zur Verwendung mit PolyMaps in GeoJSON konvertiere. Jetzt muss ich mehrere Bereiche zu größeren zusammenfassen, da für einige der kleineren Teile keine Daten vorhanden sind, aber aggregierte Daten für große Teile erfasst werden können. Diese Cluster sind vordefiniert (z. B. A + B + C = D), daher dachte ich, es wäre einfacher, ein Cluster-Shapefile zu erstellen und dieses anschließend in GeoJSON zu konvertieren.

Aber wie erstelle ich einen solchen Cluster, vorzugsweise automatisiert und mit Open-Source-Tools? Jeder andere vernünftige Weg ist natürlich auch willkommen.

Antworten:


5

Sie können jederzeit ein Open-Source-Tool wie QGIS verwenden, um Ihr Shapefile zu öffnen und Features mit dem integrierten Tool "Ausgewählte Features zusammenführen" zusammenzuführen (einfach Features auswählen, auf Zusammenführen klicken, Attribute auswählen, um es an das neue zusammengeführte Feature zu erben, fertig).

Dies ist natürlich nicht sehr sinnvoll, wenn es sich um Hunderte oder Tausende von Zusammenführungen handelt. Ich selbst habe mich neulich gefragt, ob es möglich ist, Features "nach Attributen" in QGIS zusammenzuführen.

EDIT: Ok, ich bin dumm, wenn Sie ein gemeinsames Attribut für alle Funktionen haben, die Sie "gruppieren" möchten (wie einen Provinz- oder Kreisnamen), wäre dies ein Fall für das Auflösungswerkzeug. Öffnen Sie Ihr Shapefile, wählen Sie "Auflösen" (in QGIS unter "Vektor"> "Geoverarbeitungswerkzeuge"> "Auflösen"), wählen Sie die Spalte mit dem oben genannten allgemeinen Namen aus und starten Sie den Vorgang. Dies sollte hoffentlich (wenn ich Sie nicht missverstanden habe) zu dem führen, wonach Sie gesucht haben.


Im Allgemeinen gute Ratschläge, und wenn alles auf manuelle Arbeit hinausläuft, werde ich jemanden finden, der diese Shapefiles mit QGIS für mich erstellt, wie Sie es beschrieben haben. Ich möchte jedoch in der Lage sein, diese Cluster zu definieren (z. B. über NUTS-Codes: FR413 und FR411 in etwas namens _FRX1 zusammenführen) und dann ein Skript auszuführen, das diese Cluster-Shapefiles generiert. Ich möchte in der Lage sein, Fehler zu korrigieren oder schnelle Änderungen ohne den Aufwand eines GUI-Tools zu berücksichtigen. Es ist durchaus möglich, dass diese Cluster eines Tages von Endbenutzern definiert werden, daher brauche ich ein bisschen Flexibilität.
Nikolai Prokoschenko

Ich benutze es nie, aber ich denke, Sie können die Konsole verwenden, um alles in QGIS zu erledigen, sodass die GUI nicht erforderlich ist. Sie müssen diese Cluster auch immer in einer Tabelle definieren, selbst wenn Sie sich vollständig auf eine Skriptlösung verlassen. Sie können also vermeiden, mit Ihrem Shapefile herumzuspielen, indem Sie sich dieser Tabelle anschließen und sich dann auflösen. Ich denke, das wäre auch skriptfähig?
SAnderka

Perfekt möglich, ich bin ein Neuling in allen GIS-Dingen. Ich werde mich mit QGIS-Skripten befassen, danke.
Nikolai Prokoschenko

2

Für weniger manuelle Arbeit können Sie sich SpatiaLite ansehen. Sie können Shapefiles einfach importieren, indem Sie z

spatialite> .loadshp ~/maps/areas areas iso-8859-15
spatialite> UPDATE areas SET Geometry = SetSrid(Geometry,4326);
spatialite> SELECT RecoverGeometryColumn('areas','Geometry',4326,'POLYGON',2);

Dann für den sich auflösenden Teil:

Ich möchte in der Lage sein, diese Cluster zu definieren (z. B. über NUTS-Codes: FR413 und FR411 zu etwas zusammenführen, das _FRX1 heißt).

Die Funktion, die Sie hier benötigen, ist GUnion (). Möglicherweise möchten Sie Ihre "Cluster" in einer zweiten Tabelle definieren. Anschließend können Sie die Cluster- und Bereichstabelle verbinden und mit GUnion () mit GROUP BY die endgültige union_table erstellen.

Sie können dann mit .dumpshp in Shapefile exportieren

spatialite> .dumpshp union_table Geometry new_shapefile iso-8859-15 POLYGON

Wenn Sie GeoJSON benötigen, können Sie die Datei jetzt konvertieren.

Sie können beispielsweise in Python ein kurzes Skript schreiben, das alle diese Ladevorgänge, Verknüpfungen und Speicherauszüge verarbeitet.


Sieht sehr vielversprechend aus, ich werde damit experimentieren! Vielen Dank! Können Sie erklären, was die UPDATEund SELECTZeilen tun?
Nikolai Prokoschenko
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.