Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_ENVELOPE

📄字数 1.0K
👁️阅读量 加载中...

功能描述

以几何体的形式返回指定几何体的边界框。

语法格式

sql
GEOMETRY ST_ENVELOPE(GEOMETRY g1);

参数说明

  • g1: 目标 GEOMETRY 对象;

函数返回类型

GEOMETRY 类型

使用说明

  1. 返回边界框的值类型为 DOUBLE 。
  2. 多边形由边界框的角点定义((MINX, MINY)、(MINX, MAXY)、(MAXX, MAXY)、(MAXX, MINY)、(MINX, MINY))。
  3. 退化情况(垂直线、点)将返回比 POLYGON 更低维度的几何图形,即POINT 或LINESTRING。

示例

sql

SQL> SELECT ST_ASTEXT(ST_ENVELOPE('POINT(1 3)'::GEOMETRY));

+------------+
|   EXPR1    |
+------------+
| POINT(1 3) |
+------------+

SQL> SELECT ST_ASTEXT(ST_ENVELOPE('LINESTRING(0 0, 1 3)'::GEOMETRY));

+--------------------------------+
|             EXPR1              |
+--------------------------------+
| POLYGON((0 0,0 3,1 3,1 0,0 0)) |
+--------------------------------+

SQL> SELECT ST_ASTEXT(ST_ENVELOPE('POLYGON((0 0, 0 1, 1.0000001 1, 1.0000001 0, 0 0))'::GEOMETRY));

+------------------------------------------------+
|                     EXPR1                      |
+------------------------------------------------+
| POLYGON((0 0,0 1,1.0000001 1,1.0000001 0,0 0)) |
+------------------------------------------------+

SQL> SELECT ST_ASTEXT(ST_ENVELOPE('POLYGON((0 0, 0 1, 1.0000000001 1, 1.0000000001 0, 0 0))'::GEOMETRY));

+------------------------------------------------------+
|                        EXPR1                         |
+------------------------------------------------------+
| POLYGON((0 0,0 1,1.0000000001 1,1.0000000001 0,0 0)) |
+------------------------------------------------------+

SQL> SELECT BOX3D(geom), BOX2D(geom), ST_ASTEXT(ST_ENVELOPE(geom)) As envelopewkt
            FROM (SELECT 'POLYGON((0 0, 0 1000012333334.34545678, 1.0000001 1, 1.0000001 0, 0 0))'::GEOMETRY As geom) As foo;

+---------------------------------------------+---------------------------------------+----------------------------------------------------------------------------------+
|                    EXPR1                    |                 EXPR2                 |                                   ENVELOPEWKT                                    |
+---------------------------------------------+---------------------------------------+----------------------------------------------------------------------------------+
| BOX3D(0 0 0,1.0000001 1000012333334.3455 0) | BOX(0 0,1.0000001 1000012333334.3455) | POLYGON((0 0,0 1000012333334.3455,1.0000001 1000012333334.3455,1.0000001 0,0 0)) |
+---------------------------------------------+---------------------------------------+----------------------------------------------------------------------------------+

-- 点和线串的最小外接矩形:
SQL> SELECT ST_ASTEXT(ST_ENVELOPE(ST_COLLECT( ST_GEOMFROMTEXT('LINESTRING(55 75,125 150)'),ST_POINT(20, 80)))) As wktenv;

+----------------------------------------------+
|                    WKTENV                    |
+----------------------------------------------+
| POLYGON((20 75,20 150,125 150,125 75,20 75)) |
+----------------------------------------------+