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
LineStringy, por tanto, es un anillo.La figura 4 es una instancia cerrada, nomple
LineStringy, 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
LineStringinstancia debe aceptarse.Si una
LineStringinstancia no está vacía, debe contener al menos dos puntos distintos.La
LineStringinstancia 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)