GeometryCollection

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Microsoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库Microsoft Fabric 预览版中的 SQL 数据库

GeometryCollection 是零个或更多个 geometrygeography 实例的集合。 GeometryCollection 可以为空。

GeometryCollection instances

Accepted instances

要接受某个 GeometryCollection 实例,该实例必须为空的 GeometryCollection 实例或组成 GeometryCollection 实例的所有实例必须为接受的实例。 下面的示例显示接受的 实例。

DECLARE @g1 geometry = 'GEOMETRYCOLLECTION EMPTY';  
DECLARE @g2 geometry = 'GEOMETRYCOLLECTION(LINESTRING EMPTY,POLYGON((-1 -1, -1 -5, -5 -5, -5 -1, -1 -1)))';  
DECLARE @g3 geometry = 'GEOMETRYCOLLECTION(LINESTRING(1 1, 3 5),POLYGON((-1 -1, -1 -5, -5 -5, -5 -1, -1 -1)))';  

下面的示例引发一个 System.FormatException ,因为 GeometryCollection 实例中的 LinesString 实例不是接受的实例。

DECLARE @g geometry = 'GEOMETRYCOLLECTION(LINESTRING(1 1), POLYGON((-1 -1, -1 -5, -5 -5, -5 -1, -1 -1)))';  

Valid instances

当组成 GeometryCollection 实例的所有实例均有效时, GeometryCollection 实例有效。 以下示例显示三个有效的 GeometryCollection 实例和一个无效的实例。

DECLARE @g1 geometry = 'GEOMETRYCOLLECTION EMPTY';  
DECLARE @g2 geometry = 'GEOMETRYCOLLECTION(LINESTRING EMPTY,POLYGON((-1 -1, -1 -5, -5 -5, -5 -1, -1 -1)))';  
DECLARE @g3 geometry = 'GEOMETRYCOLLECTION(LINESTRING(1 1, 3 5),POLYGON((-1 -1, -1 -5, -5 -5, -5 -1, -1 -1)))';  
DECLARE @g4 geometry = 'GEOMETRYCOLLECTION(LINESTRING(1 1, 3 5),POLYGON((-1 -1, 1 -5, -5 5, -5 -1, -1 -1)))';  
SELECT @g1.STIsValid(), @g2.STIsValid(), @g3.STIsValid(), @g4.STIsValid();  

@g4 无效,因为 GeometryCollection 实例中的 Polygon 实例无效。

有关接受的和有效的实例的详细信息,请参阅 PointMultiPointLineStringMultiLineStringPolygonMultiPolygon

Example

以下示例实例化 geometryGeometryCollection SRID 1 Point 中包含实例和 Polygon 实例的 Z 值。

DECLARE @g geometry;  
SET @g = geometry::STGeomCollFromText('GEOMETRYCOLLECTION(POINT(3 3 1), POLYGON((0 0 2, 1 10 3, 1 0 4, 0 0 2)))', 1);