类别:

地理空间函数

ST_ENVELOPE

返回包围指定的 GEOGRAPHYGEOMETRY 对象的最小边界框(矩形“信封”)。

语法

ST_ENVELOPE( <geography_or_geometry_expression> )
Copy

实参

geography_or_geometry_expression

实参的类型必须为 GEOGRAPHY 或 GEOMETRY。

返回

该函数返回一个 GEOGRAPHYGEOMETRY 类型的值,该值表示输入对象周围的最小边界框。

使用说明

  • 对于 GEOGRAPHY 对象:

    • 如果 geography_expression 是表示子午线弧(沿经线的弧)的 LineString,则 ST_ENVELOPE 返回该 LineString。

    • 如果 geography_expression 是表示除赤道之外的平行线上的弧(沿纬线的弧)的 LineString,则 ST_ENVELOPE 返回表示弧的边界框的多边形。

    • 如果 geography_expression 是单个点,则 ST_ENVELOPE 返回该点。

  • 对于 GEOMETRY 对象:

    • 在简并情况下(例如,输入是一个点或一条垂直线或水平线),该函数可能会返回较低维度的几何图形(即点或 LineString)。

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

示例

GEOGRAPHY 示例

以下示例返回多边形的最小边界框:

SELECT ST_ENVELOPE(
    TO_GEOGRAPHY(
        'POLYGON((-122.306067 37.55412, -122.32328 37.561801, -122.325879 37.586852, -122.306067 37.55412))'
    )
) as minimum_bounding_box_around_polygon;
+-----------------------------------------------------------------------------------------------------------------------+
| MINIMUM_BOUNDING_BOX_AROUND_POLYGON                                                                                   |
|-----------------------------------------------------------------------------------------------------------------------|
| POLYGON((-122.325879 37.55412,-122.306067 37.55412,-122.306067 37.586852,-122.325879 37.586852,-122.325879 37.55412)) |
+-----------------------------------------------------------------------------------------------------------------------+
Copy

以下示例传入表示子午线弧的 LineString。该函数返回相同的 LineString,而不是多边形。

SELECT ST_ENVELOPE(
    TO_GEOGRAPHY(
        'LINESTRING(-122.32328 37.561801, -122.32328 37.562001)'
    )
) as minimum_bounding_box_around_meridian_arc;
+-------------------------------------------------------+
| MINIMUM_BOUNDING_BOX_AROUND_MERIDIAN_ARC              |
|-------------------------------------------------------|
| LINESTRING(-122.32328 37.561801,-122.32328 37.562001) |
+-------------------------------------------------------+
Copy

以下示例传入表示非赤道平行线上弧的 LineString。该函数返回一个表示边界框的多边形:

SELECT ST_ENVELOPE(
    TO_GEOGRAPHY(
        'LINESTRING(-122.32328 37.561801,-122.32351 37.561801)'
    )
) as minimum_bounding_box_around_arc_along_parallel;
+---------------------------------------------------------------------------------------------------------------------+
| MINIMUM_BOUNDING_BOX_AROUND_ARC_ALONG_PARALLEL                                                                      |
|---------------------------------------------------------------------------------------------------------------------|
| POLYGON((-122.32351 37.561801,-122.32328 37.561801,-122.32328 37.561801,-122.32351 37.561801,-122.32351 37.561801)) |
+---------------------------------------------------------------------------------------------------------------------+
Copy

以下示例传入单个点。该函数返回相同的点:

SELECT ST_ENVELOPE(
    TO_GEOGRAPHY(
        'POINT(-122.32328 37.561801)'
    )
) as minimum_bounding_box_around_point;
+-----------------------------------+
| MINIMUM_BOUNDING_BOX_AROUND_POINT |
|-----------------------------------|
| POINT(-122.32328 37.561801)       |
+-----------------------------------+
Copy

GEOMETRY 示例

语言: 中文