Condividi tramite


MultiLineString

MultiLineString è una raccolta di zero o più istanze LineStringgeometry o geography.

Istanze MultiLineString

Nell'illustrazione seguente vengono riportati esempi di istanze MultiLineString.

Esempi di istanze di geometria MultiLineString

Come indicato nell'illustrazione:

  • La figura 1 è un'istanza di tipo semplice MultiLineString 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 è rappresentato 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 di tipo non semplice, non chiuso MultiLineString.

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

  • La figura 6 rappresenta un'istanza di tipo semplice e chiuso MultiLineString. È 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 sia accettata deve essere vuota o comprendere solo istanze LineString accettate. Per ulteriori informazioni sulle istanze LineString accettate, vedere LineString. Di seguito sono riportati esempi di 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))';

Nell'esempio seguente viene generata 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. Due istanze LineString che comprendono l'istanza MultiLineString non possono sovrapporsi in un intervallo. Le istanze LineString possono intersecarsi o toccare se stesse o altre istanze LineString in un numero finito di punti.

Nell'esempio seguente vengono mostrate 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 è valido perché la seconda istanza LineString si sovrappone alla prima istanza LineString in un intervallo. Si toccano in un numero infinito di punti.

Esempi

Nell'esempio seguente viene creata un'istanza geometryMultiLineString semplice 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;