카테고리:

지리 공간 함수

ST_SIMPLIFY

선 또는 다각형을 나타내는 입력 GEOGRAPHY 또는 GEOMETRY 오브젝트가 주어지면 이 오브젝트의 더 단순한 근삿값을 반환합니다. 이 함수는 선택한 꼭짓점을 식별하고 제거하여 꼭짓점이 더 적은 유사한 오브젝트를 만듭니다.

예를 들어, 입력 오브젝트가 꼭짓점이 50개인 다각형인 경우, ST_SIMPLIFY는 꼭짓점이 20개인 더 단순한 다각형을 반환할 수 있습니다.

오브젝트를 단순화할 때 이 함수는 꼭짓점 제거 결과에 따라 해당 꼭짓점과 가장자리 사이의 거리가 지정 허용 범위 내에 있는 경우에만 꼭짓점을 제거합니다.

구문

ST_SIMPLIFY( <geography_expression>, <tolerance> [ , <preserve_collapsed> ] )
ST_SIMPLIFY( <geometry_expression>, <tolerance> )
Copy

인자

필수:

geography_expression . OR . geometry_expression

단순화할 GEOGRAPHY 또는 GEOMETRY 오브젝트입니다.

GEOGRAPHY 또는 GEOMETRY 오브젝트 유형에 따라 ST_SIMPLIFY는 다음과 같은 효과가 있습니다.

오브젝트 유형

ST_SIMPLIFY의 효과

LineString, MultiLineString, 다각형 또는 MultiPolygon

ST_SIMPLIFY가 단순화 알고리즘을 적용합니다

점 또는 MultiPoint

ST_SIMPLIFY가 효과가 없습니다.

GeometryCollection 또는 FeatureCollection

GEOGRAPHY 오브젝트의 경우 ST_SIMPLIFY는 컬렉션의 각 오브젝트에 단순화 알고리즘을 적용합니다. . . GEOMETRY 오브젝트의 경우 ST_SIMPLIFY는 이러한 유형을 지원하지 않습니다.

tolerance

꼭짓점 제거로 인한 꼭짓점과 가장자리 사이의 최대 거리(미터)입니다. 거리가 꼭짓점에 대한 이 허용 범위를 초과하는 경우, ST_SIMPLIFY는 해당 꼭짓점을 단순화된 오브젝트에 유지합니다.

선택 사항:

preserve_collapsed

(GEOGRAPHY 오브젝트만 해당) TRUE 인 경우, 오브젝트를 유지하지 않을 경우에는 허용 범위 감안 시 너무 작을 때 해당 오브젝트를 그대로 유지합니다.

예를 들어, preserve_collapsedFALSE 이고 tolerance10 (미터)인 경우, 1m 길이의 선은 단순화된 오브젝트의 한 점으로 축소됩니다. preserve_collapsedTRUE 인 경우, 이 선은 단순화된 오브젝트에서 유지됩니다.

기본값: FALSE.

반환

함수는 GEOGRAPHY 또는 GEOMETRY 형식의 값을 반환합니다.

GEOGRAPHY 예

이 섹션의 예는 WKT 형식으로 출력을 표시합니다.

alter session set GEOGRAPHY_OUTPUT_FORMAT='WKT';
Copy

다음 예는 원래 LineString보다 꼭짓점이 적은 단순화된 LineString을 반환합니다. 단순화된 오브젝트에서, 꼭짓점과 꼭짓점을 대체하는 가장자리 사이의 거리가 1000미터 미만이면 꼭짓점이 생략됩니다.

SELECT ST_SIMPLIFY(
    TO_GEOGRAPHY('LINESTRING(-122.306067 37.55412, -122.32328 37.561801, -122.325879 37.586852)'),
    1000);
+----------------------------------------------------------------------------------------------------+
| ST_SIMPLIFY(                                                                                       |
|     TO_GEOGRAPHY('LINESTRING(-122.306067 37.55412, -122.32328 37.561801, -122.325879 37.586852)'), |
|     1000)                                                                                          |
|----------------------------------------------------------------------------------------------------|
| LINESTRING(-122.306067 37.55412,-122.325879 37.586852)                                             |
+----------------------------------------------------------------------------------------------------+
Copy

GEOMETRY 예

이 섹션의 예는 WKT 형식으로 출력을 표시합니다.

ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='WKT';
Copy

다음 예는 원래 LineString보다 꼭짓점이 적은 단순화된 LineString을 반환합니다. 단순화된 오브젝트에서, 꼭짓점과 꼭짓점을 대체하는 가장자리 사이의 거리가 500미터 미만이면 꼭짓점이 생략됩니다.

SELECT ST_SIMPIFY(
  TO_GEOMETRY('LINESTRING(1100 1100, 2500 2100, 3100 3100, 4900 1100, 3100 1900)'),
  500);

+----------------------------------------------------------------------------------------------------+
| ST_SIMPLIFY(TO_GEOMETRY('LINESTRING(1100 1100, 2500 2100, 3100 3100, 4900 1100, 3100 1900)'), 500) |
|----------------------------------------------------------------------------------------------------|
| LINESTRING(1100 1100,3100 3100,4900 1100,3100 1900)                                                |
+----------------------------------------------------------------------------------------------------+
Copy

다음 예에서는 tolerance 인자에 따라 초기 꼭짓점이 36개인 타원을 16개 또는 10개의 꼭짓점이 있는 도형으로 단순화합니다.

SELECT ST_NUMPOINTS(geom) AS numpoints_before,
  ST_NUMPOINTS(ST_Simplify(geom, 0.5)) AS numpoints_simplified_05,
  ST_NUMPOINTS(ST_Simplify(geom, 1)) AS numpoints_simplified_1
  FROM
  (SELECT ST_BUFFER(to_geometry('LINESTRING(0 0, 1 1)'), 10) As geom);

+------------------+-------------------------+------------------------+
| NUMPOINTS_BEFORE | NUMPOINTS_SIMPLIFIED_05 | NUMPOINTS_SIMPLIFIED_1 |
|------------------+-------------------------+------------------------|
|               36 |                      16 |                     10 |
+------------------+-------------------------+------------------------+
Copy