SDO_GEOMETRY
Oracle Spatial을 사용하여 공간 데이터를 생성하고 관리합니다. Oracle 에는 SDO_GEOMETRY
타입을 통하여 공간 데이터를 구성할 수 있습니다.
SDO_GEOMETRY
은 다음과 같이 정의됩니다.
1 | CREATE TYPE sdo_geometry AS OBJECT ( |
SDO_GTYPE
- 00 - UNKNOWN_GEOMETRY
- 01 - POINT
- 02 - LINE or CURVE
- 03 - POLYGON or SURFACE
- 04 - COLLECTION
- 05 - MULTIPOINT
- 06 - MULTILINE or MULTICURVE
- 07 - MULTIPOLYGON or MULTISURFACE
- 08 - SOLID
- 09 - MULTISOLID
예) 2003 일 경우 2차원의 POLYGON 형식
SDO_SRID
Geometry와 연관된 Coordinate System(Spatial Reference System)입니다. 값이 NULL 이면 관련된 Coordinate System 이 없는 것입니다.
SDO_POINT
POINT 형식일 때 사용합니다. SDO_POINT_TYPE(x, y, z)
을 통해 포인트를 입력합니다.
SDO_ELEM_INFO
SDO_ORDINATES
에 저장될 값의 형식을 정의합니다.
예) SDO_ELEM_INFO_ARRAY(1,1003,3)
- 첫 번째 1 은
SDO_ORDINATES
에 입력된 도형 ARRAY 의 시작 위치 - 1003과 3은 도형 형식을 정의
- 1003 은 외부도형, 2003 일 경우 내부도형
- (1,1003,1) or (1,2003,1) : 폴리곤 형식으로 4면 다각형의 경우 5개의 점을 지정하고 점 5와 점 1은 동일
- (1,1003,3) or (1,2003,3) : 직사각형 유형. 왼쪽 하단과 오른쪽 상단의 두 점을 지정
- (1,1003,4) or (1,2003,4) : 원형 유형. 최소 3개의 점을 지정해야 함
- 자세한 내용은 참고 사이트에서 확인
SDO_ORDINATES
SDO_ELEM_INFO
에서 정의된 형식으로 값을 입력합니다.
Spatial Table 생성
1. 테이블 생성
shape 필드에 SDO_GEOMETRY
타입을 지정하여 Spatial 테이블을 생성하였습니다.
1 | CREATE TABLE sample_table |
2. 메타데이터 생성
SDO_GEOMETRY
를 사용하기 전에 꼭 메타데이터를 생성해줘야 합니다.
1 | insert into user_sdo_geom_metadata |
3. 인덱스 생성
메타데이터 생성 후 Spatial 테이블의 인덱스를 생성합니다.
1 | # 인덱스 생성 형식 |
4. 데이터 입력
테이블을 생성하고 메타데이터와 인덱스까지 생성하였으면 데이터를 넣어봅니다.
1 | # Rectangle 데이터 |
5. 확인
입력된 데이터가 SDO_GEOMETRY
형식인지 확인합니다. 결과가 TRUE 가 아니면 잘못된 입력입니다.
1 | SELECT id, name, SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(shape, 0.5) FROM sample_table; |
SDO_GEOMETRY
타입을 사용하여 공간 데이터 생성을 진행하였습니다. 다음에는 생성된 공간 데이터에 대한 쿼리를 알아보겠습니다.