Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_SIMPLIFYPOLYGONHULL

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

功能描述

计算多边形几何的简化的保留拓扑的外部或内部外壳。

语法格式

sql
GEOMETRY ST_SIMPLIFYPOLYGONHULL(GEOMETRY geom, DOUBLE vertex_fraction, BOOLEAN is_outer = true);

参数说明

  • geom:目标 GEOMETRY 对象。
  • vertex_fraction:顶点分数,范围:[0.0,1.0]。
    • 值越低,结果越简单,顶点数越少,凹度也越小。
    • 对于外壳和内壳,1.0 :生成原始几何形状。
    • 对于外壳,0.0 :生成凸包(对于单个多边形。
    • 对于内壳,生成一个三角形。
  • is_outer:

函数返回类型

GEOMETRY 类型

使用说明

  1. 简化过程通过逐步删除包含最少面积的凹角来进行,直到达到顶点数目标。
  2. 它可以防止边交叉,因此结果始终是有效的多边形几何体。

示例

多边形的外壳:

sql
SQL> SELECT ST_AsText(ST_SimplifyPolygonHull(
       'POLYGON ((131 158, 136 163, 161 165, 173 156, 179 148, 169 140, 186 144, 190 137, 185 131, 174 128, 174 124, 166 119, 158 121, 158 115, 165 107, 161 97, 166 88, 166 79, 158 57, 145 57, 112 53, 111 47, 93 43, 90 48, 88 40, 80 39, 68 32, 51 33, 40 31, 39 34, 49 38, 34 38, 25 34, 28 39, 36 40, 44 46, 24 41, 17 41, 14 46, 19 50, 33 54, 21 55, 13 52, 11 57, 22 60, 34 59, 41 68, 75 72, 62 77, 56 70, 46 72, 31 69, 46 76, 52 82, 47 84, 56 90, 66 90, 64 94, 56 91, 33 97, 36 100, 23 100, 22 107, 29 106, 31 112, 46 116, 36 118, 28 131, 53 132, 59 127, 62 131, 76 130, 80 135, 89 137, 87 143, 73 145, 80 150, 88 150, 85 157, 99 162, 116 158, 115 165, 123 165, 122 170, 134 164, 131 158))',
         0.3));

+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                                               EXPR1                                                                                               |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| POLYGON((161 165,173 156,186 144,190 137,185 131,174 124,166 119,166 79,158 57,68 32,40 31,25 34,17 41,14 46,11 57,56 91,33 97,23 100,22 107,28 131,80 135,73 145,85 157,99 162,122 170,161 165)) |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

(1 row)

多边形的内壳。

sql
SQL> SELECT ST_AsText(ST_SimplifyPolygonHull(
       'POLYGON ((131 158, 136 163, 161 165, 173 156, 179 148, 169 140, 186 144, 190 137, 185 131, 174 128, 174 124, 166 119, 158 121, 158 115, 165 107, 161 97, 166 88, 166 79, 158 57, 145 57, 112 53, 111 47, 93 43, 90 48, 88 40, 80 39, 68 32, 51 33, 40 31, 39 34, 49 38, 34 38, 25 34, 28 39, 36 40, 44 46, 24 41, 17 41, 14 46, 19 50, 33 54, 21 55, 13 52, 11 57, 22 60, 34 59, 41 68, 75 72, 62 77, 56 70, 46 72, 31 69, 46 76, 52 82, 47 84, 56 90, 66 90, 64 94, 56 91, 33 97, 36 100, 23 100, 22 107, 29 106, 31 112, 46 116, 36 118, 28 131, 53 132, 59 127, 62 131, 76 130, 80 135, 89 137, 87 143, 73 145, 80 150, 88 150, 85 157, 99 162, 116 158, 115 165, 123 165, 122 170, 134 164, 131 158))',
         0.3, false));

+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                                                EXPR1                                                                                                |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| POLYGON((131 158,116 158,99 162,89 137,76 130,59 127,28 131,46 116,36 100,64 94,75 72,41 68,33 54,68 32,90 48,112 53,145 57,158 57,161 97,158 115,158 121,190 137,169 140,179 148,161 165,131 158)) |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

(1 row)