Freigeben über


MultiLineString

Ein MultiLineString ist eine Auflistung von null oder mehr LineString-Instanzen vom Typ geometry oder geography.

MultiLinestring-Instanzen

In der folgenden Abbildung werden Beispiele für MultiLineString-Instanzen dargestellt.

Beispiele von MultiLineString-geometry-Instanzen

Folgendes wird dargestellt:

  • Abbildung 1 zeigt eine einfache MultiLineString-Instanz, deren Begrenzung aus den vier Endpunkten ihrer beiden LineString-Elemente besteht.

  • Abbildung 2 zeigt eine einfache MultiLineString-Instanz, da sich nur die Endpunkte der LineString-Elemente überschneiden. Die Begrenzung besteht aus den zwei nicht überlappenden Endpunkten.

  • Abbildung 3 zeigt eine nicht einfache MultiLineString-Instanz, da der Innenbereich eines ihrer LineString-Elemente geschnitten wird. Die Begrenzung dieser MultiLineString-Instanz besteht aus den vier Endpunkten.

  • Abbildung 4 zeigt eine nicht einfache, nicht geschlossene MultiLineString-Instanz.

  • Abbildung 5 zeigt eine einfache, nicht geschlossene MultiLineString-Instanz. Sie ist nicht geschlossen, da ihre LineStrings -Elemente nicht geschlossen sind. Sie ist einfach, da keiner der Innenbereiche der LineStrings-Instanzen sich mit anderen überschneidet.

  • Abbildung 6 zeigt eine einfache, geschlossene MultiLineString-Instanz. Sie ist geschlossen, weil alle ihre Elemente geschlossen sind. Sie ist einfach, weil keines ihrer Elemente sich im Innenbereich mit anderen überschneidet.

Akzeptierte Instanzen

Eine MultiLineString-Instanz wird nur akzeptiert, wenn entweder leer ist oder ausschließlich akzeptierte LineString enthält. Weitere Informationen zu akzeptierten LineString-Instanzen finden Sie unter LineString. Im Folgenden finden Sie Beispiele für MultiLineString-Instanzen.

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))';

Im folgenden Beispiel wird eine System.FormatException ausgelöst, da die zweite LineString-Instanz ungültig ist.

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

Gültige Instanzen

Damit eine MultiLineString-Instanz gültig ist, müssen folgende Kriterien erfüllt sein:

  1. Alle Instanzen innerhalb der MultiLineString-Instanz müssen gültige LineString-Instanzen sein.

  2. Keine LineString-Instanzen innerhalb der MultiLineString-Instanz überlappen in einem Intervall. Die LineString-Instanzen dürfen sich selbst oder andere LineString-Instanzen nur an einer endlichen Anzahl von Punkten schneiden oder berühren.

Im folgenden Beispiel werden drei gültige MultiLineString-Instanzen und eine ungültige MultiLineString-Instanz dargestellt.

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 ist ungültig, da die zweite LineString-Instanz die erste LineString-Instanz in einem Intervall überlappt. Die Instanzen berühren sich an unendlich vielen Punkten.

Beispiele

Im folgenden Beispiel wird eine einfache geometryMultiLineString-Instanz erstellt, die zwei LineString-Elemente mit dem SRID 0 enthält.

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

Um diese Instanz mit einem anderen SRID zu instanziieren, verwenden Sie STGeomFromText() oder STMLineStringFromText(). Sie können auch Parse() verwenden und den SRID dann ändern, wie im folgenden Beispiel gezeigt.

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