Condividi tramite


MultiLineString

Un MultiLineString è una raccolta di zero o più geometry o istanze geographyLineString.

Istanze di MultiLineString

La figura seguente mostra esempi di MultiLineString istanze.

Esempi di istanze di geometria MultiLineString

Come illustrato nella figura:

  • La figura 1 è un'istanza semplice MultiLineString il cui limite è costituito dai quattro endpoint dei due LineString elementi.

  • La figura 2 è un'istanza semplice MultiLineString perché solo gli endpoint degli LineString elementi si intersecano. Il limite è costituito dai due endpoint non sovrapposti.

  • La figura 3 è un'istanza di MultiLineString non semplice perché l'interno di uno dei suoi elementi LineString è intersecato. Il limite di questa MultiLineString istanza è costituito dai quattro endpoint.

  • La figura 4 è un'istanza non semplice e non chiusa MultiLineString.

  • La figura 5 è un oggetto semplice e non chiuso MultiLineString. Non è chiuso perché i relativi LineStrings elementi non sono chiusi. È semplice perché nessuno degli interni di nessuna delle LineStrings istanze si interseca.

  • La figura 6 rappresenta un'istanza semplice e chiusa MultiLineString. Viene chiuso perché tutti i relativi elementi sono chiusi. È semplice perché nessuno dei suoi elementi si interseca negli interni.

Istanze accettate

Affinché un'istanza MultiLineString venga accettata, deve essere vuota o costituita solo LineString da istanze accettate. Per altre informazioni sulle istanze accettate LineString , vedere LineString. Di seguito sono riportati esempi di istanze accettate MultiLineString .

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

Nell'esempio seguente viene generata un'eccezione System.FormatException perché la seconda LineString istanza non è valida.

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

Istanze valide

Affinché un'istanza MultiLineString sia valida, deve soddisfare i criteri seguenti:

  1. Tutte le istanze che comprendono l'istanza MultiLineString devono essere istanze valide LineString .

  2. Nessuna delle due istanze LineString che comprendono l'istanza MultiLineString può sovrapporsi su un intervallo. Le LineString istanze possono intersecare o toccare solo se stesse o altre LineString istanze a un numero finito di punti.

L'esempio seguente mostra tre istanze valide MultiLineString e un'istanza MultiLineString non valida.

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 non è valido perché la seconda LineString istanza si sovrappone alla prima LineString istanza a un intervallo. Toccano un numero infinito di punti.

Esempi

Nell'esempio seguente viene creata una semplice geometry``MultiLineString istanza contenente due LineString elementi con SRID 0.

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

Per creare un'istanza di questa istanza con un identificatore SRID diverso, usare STGeomFromText() o STMLineStringFromText(). È anche possibile usare Parse() e quindi modificare l'identificatore SRID, come illustrato nell'esempio seguente.

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

Vedere anche

STLength (tipo di dati geometry)
STIsClosed (tipo di dati geometry)
LineString
Dati Spaziali (SQL Server)