Partilhar via


MultiLineString

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceEndpoint de análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de dados SQL no Microsoft Fabric

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

Instâncias MultiLineString

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

Diagrama de exemplos de instâncias de geometria MultiLineString.

Como mostra a ilustração:

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

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

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

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

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

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

Instâncias aceitadas

Para que uma instância MultiLineString seja aceita, ela deve estar vazia ou composta apenas de instâncias LineString que são aceitas. Para obter mais informações sobre instâncias LineString aceitas, consulte LineString. A seguir estão 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 lança um System.FormatException porque a segunda instância de 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:

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

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

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 ocorrência de LineString se sobrepõe à primeira ocorrência de LineString em um intervalo. Eles tocam em um número infinito de pontos.

Examples

O exemplo a seguir cria uma instância simples geometry``MultiLineString contendo 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;