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 .
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.
- 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 (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)