MultiLineString

Una MultiLineString es una colección de cero o más instancias geometry o geography de LineString.

Instancias de MultiLineString

La ilustración siguiente muestra ejemplos de instancias de MultiLineString.

Ejemplos de instancias MultiLineString de geometry

Como se muestra en la ilustración:

  • La ilustración 1 es una instancia sencilla de MultiLineString cuyo límite son los cuatro extremos de sus dos elementos LineString.

  • La ilustración 2 es una instancia sencilla de MultiLineString porque sólo forman una intersección los extremos de los elementos LineString. El límite lo constituyen los dos extremos que no se superponen.

  • La ilustración 3 es una instancia no sencilla de MultiLineString porque el interior de uno de sus elementos LineString forma parte de una intersección. El límite de esta instancia de MultiLineString lo constituyen los cuatro extremos.

  • La ilustración 4 es una instancia de MultiLineString no sencilla y sin cerrar.

  • La ilustración 5 es una instancia de MultiLineString sencilla y sin cerrar. No está cerrada porque no lo están sus elementos LineStrings. Es sencilla porque ninguno de los interiores de ninguna de las instancias de LineStrings forma parte de una intersección.

  • La ilustración 6 es una instancia de MultiLineString sencilla y cerrada. Está cerrada porque lo están todos sus elementos. Es sencilla porque ninguno de sus elementos forma parte de una intersección con los interiores.

Instancias aceptadas

Para que una instancia de MultiLineString se acepte, debe estar vacía o formada únicamente por instancias de LineString aceptadas. Para obtener más información sobre las instancias de LineString aceptadas, vea LineString. Los siguientes son ejemplos de instancias de MultiLineString aceptadas.

DECLARE @g1 geometry = 'MULTILINESTRING EMPTY';
DECLARE @g2 geometry = 'MULTILINESTRING((1 1, 3 5), (-5 3, -8 -2))';
DECLARE @g3 geometry = 'MULTILINESTRING((1 1, 5 5), (1 3, 3 1))';
DECLARE @g4 geometry = 'MULTILINESTRING((1 1, 3 3, 5 5),(3 3, 5 5, 7 7))';

El siguiente ejemplo produce una System.FormatException porque la segunda instancia de LineString no es válida.

DECLARE @g geometry = 'MULTILINESTRING((1 1, 3 5),(-5 3))';

Instancias válidas

Para que una instancia de MultiLineString sea válida, debe cumplir los siguientes criterios:

  1. Todas las instancias que comprenden la instancia de MultiLineString deben ser instancias de LineString válidas.

  2. Ninguna de las dos instancias de LineString que comprenden la instancia de MultiLineString puede superponerse en un intervalo. Las instancias de LineString pueden solo cruzarse o tocarse así mismas o a otras instancias de LineString en un número finito de puntos.

En el ejemplo siguiente se muestran tres instancias de MultiLineString válidas y una no válida.

DECLARE @g1 geometry = 'MULTILINESTRING EMPTY';
DECLARE @g2 geometry = 'MULTILINESTRING((1 1, 3 5), (-5 3, -8 -2))';
DECLARE @g3 geometry = 'MULTILINESTRING((1 1, 5 5), (1 3, 3 1))';
DECLARE @g4 geometry = 'MULTILINESTRING((1 1, 3 3, 5 5),(3 3, 5 5, 7 7))';
SELECT @g1.STIsValid(), @g2.STIsValid(), @g3.STIsValid(), @g4.STIsValid();

@g4 no es válida porque la segunda instancia de LineString se superpone con la primera instancia de LineString en un intervalo. Se tocan en un número infinito de puntos.

Ejemplos

El ejemplo siguiente crea una instancia sencilla de geometryMultiLineString que contiene dos elementos LineString con un SRID de 0.

DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((0 2, 1 1), (1 0, 1 1))');

Para crear instancias de esta instancia con otro SRID, use STGeomFromText() o STMLineStringFromText(). También puede usar Parse() y, a continuación, modificar el SRID, como se muestra en el ejemplo siguiente.

DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((0 2, 1 1), (1 0, 1 1))');
SET @g.STSrid = 13;