MultiLineString

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

Instancias 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 figura 1 es una instancia sencilla de MultiLineString cuyo límite son los cuatro extremos de sus dos elementos LineString.

  • La figura 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 figura 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 figura 4 es una instancia de MultiLineString no sencilla y sin cerrar.

  • La figura 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 figura 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 interseca en los interiores.

Instancias aceptadas

Para que una instancia de MultiLineString sea aceptada debe estar vacía o comprender solamente instancias de LineString aceptadas. Para obtener más información sobre instancias de LineString aceptadas, vea LineString. A continuación se muestran 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))';

En el ejemplo siguiente se produce una excepción 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 criterios siguientes:

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

  2. Cualesquiera dos instancias de LineString que comprendan la instancia de MultiLineString no se pueden superponer en un intervalo. Las instancias de LineString solo se pueden tocar o intersecar entre sí o con 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 instancia de MultiLineString que no es 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

En el ejemplo siguiente se 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, utilice STGeomFromText() o STMLineStringFromText(). También puede utilizar 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;