LineString

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

Instancias de LineString

La ilustración siguiente muestra ejemplos de instancias de LineString.

Ejemplos de instancias LineString de geometry

Como se muestra en la ilustración:

  • La ilustración 1 es una instancia de LineString sencilla y sin cerrar.

  • La ilustración 2 es una instancia de LineString no sencilla y sin cerrar.

  • La ilustración 3 es una instancia de LineString cerrada y sencilla; por ello, es un anillo.

  • La ilustración 4 es una instancia de LineString cerrada y no sencilla; por ello, no es un anillo.

Instancias aceptadas

Las instancias de LineString aceptadas se pueden especificar en una variable geometry, pero no pueden ser instancias de LineString válidas. Los siguientes criterios se deben cumplir para que se acepte una instancia de LineString. La instancia debe estar formada al menos por 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 instancia de LineString, pero no es válida.

No se acepta la siguiente instancia de LineString. Producirá una System.FormatException.

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

Instancias válidas

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

  1. El tipo de instancia de LineString debe aceptarse.

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

  3. La instancia de LineString no se puede superponer sobre un intervalo.

Las siguientes instancias de 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 siguientes instancias de 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();
Nota de advertenciaAdvertencia

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

Ejemplos

En el ejemplo siguiente se muestra cómo crear una instancia de geometry de tipo LineString 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 instancia de LineString puede contener valores Z (elevación) y M (medida). Este ejemplo agrega valores M a la instancia de LineString creada en el ejemplo anterior. M y Z pueden ser valores nulos.

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