ST_Difference
计算空间对象没有与另一个空间对象相交的部分。
行为类型
不可变语法
ST_Difference( g1, g2 )
参数
g1
- 空间对象,类型为 GEOMETRY
g2
- 空间对象,类型为 GEOMETRY
返回
GEOMETRY
支持的数据类型
- 数据类型
- GEOMETRY
- Point
- 是
- Multipoint
- 是
- Linestring
- 是
- Multilinestring
- 是
- Polygon
- 是
- Multipolygon
- 是
- GeometryCollection
- 是
示例
以下示例显示了 ST_Difference 的用法。
两个重叠的线串:
=> SELECT ST_AsText(ST_Difference(ST_GeomFromText('LINESTRING(0 0,0 2)'),
ST_GeomFromText('LINESTRING(0 1,0 2)')));
ST_AsText
-----------------------
LINESTRING (0 0, 0 1)
(1 row)
=> SELECT ST_AsText(ST_Difference(ST_GeomFromText('LINESTRING(0 0,0 3)'),
ST_GeomFromText('LINESTRING(0 1,0 2)')));
ST_AsText
------------------------------------------
MULTILINESTRING ((0 0, 0 1), (0 2, 0 3))
(1 row)
两个重叠的多边形:
=> SELECT ST_AsText(ST_Difference(ST_GeomFromText('POLYGON((0 1,0 3,2 3,2 1,0 1))'),
ST_GeomFromText('POLYGON((0 0,0 2,2 2,2 0,0 0))')));
ST_AsText
-------------------------------------
POLYGON ((0 2, 0 3, 2 3, 2 2, 0 2))
(1 row)
两个未相交的多边形:
=> SELECT ST_AsText(ST_Difference(ST_GeomFromText('POLYGON((1 1,1 3,3 3,3 1,
1 1))'),ST_GeomFromText('POLYGON((1 5,1 7,-1 7,-1 5,1 5))')));
ST_AsText
-------------------------------------
POLYGON ((1 1, 1 3, 3 3, 3 1, 1 1))
(1 row)