Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_POINTONSURFACE

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

功能描述

返回保证位于曲面内部的POINT(POLYGON、MULTIPOLYGON 和 CURVEPOLYGON)。

语法格式

sql
GEOMETRY ST_POINTONSURFACE(GEOMETRY g1);

参数说明

  • g1:目标 GEOMETRY 对象。

函数返回类型

GEOMETRY 类型

使用说明

  1. 该函数支持 3d 并且不会丢失 z-index。

示例

sql
SQL> SELECT ST_AsText(ST_PointOnSurface('POINT(0 5)'::geometry));

+------------+
|   EXPR1    |
+------------+
| POINT(0 5) |
+------------+

(1 row)

SQL> SELECT ST_AsText(ST_PointOnSurface('LINESTRING(0 5, 0 10)'::geometry));

+------------+
|   EXPR1    |
+------------+
| POINT(0 5) |
+------------+

(1 row)

SQL> SELECT ST_AsText(ST_PointOnSurface('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'::geometry));

+----------------+
|     EXPR1      |
+----------------+
| POINT(2.5 2.5) |
+----------------+

(1 row)

SQL> SELECT ST_AsEWKT(ST_PointOnSurface(ST_GeomFromEWKT('LINESTRING(0 5 1, 0 0 1, 0 10 2)')));

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

(1 row)

ST_PointOnSurface 的结果保证位于多边形内,而 ST_Centroid 计算的点可能位于多边形外:

sql
SQL> SELECT ST_AsText(ST_PointOnSurface(geom)) AS pt_on_surf,
            ST_AsText(ST_Centroid(geom)) AS centroid
         FROM (SELECT 'POLYGON ((130 120, 120 190, 30 140, 50 20, 190 20,
                           170 100, 90 60, 90 130, 130 120))'::geometry AS geom) AS t;

+-----------------+---------------------------------------------+
|   PT_ON_SURF    |                  CENTROID                   |
+-----------------+---------------------------------------------+
| POINT(62.5 110) | POINT(100.18264840182648 85.11415525114155) |
+-----------------+---------------------------------------------+

(1 row)