Ich habe einen Datensatz von Straßen in einer Stadt in einer PostGIS-fähigen Datenbank gespeichert. Ich möchte alle Funktionen identifizieren und entfernen, die nicht mit dem Rest des Straßennetzes verbunden sind. Dieses Verhalten tritt häufig an den Rändern von Netzwerken auf, an denen die Daten abgeschnitten wurden.
Ich habe in der GIS SE andere Antworten gefunden, die dies tun, aber alle scheinen ArcGIS zu verwenden, und ich möchte das Problem mithilfe von PostGIS, QGIS oder einem Python-Skript lösen.
Meine Datensätze können über eine Million Funktionen enthalten, daher ist die Leistung ein Problem.
Mit PostGIS können Sie ganz einfach Straßen auswählen, die keine andere Straße kreuzen:
quelle
Mit diesem QGIS Python-Skript können Sie Zeilen erkennen, die mit nichts verbunden sind:
Beachten Sie, dass dies bei mehrteiligen Leitungen nicht funktioniert. Ich glaube nicht, dass es viel schneller gehen könnte ...
quelle
Sie können die einfachen Straßen zuerst mit der Methode von @ dbaston entfernen und dann mit pgRouting die komplizierteren Fälle ermitteln, z. B. wenn Sie ein Straßennetz haben, das nicht mit einem anderen Netzwerk verbunden ist.
Wählen Sie ein Straßensegment, das sich definitiv innerhalb des Hauptnetzes befindet, und versuchen Sie dann, eine Route von jedem anderen Segment zu diesem zu finden. Wenn keine Route vorhanden ist, löschen Sie das Segment.
quelle