LineString
Se aplica a: SQL Server
Base de datos de Azure SQL
Azure SQL Managed Instance
LineString es 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 instancias de 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 se pueden especificar en una variable geometry, pero puede 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 . 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.
- La instancia de LineString debe ser aceptada.
- Si una instancia de LineString no está vacía, debe contener dos puntos distintos por lo menos.
- 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 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);
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 y una llamada a MakeValid
convertirá la instancia de LineString en un 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 conjunto de resultados es el siguiente:
LINESTRING(1 3, 1 3) is not a valid LineString
POINT(1 3) is a valid Point.
Consulte 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)