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 .
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.
- L'istanza LineString deve essere accettata.
- Se un'istanza LineString non è vuota, deve contenere almeno due punti distinti.
- 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.