LineString
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)';
In @g3
viene illustrato 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ò sovrapporti a un intervallo di due o più punti consecutivi.
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();
Avviso
Il rilevamento delle sovrapposizioni di LineString
è basato su calcoli a virgola mobile inesatti.
Esempio
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);
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);
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 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 frammento di codice precedente restituirà quando segue:
LINESTRING(1 3, 1 3) is not a valid LineString
POINT(1 3) is a valid Point.
Vedere 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)