MultiLineString
Ein MultiLineString ist eine Auflistung von null oder mehr LineString-Instanzen vom Typ geometry oder geography.
MultiLineString-Instanzen
Die nachfolgenden Abbildungen sind Beispiele für MultiLineString-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
Damit eine MultiLineString-Instanz akzeptiert wird, muss sie entweder leer sein, oder sie darf nur aus LineString bestehen, die akzeptiert werden. Weitere Informationen über akzeptierte LineString-Instanzen finden Sie unter LineString. In den folgenden Beispielen werden akzeptierte MultiLineString-Instanzen veranschaulicht.
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 nicht gültig ist.
DECLARE @g geometry = 'MULTILINESTRING((1 1, 3 5),(-5 3))';
Gültige Instanzen
Damit eine MultiLineString-Instanz gültig ist, muss sie die folgenden Kriterien erfüllen:
Alle Instanzen, die die MultiLineString-Instanz beinhalten, müssen gültige LineString-Instanzen sein.
Zwei LineString-Instanzen, die die MultiLineString-Instanz beinhalten, dürfen sich nicht im Verlauf eines Intervalls überlappen. Die LineString-Instanzen können sich nur mit einer endlichen Anzahl von Punkten überschneiden oder sich selbst oder andere LineString-Instanzen berühren.
Im folgenden Beispiel werden drei gültige MultiLineString-Instanzen und eine nicht gültige MultiLineString-Instanz gezeigt.
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 nicht gültig, da die zweite LineString-Instanz die erste LineString-Instanz in einem Intervall überlappt. Sie berühren sich mit einer unendlichen Anzahl von 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;
Siehe auch
Verweis
STIsClosed (geometry-Datentyp)