Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


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 类型

使用说明

  1. 返回几何图形 A 和几何图形 B 在两个几何图形之间共享的部分。
  2. 如果几何图形没有共同点(即不相交),则返回空几何结构。
  3. 此函数与输入顺序有关。ST_DIFFERENCE(A, B) 始终返回 A 的一部分。
  4. 如果指定 gridSize 参数,则输入将捕捉到给定大小的网格,并在同一网格上计算结果顶点。
  5. ST_INTERSECTION 与 ST_INTERSECTS 结合使用对于剪切几何图形非常有用,例如在边界框、缓冲区或区域查询中,提取感兴趣的国家或地区内的几何图形部分。
  6. 对于地理数据,这是对几何数据实现的一个轻量级封装。 它首先确定适合 2 个地理对象边界框的最佳 SRID(如果地理对象位于 UTM 的半个区域内,但不同的 UTM 将选择其中之一)(倾向于 UTM 或兰伯特方位角等积 (LAEA) 北/南 极点,并在最坏的情况下回到墨卡托),然后在最适合的平面空间参考中相交并重新转换回 WGS84 地理。
  7. 此函数是由 GEOS 模块执行的。
  8. 该函数支持 3d 并且不会丢失 z-index。 但是,结果仅使用 XY 计算。 结果 Z 值被复制、平均或插值。

注意

  1. 该函数将删除 M 坐标值(如果存在)。
  2. 如果使用 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)