Freigeben über


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.

Beispiele von Geometrie-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:

  1. Alle Instanzen, die die MultiLineString-Instanz umfassen, müssen gültige LineString-Instanzen sein.

  2. 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;