MultiLineString

适用于:Microsoft Fabric Microsoft Fabric SQL 数据库中Microsoft Fabric Warehouse 中的 SQL Server Azure SQL 数据库 Azure SQL 托管实例 SQL 分析终结点

MultiLineString 是零个或多个 geometrygeographyLineString 实例的集合。

MultiLineString 实例

下图显示了 MultiLineString 实例的示例

几何图形 MultiLineString 实例的示例图。

如图中所示:

  • 图 1 显示的是一个简单的 MultiLineString 实例,其边界是其两个 LineString 元素的四个端点。

  • 图 2 显示的是一个简单的 MultiLineString 实例,因为只有 LineString 元素的端点相交。 边界是两个不重叠的终结点。

  • 图 3 显示的是一个不简单的 MultiLineString 实例,因为它的其中一个 LineString 元素的内部出现了相交。 此 MultiLineString 实例的边界是四个端点。

  • 图 4 显示的是一个不简单、非闭合的 MultiLineString 实例。

  • 图 5 显示的是一个简单、非闭合的 MultiLineString。 它没有闭合是因为它的 LineStrings 元素没有闭合。 而其简单的原因在于,其任何 LineStrings 实例的内部都没有出现相交。

  • 图 6 显示的是一个简单、闭合的 MultiLineString 实例。 它为闭合的是因为它的所有元素都是闭合的。 而其简单的原因在于,其所有元素都没有出现内部相交现象。

接受的实例

要接受 MultiLineString 实例,它必须是空的,或者只能由接受的 LineString 实例组成。 有关接受的 LineString 实例的详细信息,请参阅 LineString。 下面的示例显示接受的 MultiLineString 实例。

DECLARE @g1 geometry = 'MULTILINESTRING EMPTY';  
DECLARE @g2 geometry = 'MULTILINESTRING((1 1, 3 5), (-5 3, -8 -2))';  
DECLARE @g3 geometry = 'MULTILINESTRING((1 1, 5 5), (1 3, 3 1))';  
DECLARE @g4 geometry = 'MULTILINESTRING((1 1, 3 3, 5 5),(3 3, 5 5, 7 7))';  

下面的示例引发 System.FormatException ,因为第二个 LineString 实例无效。

DECLARE @g geometry = 'MULTILINESTRING((1 1, 3 5),(-5 3))';  

有效实例

要使 MultiLineString 实例有效,它必须满足以下条件:

  1. 组成 MultiLineString 实例的所有实例必须是有效的 LineString 实例。

  2. 包含 MultiLineString 实例的个 LineString 实例不能在间隔内重叠。 LineString 实例只能与其自身或其他 LineString 实例在有限数量的点相交或接触。

以下示例显示三个有效的 MultiLineString 实例和一个无效的 MultiLineString 实例。

DECLARE @g1 geometry = 'MULTILINESTRING EMPTY';  
DECLARE @g2 geometry = 'MULTILINESTRING((1 1, 3 5), (-5 3, -8 -2))';  
DECLARE @g3 geometry = 'MULTILINESTRING((1 1, 5 5), (1 3, 3 1))';  
DECLARE @g4 geometry = 'MULTILINESTRING((1 1, 3 3, 5 5),(3 3, 5 5, 7 7))';  
SELECT @g1.STIsValid(), @g2.STIsValid(), @g3.STIsValid(), @g4.STIsValid();  

@g4 无效,因为第二个 LineString 实例与第一个 LineString 实例在某个间隔重叠。 它们在无限数量的点处接触。

示例

下面的示例创建了一个包含两个 geometry``MultiLineString 元素且 SRID 为 0 的简单 LineString 实例。

DECLARE @g geometry;  
SET @g = geometry::Parse('MULTILINESTRING((0 2, 1 1), (1 0, 1 1))');  

若要使用不同的 SRID 实例化此实例,请使用 STGeomFromText()STMLineStringFromText()。 也可以使用 Parse() ,然后修改 SRID,如下例所示。

DECLARE @g geometry;  
SET @g = geometry::Parse('MULTILINESTRING((0 2, 1 1), (1 0, 1 1))');  
SET @g.STSrid = 13;