Szukałem funkcji, która może mi powiedzieć, czy LineString się przecina. Próbowałem dzwonić st_intersects
z tym samym LineString dwa razy, ale oczywiście identyczne linie łączą się. Mój plan, jeśli nie ma żadnej funkcji, polegałby na zebraniu wszystkich punktów w ciągu linii i utworzeniu pojedynczych linii, a następnie sprawdzeniu każdego nowego linii przy pomocy st_intersects. Nie chcę, żeby do tego doszło, ale obawiam się, że tak się stanie.
Czy są więc jakieś funkcje PostGIS do sprawdzania, czy linia łącząca się przecina? Zakładam, że powinno to być podobne do stwierdzenia, czy wielokąt jest złożony
Odpowiedzi:
Możesz przetestować pod kątem samoistnie przecinającego się linesta za pomocą
ST_IsSimple(geom)
:Powyższy obraz i poniżej podpis pochodzą z JTS TestBuilder (kliknij „Prosty?”)
Można to naprawić za pomocą
ST_UnaryUnion(geom)
(od PostGIS 2.0), która zwraca prawidłowy / prosty trzyczęściowy multilinestring:źródło