ST_CENTROID
ST_CENTROID
GEOGRAPHY 또는 GEOMETRY 객체의 기하학적 중심을 나타내는 Point를 반환해요.
본문
구문
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) |
+--------------------------------------------------------------------------+