Compartir a través de


LineString

Es LineString un objeto unidimensional que representa una secuencia de puntos y los segmentos de línea que los conectan.

Instancias de LineString

En la ilustración siguiente se muestran ejemplos de LineString instancias.

Ejemplos de instancias de Geometry LineString

Como se muestra en la ilustración:

  • La figura 1 es una instancia simple y no cerrada LineString .

  • La figura 2 es una instancia nompleada y no cerrada LineString .

  • La figura 3 es una instancia cerrada, sencilla LineString y, por tanto, es un anillo.

  • La figura 4 es una instancia cerrada, nomple LineString y, por lo tanto, no es un anillo.

Instancias aceptadas

Las instancias aceptadas LineString pueden ser entradas en una variable de geometría, pero pueden no ser instancias válidas LineString . Se deben cumplir los siguientes criterios para que se acepte una instancia LineString. La instancia debe estar formada por al menos dos puntos o debe estar vacía. Se aceptan las siguientes instancias de LineString.

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 muestra que se puede aceptar una LineString instancia, pero no válida.

No se acepta la siguiente LineString instancia. Generará una System.FormatException excepción.

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

Instancias válidas

Para que una LineString instancia sea válida, debe cumplir los siguientes criterios.

  1. La LineString instancia debe aceptarse.

  2. Si una LineString instancia no está vacía, debe contener al menos dos puntos distintos.

  3. La LineString instancia no puede superponerse en un intervalo de dos o más puntos consecutivos.

Las instancias siguientes LineString son válidas.

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

Las instancias siguientes LineString no son válidas.

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

Advertencia

La detección de superposiciones se basa en cálculos de LineString punto flotante, que no son exactos.

Ejemplos

En el ejemplo siguiente se muestra cómo crear una geometry``LineString instancia con tres puntos y un SRID de 0:

DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1, 2 4, 3 9)', 0);

Cada punto de la LineString instancia puede contener valores Z (elevación) y M (medida). En este ejemplo se agregan valores M a la LineString instancia creada en el ejemplo anterior. M y Z pueden ser valores NULL.

DECLARE @g geometry;
SET @g = geometry::STGeomFromText('LINESTRING(1 1 NULL 0, 2 4 NULL 12.3, 3 9 NULL 24.5)', 0);

En el ejemplo siguiente se muestra cómo crear una geometry LineString instancia con dos puntos que son los mismos. Una llamada a IsValid indica que la LineString instancia no es válida y una llamada a MakeValid convertirá la LineString instancia en .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

El fragmento de código anterior devolverá lo siguiente:

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

Véase también

STLength (tipo de datos geometry)STStartPoint (tipo de datos geometry)STEndpoint (tipo de datos geometry)STPointN (tipo de datos geometry)STNumPoints (tipo de datos geometry)STIsRing (tipo de datos geometry)STIsClosed (tipo de datos geometry)STPointOnSurface (tipo de datos geometry)Datos espaciales (SQL Server)