LineString

Un elemento 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 figura 1 es una instancia de LineString sencilla y sin cerrar.

  • La figura 2 es una instancia de LineString no sencilla y sin cerrar.

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

  • La figura 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 introducir en una variable geometry, pero pueden no ser instancias de LineString válidas. Para que una instancia de LineString sea aceptada se deben cumplir los siguientes criterios. La instancia debe estar formada por al menos dos puntos o debe estar vacía. Las siguientes instancias de LineString son aceptadas.

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 una instancia de LineString puede ser aceptada, pero no válida.

La siguiente instancia de LineString no es aceptada. Producirá una excepción System.FormatException.

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

Instancias válidas

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

  1. La instancia de LineString debe ser aceptada.

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

  3. La instancia de LineString no se puede superponer consigo misma en 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 LineString de tipo geometry 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);