공간데이터
공간 공간데이터는 지구상에 존재하는 지형정보를 표현한 데이터이다. 즉 종이지도에 표현된 장, 도로, 나무, 건물, 가로등, 전봇대 등의 모든 표현물을 디지털 지도상에 옮겨 놓은 데이터를 말한다. 이 기능은 주로 지리적 정보 시스템 (GIS)응용 프로그램에서 유용하게 사용된다.
공간 데이터 타입
형식 | 내부 구조 | 지도의 개체 예 | MySQL의 공각 데이터 개체 |
점(Point) | 1개의 x,y좌표 | 가로수,논,심볼,텍스트 등 | POINT |
선(Line) | 여러 개의 x,y 좌표 | 도로, 하천 등 | LINESTRING |
면(PolyGon) | 여러 개의 x,y 좌표 (첫 점 = 끝점) |
건물 | POLYGON |
공간 데이터의 저장
MySQL 버전 | 지원 데이터 타입 | 저장 단위 | 비고 |
3.23 이전 | 없음 | 지도 파일의 저장결로만 텍스트로 저장 | |
3.25 ~ 5.0 이전 | LONGBLOB | 지도 파일 단위로 저장 | 지도 파일뿐 아니라 이미지/동영상 등 모든 파일이 저장 되지만, 공간 데이터에 특화된 기능은 없음. |
5.0 이후 | LONGBLOB | 지도 파일 단위로 저장 | |
Geometry | 개체 단위로 저장 지원 | 공간 데이터 전용 |
5.0 이후 버전
CREATE TABLE StreamTbl (
MapNumber CHAR(10),
STRAMNAME CHAR(20),
STREAM GEOMETRY );
INSERT INTO StreamTbl VALUES
('330000001', '한류천', ST_GeomFromText('LINESTRING (-10 30, -50 70, 50,70)',0));
일반 적인 텍스트나 이름은 CHAR나 VARCHAR로 정의하고 선형으로 이루어진 하천 개체는 공간 데이터 형식인 GEOMERTY데이터 형식으로 정의할 수 있다. 데이터 삽입 시 ST_GeomFromText()를 사용하여 삽입이 가능하다.
위와 같은 공간 데이터 개체가 데이터 형식을 얻게됨으로 공간 쿼리가 가능해 졌다.
SELECT 하천이름 FROM 하처ㄴ테이블 WHERE 하천길이> 10KM
공간 데이터 형식의 함수
함수명 | 설명 | 비고 |
ST_GeomFromText() | 문자열을 Geomerty형식으로 변환한다. | Point,LineString,Polygon |
ST_AsText() | Geomery 형식을 문자열 형식으로 반환한다. | Point,LineString,PolyGon등 |
ST_Length() | LineString의 길이를 구한다. | 지오메트리가 2D일 때와 3D일 때를 구분하여 계산할 수 있다. |
ST_Area() | Polygon의 면적을 구한다. | |
ST_Intersects() | 두 도형이 교차 여부를 확인한다. | 0: 교차 안함 1: 교차함 |
ST_Buffer() | 도형에서부터 주어진 거리만큼 떨어진 좌표 집합을 구한다. | 일반적으로 원이나 원형의 다각형으로 표현된다 |
ST_Contains() | 한 도형 안에 다른 도형이 들어 있는지 확인한다. | 0: 포함 안 함, 1 : 교차함 |
ST_Distance() | 두 도형 사이의 거리를 구한다. | |
ST_Uniion() | 두 도형을 합한 결과 좌표 집합을 구한다. | |
ST_Intersection() | 두 도형이 교차하는 좌표 집합을 구한다. |
'DB' 카테고리의 다른 글
전체 텍스트 검색과 파티션 (1) | 2023.10.07 |
---|---|
DB 스토어드 프로시저 (0) | 2023.10.06 |
인덱스(INDEX) (1) | 2023.10.05 |
[DB] 뷰 (0) | 2023.09.27 |
MYSQL 제약 조건 (0) | 2023.09.27 |