11.5.3.1 지원되는 공간 데이터 형식
쿼리에서 기하학적 개체를 표현하기 위해 두 개의 표준 공간 데이터 형식이 사용됩니다.
WKT (Well-Known Text) 형식
WKB (Well-Known Binary) 형식
MySQL의 내부에서는 WKT, WKB 중의 형식과도 다른 형식으로 기하 값이 저장됩니다.
다른 데이터 형식 간의 변환에 사용할 수있는 함수가 있습니다. 섹션 12.15.6 "기하 형식 변환 함수" 를 참조하십시오.
11.5.3.1.1 WKT (Well-Known Text) 형식
기하 값의 WKT (Well-Known Text) 표현은 ASCII 형식의 기하 데이터를 교환 할 수 있도록 설계되어 있습니다. OpenGIS 사양은 WKT 값을 기입하기위한 공식 운영 규칙을 지정하는 박카스 - 나우아 기법이 준비되어 있습니다 ( 섹션 11.5 "공간 데이터의 확장" 을 참조하십시오).
기하학적 개체의 WKT 표현의 예 :
Point
:POINT (15 20)
점의 좌표는 구분을위한 쉼표없이 지정됩니다. 이것은 좌표 사이에 쉼표를 필요로하는 SQL
Point()
함수의 구문과 다릅니다. 특정 공간 연산의 문맥에 적합한 구문을 신중하게 사용하십시오. 예를 들어, 다음 명령문은 모두Point
객체에서 X 좌표를 추출합니다. 첫 번째 경우는Point()
함수를 직접 사용하여 객체를 생성합니다. 두 번째 경우는GeomFromText()
에서Point
로 변환 된 WKT 표현을 사용합니다.mysql>
SELECT X(Point(15, 20));
+------------------+ | X(POINT(15, 20)) | +------------------+ | 15 | +------------------+ mysql>SELECT X(GeomFromText('POINT(15 20)'));
+---------------------------------+ | X(GeomFromText('POINT(15 20)')) | +---------------------------------+ | 15 | +---------------------------------+4 개의 점을 포함
LineString
:LINESTRING (0 0 10 10 20 25 50 60)
점의 좌표 쌍은 쉼표로 구분됩니다.
외부 링과 내부 링을 하나씩 포함
Polygon
:POLYGON ((0 0,10 0,10 10,0 10,0 0), (5 5,7 5,7 7,5 7 5 5))
3 개의
Point
값을 포함MultiPoint
:MULTIPOINT (0 0 20 20 60 60)
두
LineString
값을 포함MultiLineString
:MULTILINESTRING ((10 10 20 20), (15 15 30 15))
2 개의
Polygon
값을 포함MultiPolygon
:MULTIPOLYGON (((0 0,10 0,10 10,0 10,0 0)) ((5 5,7 5,7 7,5 7 5 5)))
2 개의
Point
값과 1 개의LineString
에서 구성된GeometryCollection
:GEOMETRYCOLLECTION (POINT (10 10) POINT (30 30) LINESTRING (15 15 20 20))
11.5.3.1.2 WKB (Well-Known Binary) 형식
기하 값 WKB (Well-Known Binary) 표현은 기하 WKB 정보를 포함한 BLOB
치에 의해 표현 된 바이너리 스트림으로 기하 데이터를 교환하는 데 사용됩니다. 이 형식은 OpenGIS 사양에 의해 정의되어 있습니다 ( 섹션 11.5 "공간 데이터의 확장" 을 참조하십시오). 이것은 또한 ISO SQL / MM Part 3 : Spatial 표준에 정의되어 있습니다.
WKB는 1 바이트의 부호없는 정수 4 바이트의 부호없는 정수 및 8 바이트의 배정 수 (IEEE 754 형식)를 사용합니다. 1 바이트는 8 비트입니다.
예를 들어, POINT(1 1)
에 대응하는 WKB 값은 각각 2 개의 16 진수로 표시 한 다음 21 바이트의 시퀀스로 구성됩니다.
0101000000000000000000F03F000000000000F03F
이 순서는 다음과 같이 구성됩니다.
Byte order : 01 WKB type : 01000000 X coordinate : 000000000000F03F Y coordinate : 000000000000F03F
각 구성 요소가 나타내는 내용은 다음과 같습니다.
바이트 순서는 1 또는 0 중 하나에서 리틀 엔디안 또는 빅 엔디안 스토리지를 나타냅니다. little endian 바이트 순서 빅 endian 바이트 순서는 각각 NDR (Network Data Representation), XDR (External Data Representation)라고도합니다.
WKB 형은 기하 형을 나타내는 코드입니다. 1-7의 값은
Point
,LineString
,Polygon
,MultiPoint
,MultiLineString
,MultiPolygon
및GeometryCollection
을 나타냅니다.Point
값은 X 좌표와 Y 좌표가 포함되지만 각각 배정 밀도 값으로 표현됩니다.
또한 복잡한 기하 값 WKB 값은 OpenGIS 사양에 자세히 기록되어있다 같이보다 복잡한 데이터 구조입니다.