MultiLineString
Uma MultiLineString é uma coleção de zero ou mais instâncias de geometry ou de geography LineString.
Instâncias MultiLineString
A ilustração a seguir mostra exemplos de instâncias MultiLineString.
Conforme mostrado na ilustração:
A Figura 1 é uma instância MultiLineString simples cujo limite são os quatro pontos de extremidade de seus dois elementos LineString.
A Figura 2 é uma instância MultiLineString simples porque apenas os pontos de extremidade da interseção de elementos LineString se cruzam. O limite são os dois pontos de extremidade que não se sobrepõem.
A Figura 3 é uma instância MultiLineString não simples porque apenas o interior de um de seus elementos LineString se cruzam. O limite dessa instância MultiLineString são os quatro pontos de extremidade.
A Figura 4 é uma instância MultiLineString não simples, não fechada.
A Figura 5 é uma instância MultiLineString simples, não fechada. Ela não é fechada porque seus elementos LineStrings não estão fechados. Ela é simples porque nenhum dos interiores de qualquer uma das instâncias LineStrings se cruzam.
A Figura 6 é uma instância MultiLineString simples e fechada. Ela é fechada porque todos os seus elementos não estão fechados. Ela é simples porque nenhum de seus elementos se cruzam nos interiores.
Instâncias aceitas
Para uma instância MultiLineString ser aceita, ela precisa estar vazia ou conter apenas instâncias LineString que sejam aceitos. Para obter mais informações sobre instâncias de LineString aceitas, consulte LineString. Veja a seguir exemplos de instâncias MultiLineString aceitas.
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))';
O exemplo a seguir gera um System.FormatException porque a segunda instância LineString não é válida.
DECLARE @g geometry = 'MULTILINESTRING((1 1, 3 5),(-5 3))';
Instâncias válidas
Para que uma instância MultiLineString seja válida, ela deve atender aos seguintes critérios:
Todas as instâncias contendo a instância MultiLineString devem ser instâncias LineString válidas.
Duas instâncias LineString contendo a instância MultiLineString não podem se sobrepor em um intervalo. Apenas em um número finito de pontos, é possível encontrar as instâncias LineString se cruzando ou se tocando umas com as outras, ou com outras instâncias LineString.
O exemplo a seguir mostra três instâncias MultiLineString válidas e uma instância MultiLineString que não é 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 não é válido porque a segunda instância LineString sobrepõe a primeira instância LineString em um intervalo. Elas se tocam em um número infinito de pontos.
Exemplos
O exemplo a seguir cria uma instância de geometry MultiLineString que contém dois elementos LineString com o SRID 0.
DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((0 2, 1 1), (1 0, 1 1))');
Para instanciar essa instância com um SRID diferente, use STGeomFromText() ou STMLineStringFromText(). Também é possível usar Parse() e, em seguida, modificar o SRID, conforme mostrado no exemplo a seguir.
DECLARE @g geometry;
SET @g = geometry::Parse('MULTILINESTRING((0 2, 1 1), (1 0, 1 1))');
SET @g.STSrid = 13;
Consulte também
Referência
STLength (tipo de dados geometry)
STIsClosed (tipo de dados geometry)