이전 포스팅에서는 공간 데이터 타입에 대해 알아봤습니다.
이제 공간 데이터 타입으로 저장된 공간 데이터를 이용해 연산을 할 수 있는 공간 함수에 대해 알아보겠습니다.
공간 함수는 공간 관계 함수와 공간 연산 함수로 구분 질 수 있는데, 이 중에서 공간 관계 함수는 두 공간 객체 간의 관계를 일반 데이터 타입(Boolean 또는 숫자)으로 반환해주는 함수입니다.
MySQL에서 제공해주는 공간 관계 함수 중에서 자주 사용되는 함수는 아래와 같습니다.
공간 관계 함수 | 설명 |
ST_Equals (g1 Geometry, g2 Geometry) : Boolean |
g1과 g2가 동일하면 True를 반환하고 상이하다면 False를 반환 |
ST_Disjoint (g1 Geometry, g2 Geometry) : Boolean |
g1과 g2가 겹치는 곳 없다면 True를 반환하고, 겹치는 곳이 있으면 False를 반환 |
ST_Within (g1 Geometry, g2 Geometry) : Boolean |
g1가 g2 영역 안에 포함된 경우 True를 반환하고 그렇지 않은 경우 False를 반환 |
ST_Overlaps (g1 Geometry, g2 Geometry) : Boolean |
g1과 g2 영역 중 교집합 영역이 존재하는 경우 True를 반환하고 존재하지 않는 경우 False를 반환 |
ST_Intersects (g1 Geometry, g2 Geometry) : Boolean |
g1과 g2 영역 간에 교집합이 존재하는 경우 True를 반환하고 그렇지 않은 경우 False를 반환 |
ST_Contains (g1 Geometry, g2 Geometry) : Boolean |
g2가 g1 영역 안에 포함된 경우 True를 반환하고 그렇지 않은 경우 False를 반환 |
ST_Touches (g1 Geometry, g2 Geometry) : Boolean |
g1과 g2가 경계 영역에서만 겹치는 경우 결과 값으로 True를 반환하며 경계 영역 외에서 겹치거나 겹치는 곳이 없다면 False를 반환 |
ST_Distance (g1 Geometry, g2 Geometry) : Double |
g1과 g2간의 거리를 반환 |
공간 관계 함수의 테스트를 위해 아래 테스트 데이터를 사용자 변수에 저장하도록 하겠습니다.
SET @p0 = POINT(0,0);
SET @p1 = POINT(1,1);
SET @p2 = POINT(2,2);
SET @l1 = ST_GeomFromText('LineString(1 1, 3 3)');
SET @l2 = ST_GeomFromText('LineString(2 2, 4 4)');
SET @b1 = ST_GeomFromText('Polygon((1 1,1 10,10 10,10 1,1 1))');
위에서 정의한 사용자 변수를 가지고 아래와 같이 공간 관계 함수를 테스트해보았습니다.
SELECT ST_Equals(@p1, @p1), ST_Equals(@p1, @l1);
SELECT ST_Disjoint(@b1, @p0), ST_Disjoint(@b1, @p2);
SELECT ST_Within(@p2, @b1), ST_Within(@b1, @p2);
SELECT Overlaps(@l1, @l2), Overlaps(@l1, @p1);
SELECT ST_Intersects(@b1, @p2), ST_Intersects(@b1, @p1);
SELECT ST_Contains(@b1, @p2), ST_Contains(@p2, @b1);
SELECT ST_Touches(@b1, @p1), ST_Touches(@b1, @p2);
SELECT ST_Distance(@p1, @p2);
테스트 결과 화면은 아래와 같습니다.
이어서, 다음 포스트에서는 공간 연산 함수에 대해 설명드리도록 하겠습니다.
'Database > Spatial DB' 카테고리의 다른 글
공간데이터베이스 (at Slide Share) (0) | 2020.04.16 |
---|---|
공간 연산 함수(Spatial Operator Functions) (0) | 2020.04.15 |
공간 데이터 타입(Spatial Data Type) (1) | 2020.04.15 |
Spatial DB(공간 데이터베이스)가 필요한 이유? (0) | 2020.04.15 |