월요일, 8월 29, 2016

Tibero SDM 작업하기.

- 2016년에 SDM은 Tibero, Altibase를 공간데이터베이스 지원합니다.

사전 작업으로 SDM 1.6.x 로 작업되어 있는것을 1.7.x로 마이그레이션 하였습니다.

- Tibero 작업 내용을 소개하고자합니다.
티베로는 6.x 버전을 사용했구요.  올챙이 베이스는 1.7.3b4입니다.

티베로 메뉴얼은

https://technet.tmaxsoft.com/upload/download/online/tibero/pver-20150504-000001/tibero_spatial/ch_01.html 을 참고합니다. 

티베로를 설치하면 SYSGIS 스키마가 생기고 거기에 공간 데이터를 생성 조회할 수있습니다. 
예를 들어 공간 데이터 정보가 있는 컬럼은 SYSGIS.GEOMETRY_COLUMNS_BASE 테이블과 SYSGIS.SPATIAL_REF_SYS_BASE 입니다.
이 두 테이블을 조회하면 기존 테이블이 공간테이블인지, 컬럼인지를 조회할 수가 있습니다. 

공간 테이블 저장과 공간인덱스 생성은 여기(https://technet.tmaxsoft.com/upload/download/online/tibero/pver-20150504-000001/tibero_spatial/ch_03.html)를 참조합니다. 
공간테이블 만들고 인덱스 생성한 후에 프로시저를 호출해 줘야 합니다.(????)

여기까지 하면 기존 다른 디비와 크게 다를것이 없습니다. 
Shape 파일 임포트는 http://geeps.krihs.re.kr/adminzone/service_page 에서 다운로드 받은 파일을 임포트 하였습니다.


SELECT SDM_GID, OPERT_DE, BAS_EMP_PO, GRP_ID, MVM_RES_CD, BAS_AR, BAS_RSD_PO, CTP_KOR_NM, SIG_CD, NTFC_DE, SIG_KOR_NM, OPE_MAN_ID, MVMN_DE, BAS_SUB_ID, MVMN_RESN, ID, REQST_SN, BAS_ID, BAS_MGT_SN, THE_GEOM, BAS_JUM_PO, EMD_CD 
FROM SYSGIS.TL_KODIS_BAS_2015_03;


위의 데이터를 임포트하고 다음의 작업을 해줘야합니다.
-- 1) 공간 인덱스 생성하기
CREATE INDEX RT_IDX_KODIS_BAS ON TL_KODIS_BAS_2015_03__4326(THE_GEOM) RTREE;

-- 2) 프라이머리 키 생성하기
ALTER TABLE TL_KODIS_BAS_2015_03
ADD CONSTRAINT TL_KODIS_BAS_2015_03_PK  PRIMARY KEY (ID) ;

-- 3) 공간컬럼 등록하기
call SYSGIS.REGISTER_SPATIAL_REF_SYS(4326,'hangum',4326,'test');

CALL SYSGIS.REGISTER_GEOMETRY_COLUMNS(
'SYSGIS.TL_KODIS_BAS_2015_03'
,'THE_GEOM'
, 102
, 101);




댓글 2개:

  1. 안녕하세요... 여쭤볼게 있어서 문의드립니다...

    1. 테이블 생성
    CREATE TABLE TEST (ID INTEGER PRIMARY KEY, GEOM GEOMETRY);

    //2. 공간인덱스 생성
    CREATE INDEX RT_IDX_GIS ON TEST(GEOM) RTREE;

    //3. 공간컬럼 등록하기.
    //3.1 투영목록에 EPSG 4326 추가
    call SYSGIS.REGISTER_SPATIAL_REF_SYS(4326,'epsg',4326,'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]')

    //3.2 지오메트리 컬럼 추가.
    call SYSGIS.REGISTER_GEOMETRY_COLUMNS('SYSGIS.TEST', 'GEOM', 0, 4326);

    이렇게 하고 난 뒤에
    insert into test(geom, id)
    values(ST_POINTFROMTEXT('POINT(127 71)',4326) ,1);

    해봤는데도

    select ST_SRID(GEOM) from test

    또는


    SELECT st_srid(ST_PointFromText('POINT(171.064544 42.28787)', 4326) ) from dual;

    모두 4326이 아닌 101이 나오는 이유가 뭘까요? ㅠㅠ 알려주세요.

    답글삭제
    답글
    1. 저도 오래되어서 잘 모르겠네요.
      티베로 q&a에 질의해 보시면 좋겠습니다.
      죄송합니다.

      삭제