STDifference(geometry 数据类型)

返回一个对象,它表示来自一个 geometry 实例的点集,这些点没有位于另一个 geometry 实例中。

语法

.STDifference ( other_geometry )

参数

  • other_geometry
    另一个 geometry 实例,指示要从调用 STDifference() 的实例中删除哪些点。

返回类型

SQL Server 返回类型:geometry

CLR 返回类型:SqlGeometry

注释

如果 geometry 实例的空间引用 ID (SRID) 不匹配,则此方法始终返回 Null。 只有在输入实例包含圆弧线段时,结果才会包含圆弧线段。

示例

A.计算两个 Polygon 实例的差集

以下示例使用 STDifference() 计算两个多边形的差集。

DECLARE @g geometry;
DECLARE @h geometry;
SET @g = geometry::STGeomFromText('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))', 0);
SET @h = geometry::STGeomFromText('POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))', 0);
SELECT @g.STDifference(@h).ToString();

B.在 CurvePolygon 实例上调用 STDifference()

以下示例在 CurvePolygon 实例上使用 STDifference()。

DECLARE @g geometry = 'CURVEPOLYGON (CIRCULARSTRING (0 -4, 4 0, 0 4, -4 0, 0 -4))';

DECLARE @h geometry = 'POLYGON ((1 -1, 5 -1, 5 3, 1 3, 1 -1))';

-- Note the different results returned by the two SELECT statements

SELECT @h.STDifference(@g).ToString(), @g.STDifference(@h).ToString();

请参阅

其他资源

几何图形实例上的 OGC 方法