잡동사니

[오라클] WKB 데이터 Simpling 하기 본문

IT/Database

[오라클] WKB 데이터 Simpling 하기

yeTi 2016. 9. 12. 17:24

안녕하세요. yeTi입니다.

오늘은 WKB(Well-Known Binary)형태를 가지는 Blob형 Geometry 데이터를 오라클에서 지원하는 SDO_UTIL 패키지를 활용하여 Simpling하는 방법에 대해서 알아보겠습니다.


설명

 - WKB형태의 BLOB형 데이터를 Simpling

 - threshold : Simpling할 간격

 - tolerance : Point를 식별할 간격


쿼리

UPDATE [테이블 명]
SET [WKB형 BLOB 컬럼명] = (
    SELECT SDO_UTIL.TO_WKBGEOMETRY(
        SDO_UTIL.RECTIFY_GEOMETRY(
            SDO_UTIL.SIMPLIFY(
              SDO_GEOMETRY([WKB형 BLOB 컬럼명], [SRID]),
              10, -- threshold value for geometry simplification
              0.005  -- tolerance
            ), 0.005  -- tolerance
        )
    )
    FROM [테이블 명]
)



응용 PL/SQL문

설명

 - Geometry의 Vertex수가 일정 수 이상이면 Simpling 수행


쿼리

declare
    VERTEX_CNT   NUMBER;
BEGIN
  SELECT SDO_UTIL.GETNUMVERTICES(SDO_GEOMETRY([WKB형 BLOB 컬럼명], [SRID]))
  INTO   VERTEX_CNT
  FROM [테이블 명];
 
   IF VERTEX_CNT > [기준 Vertex 수]
   THEN
      UPDATE [테이블 명]
      SET [WKB형 BLOB 컬럼명] = (
          SELECT SDO_UTIL.TO_WKBGEOMETRY(SDO_UTIL.RECTIFY_GEOMETRY(SDO_UTIL.SIMPLIFY(
            SDO_GEOMETRY([WKB형 BLOB 컬럼명], [SRID]),
            10, -- threshold value for geometry simplification
            0.005  -- tolerance
          ), 0.005  -- tolerance
          ))
          FROM [테이블 명]
      );
     
      COMMIT;
   END IF;
END;



참고 문헌


Comments