Freigeben über


MultiLineString

Ein MultiLineString ist eine Sammlung von null oder mehr geometry- oder Geografie-Linienstring-Instanzen.

MultiLineString-Instanzen

Die folgende Abbildung zeigt Beispiele für MultiLineString Instanzen.

Beispiele für Geometrie MultiLineString-Instanzen

Wie in der Abbildung gezeigt:

  • Abbildung 1 ist eine einfache MultiLineString Instanz, deren Grenze die vier Endpunkte seiner beiden LineString Elemente ist.

  • Abbildung 2 ist eine einfache MultiLineString Instanz, da sich nur die Endpunkte der LineString Elemente schneiden. Die Grenze besteht aus den beiden nicht überlappenden Endpunkten.

  • Abbildung 3 ist eine nicht einfache MultiLineString Instanz, da das Innere eines seiner LineString Elemente überschritten wird. Die Grenze dieser MultiLineString Instanz ist die vier Endpunkte.

  • Abbildung 4 ist eine nicht einfache, nicht geschlossene MultiLineString Instanz.

  • Abbildung 5 ist ein einfaches, nicht geschlossenes MultiLineString. Sie ist nicht geschlossen, da ihre LineStrings Elemente nicht geschlossen sind. Es ist einfach, weil sich keiner der Innenräume irgendeiner der LineStrings Instanzen überschneidet.

  • Abbildung 6 ist eine einfache, geschlossene MultiLineString Instanz. Sie ist geschlossen, da alle ihre Elemente geschlossen sind. Es ist einfach, weil sich keine seiner Elemente an den Inneneinrichtungen überschneiden.

Akzeptierte Vorkommen

Damit eine MultiLineString Instanz angenommen wird, muss sie entweder leer sein oder nur aus akzeptierten Intancen bestehen LineString . Weitere Informationen zu akzeptierten LineString Instanzen finden Sie unter LineString. Im Folgenden 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 ein System.FormatException Fehler 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, muss sie die folgenden Kriterien erfüllen:

  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, können sich über ein Intervall überlappen. Die LineString Instanzen können sich nur selbst oder andere LineString Instanzen an einer endlichen Anzahl von Punkten überschneiden oder berühren.

Das folgende Beispiel zeigt drei gültige MultiLineString Instanzen und eine MultiLineString ungültige Instanz.

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. Sie berühren eine unendliche Anzahl von Punkten.

Beispiele

Im folgenden Beispiel wird eine einfache geometry``MultiLineString 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 STGeomFromText() oder STMLineStringFromText(). Sie können auch Parse() verwenden und dann die SRID ä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

STLength (Geometriedatentyp)
STIsClosed (Geometrietypl-Datenstruktur)
LineString
Räumliche Daten (SQL Server)