DB

MySQL 공간 데이터

그zi운아이 2023. 10. 12. 12:09

공간데이터

공간 공간데이터는 지구상에 존재하는 지형정보를 표현한 데이터이다. 즉 종이지도에 표현된 장, 도로, 나무, 건물, 가로등, 전봇대 등의 모든 표현물을 디지털 지도상에 옮겨 놓은 데이터를 말한다. 이 기능은 주로 지리적 정보 시스템 (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