Condividi tramite


LineString

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure

LineString indica un oggetto unidimensionale che rappresenta una sequenza di punti e i segmenti lineari che li connettono.

Istanze LineString

Nella figura seguente vengono illustrati esempi di istanze LineString .

Esempi di istanze di geometria LineString

Come indicato 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 di input in una variabile geometry, ma è possibile che non siano istanze LineString valide. Per poter essere accettata, un'istanza LineString deve soddisfare i criteri seguenti. L'istanza deve essere composta da almeno due punti distinti e deve essere vuota. Di seguito sono riportate le istanze LineString 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)';  

@g3 indica che un'istanza LineString può essere accettata, ma non è valida.

L'istanza LineString seguente non viene accettata. Verrà generata un'eccezione System.FormatException.

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

Istanze valide

Per poter essere valida, un'istanza LineString deve soddisfare i criteri seguenti.

  1. L'istanza LineString deve essere accettata.
  2. Se un'istanza LineString non è vuota, deve contenere almeno due punti distinti.
  3. L'istanza LineString non può sovrapporsi a un intervallo di due o più punti consecutivi.

Di seguito sono riportate le istanze LineString 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();  

Di seguito sono riportate le istanze LineString non 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();  

Avviso

Il rilevamento delle sovrapposizioni di LineString è basato su calcoli a virgola mobile inesatti.

Esempi

Esempio A.

L'esempio seguente illustra come creare un'istanza geometry``LineString con tre punti e un SRID di 0:

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

Esempio B.

Ogni punto nell'istanza LineString può contenere valori Z (innalzamento) e M (misura). In questo esempio vengono aggiunti 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);  

Esempio C.

Nell'esempio seguente viene illustrato come creare un'istanza geometry LineString con due punti uguali. Una chiamata a IsValid indica che l'istanza LineString non è valida e una chiamata a MakeValid convertirà l'istanza LineString in un'istanza Point.

DECLARE @g geometry  
SET @g = geometry::STGeomFromText('LINESTRING(1 3, 1 3)',0);  
IF @g.STIsValid() = 1  
  BEGIN  
     SELECT @g.ToString() + ' is a valid LineString.';    
  END  
ELSE  
  BEGIN  
     SELECT @g.ToString() + ' is not a valid LineString.';  
     SET @g = @g.MakeValid();  
     SELECT @g.ToString() + ' is a valid Point.';    
  END  

Il set di risultati è il seguente.

LINESTRING(1 3, 1 3) is not a valid LineString  
POINT(1 3) is a valid Point.  

Vedi anche

STLength (tipo di dati geometry)
STStartPoint (tipo di dati geometry)
STEndpoint (tipo di dati geometry)
STPointN (tipo di dati geometry)
STNumPoints (tipo di dati geometry)
STIsRing (tipo di dati geometry)
STIsClosed (tipo di dati geometry)
STPointOnSurface (tipo di dati geometry)
Dati spaziali (SQL Server)