查询几何图形实例的属性和行为

所有 geometry 实例都有很多可以通过 SQL Server 提供的方法进行检索的属性。下列主题定义了几何图形类型的属性和行为,并为查询每种图形定义了方法。

点数

所有非空 geometry 实例都由“点”组成。这些点表示在其上绘制几何图形的面的 X 和 Y 坐标。geometry 提供许多用于查询实例的点的内置方法。

返回构成实例的点数。

返回实例中的特定点

返回位于实例上的某个任意点

返回实例的起始点

返回实例的终点

返回点实例的 X 坐标

返回点实例的 Y 坐标

STY

返回多边形实例的几何中心点

维度

非空 geometry 实例可以为零维、一维或二维。零维 geometries(例如 Point 和 MultiPoint)没有长度或面积。一维对象(例如 LineString 和 MultiLineString)具有长度。二维实例(例如 Polygon 和 MultiPolygon)具有面积和长度。空实例将报告为 -1 维,并且GeometryCollection 将根据其内容类型报告一个面积。

返回实例的维度

返回实例的长度

返回实例的面积

“空”geometry 实例不包含任何点。空的 LineString 和 MultiLineString 实例的长度为零。空的 Polygon 和 MultiPolygon 实例的面积为 0。

确定实例是否为空

简单

为了使实例的 geometry 变得“简单”,必须符合以下全部两个要求:

  • 实例的每个图形不能与自身相交,但其终点除外。

  • 实例的任何两个图形可在某个点上相交,但两个边界上的点除外。

注意注意

空几何图形总是简单的。

确定实例是否是简单的

边界、内部和外部

geometry 实例的“内部”是指由实例占用的空间,而“外部”是指未占用的空间。

“边界”由 OGC 定义,如下所示:

  • Point 和 MultiPoint 实例没有边界。

  • LineString 和 MultiLineString 边界由起始点和终点形成,并删除那些出现次数为偶数的点。

DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((0 1, 0 0, 1 0, 0 1), (1 1, 1 0))');
SELECT @g.STBoundary().ToString();

Polygon 或 MultiPolygon 实例的边界是其环的集合。

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

返回实例的边界

STBoundary

包络线

geometry 实例的“包络线”又称为“边界框”,它是一个由实例的最小和最大坐标 (X,Y) 形成的轴对齐矩形。

返回实例的包络线

STEnvelope

闭合

“闭合的”geometry 实例是指起始点和终点相同的图形。Polygon 实例是闭合的。Point 实例不是闭合的。

环是一个简单、闭合的 LineString 实例。

确定实例是否闭合

STIsClosed

确定实例是否为环

STIsRing

返回多边形实例的外环

STExteriorRing

返回多边形的内环数

STNumInteriorRing

返回多边形的指定内环

STInteriorRingN

空间引用标识符 (SRID)

空间引用标识符 (SRID) 是指定 geometry 实例所在的坐标系的标识符。两个拥有不同 SRID 的实例是不可比的。

设置或返回实例的 SRID

STSrid

此属性可以进行修改。