Ich habe ein Shapefile für die Straßenmittellinie, in dem die Straßen an jeder Kreuzung aufgeteilt sind. Ich möchte jedoch LINESTRINGs, die einen gemeinsamen Satz von Attributen haben, zu einem einzigen LINESTRING zusammenfügen. Solange sich Name, Geschwindigkeitsbegrenzung usw. nicht ändern, möchte ich sie zusammenführen. Dies ist für eine eventuelle Verschmelzung mit OpenStreetMap vorgesehen.
Die ArcGIS for Desktop-Software von Esri scheint dies mit dem Befehl Dissolve und der Option UNSPLIT_LINES zu ermöglichen.
Ich habe auch einen Überblendungsbefehl in QGIS gefunden, aber er scheint nur für Polygone und einzelne Felder zu funktionieren.
Wenn für QGIS nichts existiert, weiß jemand, wie es in PostGIS oder GRASS geht?
postgis
openstreetmap
grass
dissolve
Joshdoe
quelle
quelle
Antworten:
Interessante Frage. Ich betrachte mich nicht als PostGIS-Guru, aber ich habe mit Ihrem Problem gespielt und mir die folgende Abfrage ausgedacht, die Autobahndatensätze
LINESTRING
inMULTILINESTRING
Datensätze auflöst, wenn sie gemeinsame Werte in mehreren Feldern haben (in meinem Datensatz habe ich die Feldername
und abgeglichenstate
). Ich habe OGR verwendet, um ein Shapefile für Autobahnen (umbenannt in ushwys) in PostGREsql zu verschieben. also heißt mein Geometriefeldwkb_geometry
. Versuchen Sie, diese Abfrage zu hacken, um Ihre Daten und Feldbedingungen zu berücksichtigen:Wenn dies funktioniert, können Sie ogr2ogr verwenden, um diese Abfrage durchzuführen und die Ergebnisse in jedes von Ihnen bevorzugte Vektorformat zu exportieren, z. B. Shapefile, GML, CSV oder auf andere Weise. Informationen zum Aufrufen von SQL-Abfragen von ogr2ogr finden Sie in der OGR-SQL- Dokumentation.
Als Referenz habe ich die PostGIS ST_Collect- Anweisung sowie diese Site überprüft, die die Gruppierung in mehreren Feldern demonstriert.
Wenn Sie feststellen, dass Redaktionen dieser Abfrage für Sie nicht funktionieren, lassen Sie es mich bitte wissen, und ich werde meine Antwort streichen, damit sie nicht verweilt und die Leute verwirrt.
PS Wenn Sie nicht mit der Verwendung von ogr2ogr zum Verschieben von Geodaten in PostGIS vertraut sind, habe ich das folgende ogr2ogr-Skript verwendet, um meinen Datenimport durchzuführen ( Vorsicht beim Kopieren aus dem Web und direktes Einfügen in Ihr ogr2ogr-Befehlsfenster, da ich die Seitenformatierung gefunden habe führt Zeilenumbrüche und Ersetzungen von Schriftarten / Zeichen für doppelte Anführungszeichen ein, die das ogr-Skript beschädigen ):
[Aktualisieren]
Ich wollte sehen, wie dies in QGIS nach dem Ausführen dieser Abfrage "aussah", also habe ich die Abfrage geändert, um diese
WHERE
Klausel anzuwenden (die mir alle Varianten des US Highway 65 im Bundesstaat Missouri gibt):Als nächstes habe ich QGIS und das QuickWKT-Plugin verwendet, um alle acht (8) meiner resultierenden Autobahnaufzeichnungen zu visualisieren
MULTILINESTRING
. Wie Sie auf dem Screenshot sehen können, führen die Endergebnisse den Highway 65 von Missouis Nordgrenze zu Iowa bis zu ihrer Südgrenze zu Arkansas:Für mich zeigt diese Visualisierung, dass meine Abfrage keine unerwartete Vervielfältigung oder Eliminierung von Features erzeugt hat. Als nächstes fragte ich mich: "Okay, die Überblendung ergab acht Merkmale, aber wie viele Merkmale in der Originaltabelle repräsentieren tatsächlich den Highway 65 in Missouri?" Meine nächste Frage beantwortete diese Frage. Es scheint, dass der ursprüngliche Datensatz achtunddreißig (38) Merkmale verwendet, um den Highway 65 in Missouri darzustellen:
Letztendlich reduzierte die Abfrage achtunddreißig (38) Features auf acht (8) Features, die Werte in den Feldern Name und Status gemeinsam hatten. An diesem Punkt bin ich relativ sicher, dass diese Abfrage nützlich und geeignet ist, um einteilige Geometires in mehrteilige Geometrien aufzulösen, wenn die Auflösungsaufgabe mehrere Felder berücksichtigen muss.
Prost. :) :)
quelle
In PostGIS gibt es eine spezielle Funktion zum Zusammenführen von Zeilen
http://www.postgis.org/docs/ST_LineMerge.html
quelle
Sehen Sie sich in GRASS GIS v.build.polylines an
quelle