Share via


MultiLineString

MultiLineString 是零個或多個 geometry 或 geographyLineString 例項的集合。

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 例項重疊。它們會觸及無限點數。

範例

下列範例會建立包含兩個具有 SRID 0 之 LineString 元素的簡單 geometryMultiLineString 例項。

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;