선 스트링이 자신과 교차하는지 여부를 결정하기위한 PostGIS 함수가 있습니까?


16

LineString이 자신과 교차하는지 알려주는 함수를 찾고 있습니다. st_intersects동일한 LineString을 두 번 호출하려고 했지만 분명히 동일한 줄 문자열이 교차합니다. 내 계획은 기능이 없다면 줄 문자열의 모든 점을 가져 와서 개별 줄 문자열을 만든 다음 st_intersects를 사용하여 서로 다른 줄 문자열을 확인하는 것입니다. 나는 이것이 오지 않기를 원하지만 그것이 두려워합니다.

따라서 선 스트링이 자체 교차인지 확인하는 PostGIS 함수가 있습니까? 다각형이 복잡한 지 알아내는 것과 비슷해야합니다.


PostGIS 현명한 도움이되지 않은 두 번째 답변이 있었지만 문제 전체에 대한 유용한 정보에 대한 링크가 포함되어 있습니다. 삭제 된 것 같습니다. 누구든지 그 링크가 있습니까?
Jeff

답변:


14

다음을 사용하여 자체 교차 라인 스트링을 테스트 할 수 있습니다 ST_IsSimple(geom).

SELECT ST_IsSimple('LINESTRING (50 50, 150 150, 50 150, 150 50)');
 st_issimple
-------------
 f
(1 row)

POINT (100.0 100.0)에서 자체 교차로

위 이미지와 아래 캡션은 JTS TestBuilder에서 가져온 것입니다 ( "Simple?"클릭)

에서 자기 교차로 POINT ( 100.0 100.0 )

이것은 ST_UnaryUnion(geom)(PostGIS 2.0부터) 유효하고 단순한 3 조각 멀티 라인 문자열을 반환하여 고정시킬 수 있습니다 :

MULTILINESTRING((50 50, 100 100), 
  (100 100, 150 150, 50 150, 100 100), 
  (100 100, 150 50))

이것은 완벽 해요! 나는 대답이 너무 단순해야한다는 것을 알았습니다. JTS Testbuilder를 사용하여 이미지를 작성했다고합니다. Postgis에서 교차점을 얻는 방법을 알고 있습니까?
Jeff

어려운 세부 사항입니다. JTS TestBuilder에는 CheckNoding이 있지만 MULTIPOINT가 아니라 호출 당 하나의 노드 좌표 만 찾습니다. PostGIS로 끄덕임을 얻는 방법을 정확히 모르겠습니다.
Mike T
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.