MultiLineString
Ein MultiLineString ist eine Auflistung von null oder mehr LineString-Instanzen vom Typ geometry oder geography.
MultiLineString-Instanzen
Die nachfolgende Abbildung enthält 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 ausschließlich akzeptierte LineString-Instanzen umfassen. Weitere Informationen zu akzeptierten LineString-Instanzen finden Sie unter LineString. Nachfolgend finden Sie Beispiele für akzeptierte 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
Eine MultiLineString-Instanz ist nur gültig, wenn sie die folgenden Kriterien erfüllt:
Alle Instanzen, die die MultiLineString-Instanz umfassen, müssen gültige LineString-Instanzen sein.
Keine zwei LineString-Instanzen, die die MultiLineString-Instanz umfassen, dürfen sich über einem Intervall überschneiden. Die LineString-Instanzen dürfen nur sich selbst oder andere LineString-Instanzen an einer endlichen Anzahl von Punkten überschneiden oder berühren.
Im folgenden Beispiel werden drei gültige MultiLineString-Instanzen und eine ungü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 bei einem Intervall überlappt. Sie berühren sich an 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;