Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
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.
La
LineString
instancia debe aceptarse.Si una
LineString
instancia no está vacía, debe contener al menos dos puntos distintos.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)