Compartilhar via


MultiLineString

Uma MultiLineString é uma coleção de zero ou mais instâncias de geometry ou geographyLineString.

Instâncias MultiLinestring

A ilustração a seguir mostra exemplos de instâncias MultiLineString.

Exemplos das instâncias MultiLineString de geometria

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 possuem interseções internas.

Instâncias aceitas

Para uma instância de MultiLineString ser aceita, ela dever ser vazia ou composta somente por instâncias LineString aceitas. Para obter mais informações sobre instâncias LineString aceitas, consulte LineString. Os exemplos a seguir mostram 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 uma System.FormatException porque a segunda instância LineString é invá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 deverá atender ao seguinte critério:

  1. Todas as instâncias que integram a instância MultiLineString devem ser instâncias LineString válidas.

  2. Duas instâncias LineString que integram a instância MultiLineString não devem se sobrepor em um intervalo. As instâncias LineString podem somente se cruzar ou tocar ou a outras instâncias LineString em um número finito de pontos.

O exemplo a seguir mostra três instâncias MultiLineString válidas e uma instância MultiLineString invá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 é inválida porque a segunda instância LineString sobrepõe a primeira instância LineString em um intervalo. Eles se tocam em um número infinito de pontos.

Exemplos

O exemplo a seguir cria uma instância de geometryMultiLineString 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;