이번 글에서는 GEOMETRY가 가질 수 있는 위치 관계에 대해 적어보려고 한다.
여기서 GEOMETRY는 2차원 데이터의 (POINT, LINESTRING, POLYGON, MULTI[POINT,LINESTRING,POYLGON])
으로 제한하도록 하겠다.
==
TODO : DE-9IM 소개글 링크
==
지난 글에서 다룬 DE-9IM 모델을 사용하면, 3 X 3의 행렬을 얻을 수 있고 각 성분의 값은 (F, 0, 1 2) 중 하나다.
위의 마스킹 테이블을 이용하면, 두 GEOMETRY의 위치관계를 빠르게 알아낼 수 있다.
Postgis 기준으로는 ST_Relate를 이용해서 각각의 위치관계에 대해서 검증 할 수 있고,
Oracle Spatial DB 기준으로는 SDO.Relate로 검증 하거나, SDO_GEOM.RELATE 로 알아낼 수 있다.
Postgis 기준으로 2차원상의 두 도형에 대한 위치관계를 간략하게 소개해 보겠다.
Disjoint - 교점이 없음
Intersects, - 교점이 있음
Covers, - A가 B를 포함함
Contains, - A가 B를 포함하는데 InteriorPoint 도 하나 이상 포함됨
ContainsProperly, - A의 Interior가 B를 포함함
CoveredBy, - B가 A를 포함함, 즉 Covers(B,A)와 동치
Within - B가 A를 포함하는데 InteriorPoint 도 하나 이상 포함됨, 즉 Contains(B,A)와 동치
Equals - A와 B가 같은 도형임
Touches - A와 B가 만나긴 하는데 Boundary 에서만 만남
Crosses - (차원이 다른 A,B가 만나는데, 안만나는 점도 있음) 또는 (둘중 하나가 선(들)인데, Interior의 교집합이 점(들)임)
Overlaps - A와 B가 같은 차원이고, 교집합도 있는데 교집함도 같은 차원임
참 많기도하다.. Crosses가 제일 복잡하다.
이렇게 보면 동시에 해당되는 위치관계도 있고, 매번 마스킹 테이블을 보면서 해독하기 머리아파서 테크트리를 정리해보았다.
우측으로 갈 수록 강력해진다. 즉 벤다이어그램으로 치면 더 안쪽에 위치하게 된다.
참고로, Contains와 Within을 모두 만족하면 Equals이다.
[개발자 필독]
텀블벅에서 진행한 전자책이 너무 잘되어서, 크몽으로도 상륙하게 되었습니다!
https://kmong.com/self-marketing/457491/ZAUx7MErx0
IT 초보자를 위한 하루만에 배우는 데이터베이스 | 15000원부터 시작 가능한 총 평점 0점의 전자책,
0개 총 작업 개수 완료한 총 평점 0점인 팀플러머의 전자책, 직무스킬 전자책 서비스를 0개의 리뷰와 함께 확인해 보세요. 전자책, 직무스킬 전자책 제공 등 15000원부터 시작 가능한 서비스
kmong.com
댓글