Die Software gvSIG OA Digital Edition 2010 verfügt über Tools zur Topologie zum Auffinden von Pseudoknoten in linearer Geometrie. Ich habe die Clustertoleranz auf 0,00002 und die maximale Anzahl von Fehlern auf -10000 für die lineare Geometrie mit 20000 Verbindungszahlen festgelegt. Aber erfolgloses Ergebnis.
Gibt es Lösungen, die Pseudoknoten in freier GIS-Software finden?
Ich muss Pseudoknoten überlagern (eine Lösung für dieses Problem ist die Verwendung der Tools-Topologie von ArcInfo, aber für mich ist die Verwendung von freier Software die Priorität). Mit der linearen Geometrie wurden mehrere Benutzer in QGIS 1.8.0 in der PostGIS-Datenbank (Version 2.0.1) erstellt.
Neues Bild hinzufügen: 12 lineare Features mit drei Pseudoknoten in A (Zeile 4/5), B (Zeile 6/7), C (Zeile 9/10). Pseudoknoten sollten stattdessen Punkte sein - zwei lineare Merkmale mit Schnittpunkt in einem Punkt (Knoten) sollten ein lineares Merkmal sein (Linie 4/5 - Linie 4, ...).
Ist es möglich, eine Anfrage in PostGIS zu stellen, die zu einer Schicht von Pseudoknoten führt?
Neues Bild von Beispiel-Pseudoknoten hinzufügen: Wenn ich für die lineare Ebene Punktebene-Pseudoknoten (blaue Rechtecke) erhalte, habe ich folgende Fehler in der linearen Ebene korrigiert: A - fehlende Geometrie hinzufügen, B - Schnittlinie einrasten lassen, C - Pseudoknoten entfernen.
Antworten:
Hier eine generische Lösung, die Sie mit PostGIS oder einer anderen OGC-konformen Software umsetzen können.
Ihr Problem ist, "Pseudoknoten zu finden" ... Aber ich denke, dass es ein bisschen mehr ist, "Nicht-Pseudoknoten zu finden und Linien von Pseudoknoten zu verbinden". Meine Lösung kann für beide verwendet werden.
OGC-Standards bieten:
ST_Boundary (geom) : um die Knoten der Linien zu erkennen
ST_Dump (geom) : um jeden einzelnen Knoten in einen SQL-Tabellendatensatz einzufügen .
ST_DWithin, ST_Equals, ST_SnapToGrid, ST_Snap können für die Änderungstoleranz verwendet werden. Ich benutze ST_DWithin.
Wir können davon ausgehen, dass Ihr Hauptproblem mit diesen Objekten und Eigenschaften spezifiziert werden kann.
nur Liniensegmente (eine Tabelle sind Liniensegment ), durch eine Linienfolge Geometrie dargestellt ... ich nicht mit MULTILNE getestet, wenn Sie GeometryType haben = MEHRFACH, können Sie teilen und Gussmultilinien mit ST_Dump und ST_LineMerge;
Jedes Liniensegment hat eine (Geometrie-ID) -ID und eine (Farb-ID) -ID .
Der erste Schritt besteht also darin, die Knoten zu ermitteln, die von Verbindungslinien stammen.
HINWEIS: Verwenden von Caches, da diese schneller sind als Ansichten. Verwenden Sie "EXPLAIN SELECT ...", um die CPU-Zeit zu überprüfen. Dies kann sehr lange dauern.
Hier werden Zyklen und durchgehende (gleichfarbige) Linien als
ncolors=1
Punkte und die Pseudoknoten als Punkte erkannt.ncolors=2
Sie haben also eine Ebene mit diesen Punkten.Ihre Tabelle mit "guten Knoten" enthält die ursprünglichen "Begrenzungspunkte" und keine "Pseudoknoten".
quelle
array_distinct
Funktion stammt aus einer postgres.cz-Bibliothek . Alle anderen Fehler, bitte melden, ich kann hier weitere Erklärungen hinzufügen.geom
zuthe_geom
. (ST_Dump (x)) bleibt als Geom, ist kein Datenbankattribut.Refractions Research hat ein Linienreinigungs-Tool entwickelt , das zu tun scheint, was Sie wollen.
Der Quellcode ist bei GitHub zu finden.
quelle
Non-Free-Lösung: FME + MRF + SmartCleaner-Transformator
Kostenlose Lösung GRASS v.clean (das neueste QGIS 1.8.0 mit GRASS-Tools ist die einfachste Möglichkeit, es zu verwenden) und andere Tools zur Reinigung der Topologie
quelle
Hier sind Schritte, um Ihre Pseudoknoten mithilfe von OpenJump, einem kostenlosen GIS, zu finden.
QGIS und gvSIG haben das Sextante-Plugin, daher sollten die gleichen Schritte auch funktionieren, da
der Spatial-Join möglicherweise etwas anders ist.
Ich habe zum Testen Version 1.2 verwendet.
- Speichern Sie die
Toolbox Sextante Linienendpunkte , Topologie, Linienendpunkte extrahieren -> endpt_0
- Aufheben der Teilung Ihrer Linien
Toolbox Sextante, Werkzeuge für
Linienebenen , Verbinden benachbarter Linien - Speichern Sie die Toolbox
Sextante Linienendpunkte , Topologie, Extrahieren der Endpunkte von line -> endpt_1
- die Punkte Ende durch Pseudo - Knoten „benachbarte Linien verbinden“ entfernt
Werkzeuge, Abfragen, Spatial Query -
Source - Schicht „endpt_0“
Relation „erbohrt“
Maskenebene "endpt_1"
aktivieren oder auf Ergebnis ergänzen klicken
quelle
DIST > 0
als Ausdruck verwendet wird. Darüber hinaus können alle Geoprozesse in einem SEXTANTE-Modell verkettet werden, um ein neues Werkzeug zu erstellen, z. B. "Pseudonodensuche" .Lösung zum Auffinden von Pseudoknoten (und anderen Topologieregeln) in QGIS 1.9.0 master (2.0) - Plugin "Topology Checker". Links: Topology Checker Plugin auf YouTube , Topology Checker Plugin auf GitHub
quelle
In PostGIS können Sie eine geänderte Version der Abfrage verwenden, um in diesem Thema behandelte Dangles zu finden , da Pseudoknoten Knoten sind, die 2 Linienfolgen abfangen, und Dangles Knoten sind, die 1 Linienfolge abfangen.
quelle