类别:

地理空间函数

ST_CENTROID

返回表示 GEOGRAPHYGEOMETRY 对象的几何中心的点。

语法

ST_CENTROID( <geography_or_geometry_expression> )
Copy

实参

geography_or_geometry_expression

实参必须是 GEOGRAPHY 或 GEOMETRY 类型的表达式。

返回

返回代表输入对象几何中心的点的 GEOGRAPHY 或 GEOMETRY 对象。

使用说明

  • 如果输入为 NULL,则返回 NULL。

  • 如果输入对象是包含不同类型对象(多边形、LineStrings 和点)的 GeometryCollection,则 ST_CENTROID 使用具有 最高维度 的类型来确定几何中心。例如:

    • 如果 GeometryCollection 包含多边形、LineStrings 和点,则 ST_CENTROID 使用多边形,并忽略集合中的 LineStrings 和点。

    • 如果 GeometryCollection 包含 LineStrings 和点,则 ST_CENTROID 使用 LineStrings,并忽略集合中的点。

  • 对于 GEOMETRY 对象,返回的 GEOMETRY 对象的 SRID 与输入相同。

示例

GEOGRAPHY 示例

以下示例返回表示 LineString 几何中心的点。

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

以下示例返回表示多边形几何中心的点。

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) |
+------------------------+
Copy

以下示例返回表示 GeometryCollection 几何中心的点。此集合包含多边形、LineString 和点。ST_CENTROID 在确定几何中心时仅使用多边形(并忽略 LineString 和点)。

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)             |
+------------------------------------+
Copy

GEOMETRY 示例

以下示例计算简单矩形多边形的质心。注意结果与将 ST_CENTROID 与 GEOGRAPHY 对象一起使用时的结果有何不同

SELECT ST_CENTROID(TO_GEOMETRY('POLYGON((10 10, 10 20, 20 20, 20 10, 10 10))'));
Copy
+--------------------------------------------------------------------------+
| ST_CENTROID(TO_GEOMETRY('POLYGON((10 10, 10 20, 20 20, 20 10, 10 10))')) |
|--------------------------------------------------------------------------|
| POINT(15 15)                                                             |
+--------------------------------------------------------------------------+
Copy
语言: 中文