ST_INTERSECTION
📄字数 1.2K
👁️阅读量 加载中...
功能描述
返回表示两个几何图形的点集交集的几何图形。
语法格式
sql
GEOMETRY ST_INTERSECTION( GEOMETRY geomA , GEOMETRY geomB , DOUBLE gridSize = -1 );
GEOGRAPHY ST_INTERSECTION( GEOGRAPHY geogA , GEOGRAPHY geogB );参数说明
- geomA:第一个目标 GEOMETRY 对象。
- geomB:第二个目标 GEOMETRY 对象。
- geogA:第一个目标 GEOGRAPHY 对象。
- geogB:第二个目标 GEOGRAPHY 对象。
- gridSize:给定大小的网格,可选。
函数返回类型
GEOMETRY/GEOGRAPHY 类型
使用说明
- 返回几何图形 A 和几何图形 B 在两个几何图形之间共享的部分。
- 如果几何图形没有共同点(即不相交),则返回空几何结构。
- 此函数与输入顺序有关。ST_DIFFERENCE(A, B) 始终返回 A 的一部分。
- 如果指定 gridSize 参数,则输入将捕捉到给定大小的网格,并在同一网格上计算结果顶点。
- ST_INTERSECTION 与 ST_INTERSECTS 结合使用对于剪切几何图形非常有用,例如在边界框、缓冲区或区域查询中,提取感兴趣的国家或地区内的几何图形部分。
- 对于地理数据,这是对几何数据实现的一个轻量级封装。 它首先确定适合 2 个地理对象边界框的最佳 SRID(如果地理对象位于 UTM 的半个区域内,但不同的 UTM 将选择其中之一)(倾向于 UTM 或兰伯特方位角等积 (LAEA) 北/南 极点,并在最坏的情况下回到墨卡托),然后在最适合的平面空间参考中相交并重新转换回 WGS84 地理。
- 此函数是由 GEOS 模块执行的。
- 该函数支持 3d 并且不会丢失 z-index。 但是,结果仅使用 XY 计算。 结果 Z 值被复制、平均或插值。
注意
- 该函数将删除 M 坐标值(如果存在)。
- 如果使用 3D 几何图形,则需要使用基于 SFGCAL 的 ST_3DIntersection ,它可以为 3D 几何图形执行正确的 3D 交集。
示例
sql
SQL> SELECT ST_AsText(ST_Intersection('POINT(0 0)'::geometry, 'LINESTRING ( 2 0, 0 2 )'::geometry));
+-------------+
| EXPR1 |
+-------------+
| POINT EMPTY |
+-------------+
(1 row)
SQL> SELECT ST_AsText(ST_Intersection('POINT(0 0)'::geometry, 'LINESTRING ( 0 0, 0 2 )'::geometry));
+------------+
| EXPR1 |
+------------+
| POINT(0 0) |
+------------+
(1 row)2.5D:
sql
SQL> select ST_AsText(ST_Intersection(linestring, polygon)) As wkt
from (SELECT
ST_GeomFromText('LINESTRING Z (2 2 6,1.5 1.5 7,1 1 8,0.5 0.5 8,0 0 10)') AS linestring,
ST_GeomFromText('POLYGON((0 0 8, 0 1 8, 1 1 8, 1 0 8, 0 0 8))') AS polygon );
+---------------------------------------+
| WKT |
+---------------------------------------+
| LINESTRING Z (1 1 8,0.5 0.5 8,0 0 10) |
+---------------------------------------+
(1 row)