Condividi tramite


MultiLineString

Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure endpoint di analisi SQL in Microsoft Fabric Warehouse nel database SQL di Microsoft Fabric in Microsoft Fabric

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

Istanze MultiLineString

La figura seguente mostra esempi di istanze MultiLineString .

Diagramma di esempi di istanze Geometry MultiLineString.

Come indicato nell'illustrazione:

  • La figura 1 è un'istanza MultiLineString di tipo semplice il cui limite sono i quattro endpoint dei due elementi LineString .

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

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

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

  • La figura 5 rappresenta un'istanza MultiLineStringsemplice non chiusa. Non è chiusa perché gli elementi LineString non sono chiusi. È semplice perché nessuna delle parti interne di alcuna istanza LineString si interseca.

  • La figura 6 rappresenta un'istanza MultiLineString semplice e chiusa. È chiusa perché tutti i suoi elementi sono chiusi. È semplice perché nessuno dei suoi elementi si interseca con le parti interne.

Istanze accettate

Affinché un'istanza MultiLineString venga accettata, deve essere vuota o costituita solo da istanze LineString accettate. Per altre informazioni sulle istanze LineString accettate, vedere LineString. Gli esempi seguenti illustrano alcune istanze MultiLineString accettate.

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

L'esempio seguente genera un'eccezione System.FormatException , perché la seconda istanza LineString 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 LineString valide.

  2. Nessuna istanza LineString che comprende l'istanza MultiLineString può sovrapporsi a un intervallo. Le istanze LineString possono solo intersecarsi oppure toccarsi reciprocamente o con altre istanze LineString in un numero finito di punti.

L'esempio seguente indica tre istanze MultiLineString valide 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 è valida, perché la seconda istanza LineString si sovrappone alla prima istanza LineString in un intervallo. Si toccano in un numero infinito di punti.

Esempi

L'esempio seguente crea un'istanza geometry``MultiLineString che contiene due elementi LineString 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 diverso SRID, utilizzare STGeomFromText() o STMLineStringFromText(). È anche possibile utilizzare Parse() e quindi modificare l'identificatore SRID, come mostrato dall'esempio seguente.

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