ST_WRAPX
📄字数 638
👁️阅读量 加载中...
功能描述
此函数分割输入的几何图形,然后按照move参数指定的方向移动落在给定wrap线右侧(对于负移动)或左侧(对于正移动)的每个结果组件 ,最终将碎片重新组合在一起。
语法格式
sql
GEOMETRY ST_WRAPX(GEOMETRY geom, DOUBLE wrap, DOUBLE move);参数说明
- geom:目标 GEOMETRY 对象。
- wrap: 围绕线。
- move: 移动距离
函数返回类型
GEOMETRY 类型
使用说明
- 对于"重新居中"经纬度输入以使感兴趣的特征不会从一侧生成到另一侧非常有用。
- 该函数支持 3d 并且不会丢失 z-index。
示例
sql
SQL> CREATE OR REPLACE FUNCTION test(geom geometry, wrap double, amount double, exp geometry) RETURN VARCHAR
IS
DECLARE
obt geometry;
BEGIN
obt := ST_NORMALIZE(ST_WRAPX(geom, wrap, amount));
IF ST_ORDERINGEQUALS(obt, exp) THEN
RETURN 'OK';
ELSE
RETURN 'KO:' || ST_AsEWKT(obt) || ' != ' || ST_AsEWKT(exp);
END IF;
END;
/
SQL> SELECT 'A1', test(
'POLYGON((0 0,10 0,10 10,0 10,0 0),
(1 2,3 2,3 4,1 4,1 2),
(4 2,6 2,6 4,4 4,4 2),
(7 2,9 2,9 4,7 4,7 2))', 5, 10,
'POLYGON((5 0,5 2,6 2,6 4,5 4,5 10,10 10,15 10,15 4,14 4,14 2,15 2,15 0,10 0,5 0),
(11 2,13 2,13 4,11 4,11 2),
(7 2,9 2,9 4,7 4,7 2))');
+-------+-------+
| EXPR1 | EXPR2 |
+-------+-------+
| A1 | OK |
+-------+-------+