2010. 6. 20. 22:58
Programming/Oracle
// table을 생성해준다.
// sdo_geometry를 사용하기 전에 메타데이터를 생성해줘야한다.
// 메타데이터 생성 후 인덱스를 걸어준다.
// 인덱스를 걸고 나면, 데이터 파싱 시 잘못된 데이터 타입이 들어가면 에러처리가 된다.
// 테이블 생성 -> 메타데이터 생성 -> 인덱스 생성 까지 한 후 데이터를 넣어본다.
// 데이터가 제대로 들어갔는지 확인하고 싶으면 다음과 같이 확인한다.
// (제대로 된 SDO객체가 들어왔는지 확인하는 유효성 검사이다.
// id와 유효성 검사 결과(true)가 뜬다. true가 아니면 잘못된 것임)
create table table_name(
id NUMBER PRIMARY KEY,
shape SDO_GEOMETRY
);
// sdo_geometry를 사용하기 전에 메타데이터를 생성해줘야한다.
INSERT INTO user_sdo_geom_metadata
(TABLE_NAME,
COLUMN_NAME,
DIMINFO,
SRID)
VALUES (
'table_name', <-------- table 이름
'shape', <------------- sdo_geometry 속성의 필드 이름
SDO_DIM_ARRAY(
SDO_DIM_ELEMENT('Longitude', -180, 180, 0.5), -- 10 meters tolerance
SDO_DIM_ELEMENT('Latitude', -90, 90, 0.5)
),
8307 -- SRID for 'Longitude / Latitude (WGS 84)' coordinate system
);
// 메타데이터 생성 후 인덱스를 걸어준다.
// 인덱스를 걸고 나면, 데이터 파싱 시 잘못된 데이터 타입이 들어가면 에러처리가 된다.
create index index_name on tablename(columnname) indextype is mdsys.spatial_index;
// 테이블 생성 -> 메타데이터 생성 -> 인덱스 생성 까지 한 후 데이터를 넣어본다.
// 데이터가 제대로 들어갔는지 확인하고 싶으면 다음과 같이 확인한다.
// (제대로 된 SDO객체가 들어왔는지 확인하는 유효성 검사이다.
// id와 유효성 검사 결과(true)가 뜬다. true가 아니면 잘못된 것임)
SELECT id, SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(shape, 0.5) FROM table_name