He estado buscando una función que pueda decirme si LineString se cruza entre sí. He intentado llamar st_intersects
con la misma LineString dos veces, pero obviamente las cadenas lineales idénticas se cruzarán. Mi plan si no hay una función sería obtener todos los puntos en la cadena de línea, y crear cadenas de líneas individuales y luego verificar cada nueva cadena de líneas una contra la otra con st_intersects. No quiero que llegue a esto, pero me temo que lo hará.
Entonces, ¿hay alguna función de PostGIS para verificar si una cadena lineal se auto intersecta? Debería ser similar a descubrir si un polígono es complejo, supongo
Respuestas:
Puede probar una cadena lineal auto intersectante con
ST_IsSimple(geom)
:La imagen de arriba y el título de abajo son de JTS TestBuilder (haga clic en "¿Simple?")
Esto se puede solucionar con
ST_UnaryUnion(geom)
(desde PostGIS 2.0), que devuelve una cadena múltiple de tres piezas válida / simple:fuente