공간 연산 함수를 이해하기에 앞서 아래 포스트를 먼저 참고하실 것을 권장드립니다.
공간 데이터 타입(Spatial Data Type)
Spatial(공간) DB가 필요한 이유? 혹시 아래 나열된 서비스나 시스템을 사용해보신 적이 있으신가요? 버스정보시스템(버스 실시간 도착 알림) 차량 네비게이션 시스템 지하철 앱 지도 앱 차량 호출 서비스 가까운..
sparkdia.tistory.com
공간 관계 함수(Spatial Relation Functions)
이전 포스팅에서는 공간 데이터 타입에 대해 알아봤습니다. 공간 데이터 타입(Spatial Data Type) Spatial(공간) DB가 필요한 이유? 혹시 아래 나열된 서비스나 시스템을 사용해보신 적이 있으신가요? 버스정보시..
sparkdia.tistory.com
공간 연산 함수는 두 공간 객체의 연산 결과로 새로운 공간 객체를 반환해주는 함수입니다.
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 |