Condividi tramite


LineString

LineString indica un oggetto unidimensionale che rappresenta una sequenza di punti e i segmenti lineari tramite cui vengono connessi.

Istanze Linestring

Nell'illustrazione seguente vengono mostrati esempi delle istanze LineString.

Esempi di istanze di geometria LineString

Come mostrato nell'illustrazione:

  • La figura 1 rappresenta un'istanza LineString semplice non chiusa.

  • La figura 2 rappresenta un'istanza LineString non semplice e non chiusa.

  • La figura 3 rappresenta un'istanza LineString semplice chiusa che, di conseguenza, è un anello.

  • La figura 4 rappresenta un'istanza LineString non semplice chiusa che, di conseguenza, non è un anello.

Istanze accettate

Le istanze LineString accettate possono essere inserite in una variabile geometry, tuttavia potrebbero non essere istanze LineString valide. Affinché un'istanza LineString sia accettata, devono essere soddisfatti i criteri riportati di seguito. L'istanza deve essere formata da almeno due punti oppure essere vuota. Le istanze LineString riportate di seguito sono accettate.

DECLARE @g1 geometry = 'LINESTRING EMPTY';
DECLARE @g2 geometry = 'LINESTRING(1 1,2 3,4 8, -6 3)';
DECLARE @g3 geometry = 'LINESTRING(1 1, 1 1)';

Nell'istanza @g3 viene mostrato che un'istanza LineString può essere accettata, ma non è ritenuta valida.

L'istanza LineString seguente non è accettata, pertanto sarà generata un'eccezione System.FormatException.

DECLARE @g geometry = 'LINESTRING(1 1)';

Istanze valide

Affinché un'istanza LineString sia valida, devono essere soddisfatti i criteri riportati di seguito.

  1. L'istanza LineString deve essere accettata.

  2. Se un'istanza LineString non è vuota, devono essere presenti almeno due punti distinti.

  3. L'istanza LineString non può sovrapporsi in un intervallo.

Le istanze LineString seguenti sono valide.

DECLARE @g1 geometry= 'LINESTRING EMPTY';
DECLARE @g2 geometry= 'LINESTRING(1 1, 3 3)';
DECLARE @g3 geometry= 'LINESTRING(1 1, 3 3, 2 4, 2 0)';
DECLARE @g4 geometry= 'LINESTRING(1 1, 3 3, 2 4, 2 0, 1 1)';
SELECT @g1.STIsValid(), @g2.STIsValid(), @g3.STIsValid(), @g4.STIsValid();

Le istanze LineString seguenti non sono valide.

DECLARE @g1 geometry = 'LINESTRING(1 4, 3 4, 2 4, 2 0)';
DECLARE @g2 geometry = 'LINESTRING(1 1, 1 1)';
SELECT @g1.STIsValid(), @g2.STIsValid();
Nota di attenzioneAttenzione

Il rilevamento delle sovrapposizioni LineString è basato su calcoli a virgola mobile che non sono esatti.

Esempi

Nell'esempio seguente viene mostrato come creare un'istanza geometryLineString con tre punti e un SRID di 0:

DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1, 2 4, 3 9)', 0);

Ogni punto nell'istanza LineString può contenere valori Z (innalzamento) e M (misura). In questo esempio si aggiungono i valori M all'istanza LineString creata nell'esempio precedente. M e Z possono essere valori Null.

DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1 NULL 0, 2 4 NULL 12.3, 3 9 NULL 24.5)', 0);