Partilhar via


MultiLineString

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Ponto de extremidade de análise de SQL no Microsoft Fabric Warehouse no Microsoft Fabric Banco de dados SQL no Microsoft Fabric

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

Instâncias MultiLineString

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

Diagrama de exemplos de instâncias de geometria 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 finais não sobrepostos.

  • 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 MultiLineStringsimples, 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 que uma instância de MultiLineString seja aceita, ela deve estar vazia ou composta apenas por instâncias de LineString que são aceitas. 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 de MultiLineString seja válida, ela deve atender aos seguintes critérios:

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

  2. Não há duas instâncias de LineString que compõem a ocorrência de MultiLineString que possam 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 simples do geometry``MultiLineString , que contém dois elementos de 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;