Ich habe nach einer Funktion gesucht, die mir sagt, ob sich ein LineString selbst schneidet. Ich habe st_intersects
zweimal versucht, mit demselben LineString zu telefonieren, aber offensichtlich werden sich identische Linienfolgen überschneiden. Mein Plan, wenn es keine Funktion gibt, wäre, alle Punkte in der Linienfolge abzurufen, einzelne Linienfolgen zu erstellen und dann jede neue Linienfolge mit st_intersects gegeneinander zu prüfen. Ich möchte nicht, dass es dazu kommt, aber ich fürchte, es wird so sein.
Gibt es also PostGIS-Funktionen, mit denen überprüft werden kann, ob sich eine Linienfolge selbst schneidet? Es sollte ungefähr so aussehen, als würde man herausfinden, ob ein Polygon komplex ist
Antworten:
Sie können eine sich selbst schneidende Linienfolge testen mit
ST_IsSimple(geom)
:Das Bild oben und die Beschriftung unten stammen von JTS TestBuilder (klicken Sie auf "Einfach?").
Dies kann mit
ST_UnaryUnion(geom)
(seit PostGIS 2.0) behoben werden , das eine gültige / einfache dreiteilige Multilinienfolge zurückgibt:quelle