ST_CENTROID

ST_CENTROID

GEOGRAPHY 또는 GEOMETRY 객체의 기하학적 중심을 나타내는 Point를 반환해요.

출처: Snowflake SQL Reference - ST_CENTROID

본문

구문

ST_CENTROID( <geography_or_geometry_expression> )

인자

geography_or_geometry_expression

  • 인자는 GEOGRAPHY 또는 GEOMETRY 타입의 표현식이어야 해요.

반환

입력 객체의 기하학적 중심을 나타내는 Point에 해당하는 GEOGRAPHY 또는 GEOMETRY 객체를 반환해요.

사용법 참고 사항

  • 입력이 NULL이면 NULL을 반환해요.

  • 입력 객체가 서로 다른 유형(Polygon, LineString, Point)의 객체를 포함하는 GeometryCollection이라면 ST_CENTROID는 가장 높은 차원의 유형을 사용해 기하학적 중심을 결정해요. 예를 들어 GeometryCollection에 Polygon, LineString, Point가 있다면 ST_CENTROID는 Polygon을 사용하고 컬렉션의 LineString과 Point는 무시해요. GeometryCollection에 LineString과 Point가 있다면 ST_CENTROID는 LineString을 사용하고 컬렉션의 Point는 무시해요.

  • GEOMETRY 객체의 경우 반환되는 GEOMETRY 객체는 입력과 동일한 SRID를 가져요.

예제

GEOGRAPHY 예제

다음 예제는 LineString의 기하학적 중심을 나타내는 Point를 반환해요.

SELECT ST_CENTROID(
    TO_GEOGRAPHY(
        'LINESTRING(0 0, 0 -2)'
    )
) as center_of_linestring;
+----------------------+
| CENTER_OF_LINESTRING |
|----------------------|
| POINT(0 -1)          |
+----------------------+

다음 예제는 Polygon의 기하학적 중심을 나타내는 Point를 반환해요.

SELECT ST_CENTROID(
    TO_GEOGRAPHY(
        'POLYGON((10 10, 10 20, 20 20, 20 10, 10 10))'
    )
) as center_of_polygon;
+------------------------+
| CENTER_OF_POLYGON      |
|------------------------|
| POINT(15 15.014819855) |
+------------------------+

다음 예제는 GeometryCollection의 기하학적 중심을 나타내는 Point를 반환해요. 이 컬렉션에는 Polygon, LineString, Point가 포함돼요. ST_CENTROID는 기하학적 중심을 결정할 때 Polygon만 사용하고 LineString과 Point는 무시해요.

SELECT ST_CENTROID(
    TO_GEOGRAPHY(
        'GEOMETRYCOLLECTION(POLYGON((10 10, 10 20, 20 20, 20 10, 10 10)), LINESTRING(0 0, 0 -2), POINT(50 -50))'
    )
) as center_of_collection_with_polygons;
+------------------------------------+
| CENTER_OF_COLLECTION_WITH_POLYGONS |
|------------------------------------|
| POINT(15 15.014819855)             |
+------------------------------------+

GEOMETRY 예제

다음 예제는 단순한 직사각형 Polygon의 중심(centroid)을 계산해요. 결과가 GEOGRAPHY 객체에 ST_CENTROID를 사용할 때와 어떻게 달라지는지 주목해요.

SELECT ST_CENTROID(TO_GEOMETRY('POLYGON((10 10, 10 20, 20 20, 20 10, 10 10))'));
+--------------------------------------------------------------------------+
| ST_CENTROID(TO_GEOMETRY('POLYGON((10 10, 10 20, 20 20, 20 10, 10 10))')) |
|--------------------------------------------------------------------------|
| POINT(15 15)                                                             |
+--------------------------------------------------------------------------+

더 알아보기