Compartir a través de


LineString

Se aplica a: Sql Server Azure SQL Database Azure SQL Instancia administrada punto de conexión de SQL Analytics en Microsoft Fabric Warehouse en la base de datos SQL de Microsoft Fabric en Microsoft Fabric

LineString es un objeto unidimensional que representa una secuencia de puntos y los segmentos de línea que los conectan en SQL Motor de base de datos datos espaciales.

Instancias de LineString

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

Diagrama de ejemplos de instancias de Geometry LineString.

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 pueden ser entradas en una variable de geometría, pero es posible que no sean instancias de LineString válidas. Los siguientes criterios se deben cumplir para que una instancia de LineString sea aceptada. La instancia de estar formada como mínimo 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 . Produce una System.FormatExceptionexcepción .

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

Instancias válidas

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

  1. La instancia de LineString debe ser aceptada.
  2. Si una instancia de LineString no está vacía, debe contener dos puntos distintos por lo menos.
  3. La instancia de LineString no se puede superponer sobre un intervalo de dos o más puntos consecutivos.

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

Advertencia

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

Ejemplos

Ejemplo A.

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

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

Ejemplo B.

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 NULL valores.

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

Ejemplo C.

En el ejemplo siguiente se muestra cómo crear una instancia de geometry LineString con dos puntos que son iguales. Una llamada a IsValid indica que la instancia de LineString no es válida. Una llamada a convierte MakeValid la instancia de LineString en un punto.

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  

Este es el conjunto de resultados.

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