Condividi tramite


LineString

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

LineString è un oggetto unidimensionale che rappresenta una sequenza di punti e i segmenti di linea che li collegano nei dati spaziali del motore di database SQL.

Istanze LineString

La figura seguente mostra esempi di istanze LineString .

Diagramma di esempi di istanze LineString geometry.

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 inserite in una variabile geometry, ma potrebbero non essere 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. Genera 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 (elevazione) e M (misura). In questo esempio vengono aggiunti valori M all'istanza LineString creata nell'esempio precedente. M e Z possono essere NULL valori.

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. Una chiamata a MakeValid converte l'istanza LineString in un oggetto 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.