LineStringLineString

LineString indica un oggetto unidimensionale che rappresenta una sequenza di punti e i segmenti lineari che li connettono.A LineString is a one-dimensional object representing a sequence of points and the line segments connecting them.

Istanze LineStringLineString Instances

Nella figura seguente vengono illustrati esempi di istanze LineString .The illustration below shows examples of LineString instances.

Esempi di istanze di geometria LineStringExamples of geometry LineString instances

Come indicato nell'illustrazione:As shown in the illustration:

  • La figura 1 rappresenta un'istanza LineString semplice non chiusa.Figure 1 is a simple, nonclosed LineString instance.

  • La figura 2 rappresenta un'istanza LineString non semplice e non chiusa.Figure 2 is a nonsimple, nonclosed LineString instance.

  • La figura 3 rappresenta un'istanza LineString semplice chiusa che, di conseguenza, è un anello.Figure 3 is a closed, simple LineString instance, and therefore is a ring.

  • La figura 4 rappresenta un'istanza LineString non semplice chiusa che, di conseguenza, non è un anello.Figure 4 is a closed, nonsimple LineString instance, and therefore is not a ring.

Istanze accettateAccepted Instances

Le istanze LineString accettate possono essere di input in una variabile geometry, ma è possibile che non siano istanze LineString valide.Accepted LineString instances can be input into a geometry variable, but they may not be valid LineString instances. Per poter essere accettata, un'istanza LineString deve soddisfare i criteri seguenti.The following criteria must be met for a LineString instance to be accepted. L'istanza deve essere composta da almeno due punti distinti e deve essere vuota.The instance must be formed of at least two points or it must be empty. Di seguito sono riportate le istanze LineString accettate.The following LineString instances are accepted.

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.@g3 shows that a LineString instance can be accepted, but not valid.

L'istanza LineString seguente non viene accettata.The following LineString instance is not accepted. Verrà generata un'eccezione System.FormatException.It will throw a System.FormatException.

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

Istanze valideValid Instances

Per poter essere valida, un'istanza LineString deve soddisfare i criteri seguenti.For a LineString instance to be valid it must meet the following criteria.

  1. L'istanza LineString deve essere accettata.The LineString instance must be accepted.

  2. Se un'istanza LineString non è vuota, deve contenere almeno due punti distinti.If a LineString instance is not empty then it must contain at least two distinct points.

  3. L'istanza LineString non può sovrapporsi a un intervallo di due o più punti consecutivi.The LineString instance cannot overlap itself over an interval of two or more consecutive points.

    Di seguito sono riportate le istanze LineString valide.The following LineString instances are valid.

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.The following LineString instances are not valid.

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.The detection of LineString overlaps is based on floating-point calculations, which are not exact.

EsempiExamples

L'esempio seguente illustra come creare un'istanza geometry``LineString con tre punti e un SRID di 0:The following example shows how to create a geometry``LineString instance with three points and an SRID of 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).Each point in the LineString instance may contain Z (elevation) and M (measure) values. In questo esempio vengono aggiunti i valori M all'istanza LineString creata nell'esempio precedente.This example adds M values to the LineString instance created in the example above. M e Z possono essere valori Null.M and Z can be null values.

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.The following example shows how to create a geometry LineString instance with two points that are the same. Una chiamata a IsValid indica che l'istanza LineString non è valida e una chiamata a MakeValid convertirà l'istanza LineString in un'istanza Point.A call to IsValid indicates that the LineString instance is not valid and a call to MakeValid will convert the LineString instance into a 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:The above code snippet will return the following:

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

Vedere ancheSee Also

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