ST_SEGMENTIZE
📄字数 933
👁️阅读量 加载中...
功能描述
返回修改后的几何图形/地理,其线段不长于给定距离。
语法格式
sql
GEOMETRY ST_SEGMENTIZE(GEOMETRY geom, DOUBLE max_segment_length);
GEOGRAPHY ST_SEGMENTIZE(GEOGRAPHY geog, DOUBLE max_segment_length);参数说明
- geom:目标 GEOMETRY 对象。
- geog:目标 GEOGRAPHY 对象。
- max_segment_length:最大线段长度。
- 几何:单位:空间参考系的单位。
- 地理:单位:米。 距离是在球体上计算的。 添加的顶点是沿着线段端点定义的球面大圆弧创建的。
函数返回类型
GEOMETRY/GEOGRAPHY 类型
使用说明
- 线段长度以二维计算。
- 线段是被分成等长的子段。
- 只会缩短长线段,不会延长比最大长度短的线段。
示例
分割一条线。 长段均分,短段不平均。
sql
SQL> SELECT TO_CHAR(ST_ASTEXT(ST_SEGMENTIZE('MULTILINESTRING((0 0, 0 1, 0 9),(1 10, 1 18))'::GEOMETRY,5 )));
+-----------------------------------------------------+
| EXPR1 |
+-----------------------------------------------------+
| MULTILINESTRING((0 0,0 1,0 5,0 9),(1 10,1 14,1 18)) |
+-----------------------------------------------------+多边形分割:
sql
SQL> SELECT TO_CHAR(ST_ASTEXT(ST_SEGMENTIZE(('POLYGON((0 0, 0 8, 30 0, 0 0))'::GEOMETRY), 10)));
+---------------------------------------------------------+
| EXPR1 |
+---------------------------------------------------------+
| POLYGON((0 0,0 8,7.5 6,15 4,22.5 2,30 0,20 0,10 0,0 0)) |
+---------------------------------------------------------+对地理线进行分段,最大分段长度为 2000 公里。 沿着连接端点的大圆弧添加顶点。
sql
SQL> SELECT TO_CHAR(ST_ASTEXT(ST_SEGMENTIZE(('LINESTRING (0 0, 60 60)'::GEOGRAPHY), 2000000)));
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| EXPR1 |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| LINESTRING(0 0,4.252632294621186 8.435965259868619,8.69579947419404 16.824093489701564,13.550465473227048 25.107950473646188,19.1066053508691 33.21091076089908,25.779290201459894 41.01711439406505,34.188839517966954 48.337222885886,45.238153936612264 54.84733442373889,60 60) |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+