Partilhar via


CadeiaDeLinhasMúltiplas

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

Instâncias de MultiLineString

A ilustração abaixo mostra exemplos de casos de MultiLineString.

Exemplos de instâncias de geometria MultiLineString

Conforme mostrado na ilustração:

  • A Figura 1 é uma instância simples MultiLineString cujo limite são os quatro pontos de extremidade de seus dois LineString elementos.

  • Figura 2 é uma instância MultiLineString simples porque apenas as extremidades dos elementos LineString se cruzam. O limite são os dois pontos de extremidade não sobrepostos.

  • A Figura 3 é uma instância não simples MultiLineString porque o interior de um de seus elementos LineString é interseccionado. O limite dessa MultiLineString instância são os quatro pontos de extremidade.

  • A Figura 4 é uma instância complexa e não fechada MultiLineString.

  • A Figura 5 é simples, não fechada MultiLineString. Ele não está fechado porque seus LineStrings elementos não estão fechados. É simples porque nenhum dos interiores de nenhuma das LineStrings instâncias se cruza.

  • A Figura 6 é uma instância simples e fechada MultiLineString . Ele está fechado porque todos os seus elementos estão fechados. É simples porque nenhum de seus elementos se cruza nos interiores.

Instâncias aceitas

Para que uma MultiLineString instância seja aceita, ela deve estar vazia ou composta apenas LineString por intances que são aceitas. Para obter mais informações sobre instâncias aceitas LineString , consulte LineString. Os seguintes são exemplos de instâncias aceitas MultiLineString.

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 LineString instância não é válida.

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

Instâncias válidas

Para que uma MultiLineString instância seja válida, ela deve atender aos seguintes critérios:

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

  2. Nenhuma das duas instâncias de LineString que compõem a instância MultiLineString pode se sobrepor a outra dentro de um mesmo intervalo. As instâncias de LineString só podem se cruzar ou tocar em si mesmas ou em outras instâncias de LineString a um número finito de pontos.

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

Exemplos

O exemplo a seguir cria uma instância simples geometry``MultiLineString que contém dois LineString elementos 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(). Você também pode usar Parse() e 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

STLength (tipo de dados geometria)
STIsClosed (tipo de dados geometria)
LineString
Dados Espaciais (SQL Server)