카테고리 없음

spatial index 다시 생성하기

숲별 2024. 9. 2. 16:06
728x90

 

 

import해오는 과정에서 3857좌표계가 없어서 에러가 났었음

 

  SELECT * 
FROM MDSYS.CS_SRS 
WHERE SRID = 3857;

-- SRID 3857 레코드 업데이트
UPDATE MDSYS.CS_SRS
SET CS_NAME = 'Google Projection',
    AUTH_SRID = 3857,
    WKTEXT = 'PROJCS["Google Projection", GEOGCS [ "WGS 84", DATUM ["WGS 84", SPHEROID ["Popular Visualisation Sphere", 6378137, 0]], PRIMEM["Greenwich",0], UNIT["Decimal Degree",0.0174532925199433]], PROJECTION["Mercator"], PARAMETER["Standard_Parallel_1",0], PARAMETER["Central_Meridian",0], PARAMETER["False_Easting",0], PARAMETER["False_Northing",0], UNIT["Meter",1]]'
WHERE SRID = 3857;

COMMIT;

3857좌표계 추가해줬는데

좌표계없는 상태에서 이미 만들어진 index들이 유명무실했다.

 

SELECT *
  FROM USER_INDEXES 
  WHERE 1=1
   AND table_name = 'KBT';


-- 기존 인덱스 삭제
DROP INDEX "CB"."KBT_SX_GIS";

-- 인덱스 새로 만들기

  CREATE INDEX "CB"."KBT_SX_GIS" ON "CB"."KBT" ("GIS") 
   INDEXTYPE IS "MDSYS"."SPATIAL_INDEX"  PARAMETERS ('layer_gtype=POINT');

 

 

혹시 index도 기존 index와 같게 만드는 거라 DDL문 조회하고 싶다면

SELECT DBMS_METADATA.GET_DDL('INDEX', 'KBT_SX_GIS', 'CB') 
FROM DUAL;

 

 

 

 

 

 

 

+metadata랑은 다 만들어져있다고 가정하고 위에 꺼만 한거임.

SELECT *
  FROM USER_tab_columns
 WHERE 1=1
   AND table_name = 'KBT'
   AND data_type= 'SDO_GEOMETRY';
   
SELECT *
  FROM USER_SDO_GEOM_METADATA 
  WHERE 1=1
    AND table_name = 'KBT';

SELECT *
  FROM USER_INDEXES 
  WHERE 1=1
   AND table_name = 'KBT';

혹시 위에 없으면 넣어줘야함.