공간 연산 함수를 이해하기에 앞서 아래 포스트를 먼저 참고하실 것을 권장드립니다.
공간 연산 함수는 두 공간 객체의 연산 결과로 새로운 공간 객체를 반환해주는 함수입니다.
MySQL에서 제공해주는 공간 연산 함수 중에서 자주 사용되는 함수는 아래와 같습니다
공간 연산 함수 | 설명 |
ST_Intersection (g1 Geometry, g2 Geometry) : Geometry |
g1과 g2의 교집합인 공간 객체를 반환 |
ST_Union (g1 Geometry, g2 Geometry) : Geometry |
g1과 g2의 합집합인 공간 객체를 반환 |
ST_Difference (g1 Geometry, g2 Geometry) : Geometry |
g1과 g2의 차집합인 공간 객체를 반환 |
ST_Buffer (g1 Geometry, d Double ) : Geometry |
g1에서 d 거리만큼 확장된 공간 객체를 반환 |
ST_Envelope (g1 Geometry) : Polygon |
g1을 포함하는 최소 MBR인 Polygon을 반환 |
ST_StartPoint (l1 LineString) : Point |
l1의 첫 번째 Point를 반환 |
ST_EndPoint (l1 LineString) : Point |
l1의 마지막 Point를 반환 |
ST_PointN (l1 LineString) : Point |
l1의 n 번째 Point를 반환 |
MySQL에서 공간 연산 함수의 테스트를 위해 아래 테스트 데이터를 사용자 변수에 저장하도록 하겠습니다.
SET @p0 = POINT(0,0);
SET @p1 = POINT(1,1);
SET @p2 = POINT(2,2);
SET @l1 = ST_GeomFromText('LineString(1 1, 3 3, 5 5, 10 10, 14 14)');
SET @l2 = ST_GeomFromText('LineString(2 2, 8 8)');
SET @b1 = ST_GeomFromText('Polygon((1 1,1 10,10 10,10 1,1 1))');
위에서 정의한 사용자 변수를 가지고 아래와 같이 공간 연산 함수를 테스트해보았습니다.
SELECT ST_AsText(ST_Intersection(@p0, @p1)), ST_AsText(ST_Intersection(@b1, @p2));
SELECT ST_AsText(ST_Union(@p0, @p1)), ST_AsText(ST_Union(@l1, @p1));
SELECT ST_AsText(ST_Difference(@p0, @p1)), ST_AsText(ST_Difference(@l1, @p2));
SELECT ST_AsText(ST_Buffer(@b1,0));
SELECT ST_AsText(ST_Envelope(@l2));
SELECT ST_AsText(ST_StartPoint(@l1));
SELECT ST_AsText(ST_EndPoint(@l1));
SELECT ST_AsText(ST_PointN(@l1,3));
테스트 결과 화면은 아래와 같습니다.
'Database > Spatial DB' 카테고리의 다른 글
공간데이터베이스 (at Slide Share) (0) | 2020.04.16 |
---|---|
공간 관계 함수(Spatial Relation Functions) (0) | 2020.04.15 |
공간 데이터 타입(Spatial Data Type) (1) | 2020.04.15 |
Spatial DB(공간 데이터베이스)가 필요한 이유? (0) | 2020.04.15 |