Compartilhar via


geo_line_densify()

Converte linhas planas ou arestas de várias linhas em geodésicas adicionando pontos intermediários.

Sintaxe

geo_line_densify(tolerância lineString,, [ preserve_crossing ])

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Digitar Obrigatória Descrição
linhaString dynamic ✔️ Um LineString ou MultiLineString no formato GeoJSON.
tolerance int, longo ou real Define a distância máxima em metros entre a borda plana original e a cadeia de borda geodésica convertida. Os valores suportados estão no intervalo [0.1, 10000]. Se não for especificado, o valor padrão 10 será usado.
preserve_crossing bool Se true, preserva a travessia de borda sobre o antimeridiano. Se não for especificado, o valor padrão false será usado.

Devoluções

Linha densificada no formato GeoJSON e de um tipo de dados dinâmico . Se a linha ou a tolerância for inválida, a consulta produzirá um resultado nulo.

Observação

As coordenadas geoespaciais são interpretadas como representadas pelo sistema de referência de coordenadas WGS-84 .

Definição de LineString

dynamic({"type": "LineString","coordenadas": [[lng_1,lat_1], [lng_2,lat_2], ..., [lng_N,lat_N]]})

dynamic({"type": "MultiLineString","coordenadas": [[line_1, line_2, ..., line_N]]})

  • A matriz de coordenadas LineString deve conter pelo menos duas entradas.
  • As coordenadas [longitude, latitude] devem ser válidas. A longitude deve ser um número real no intervalo [-180, +180] e a latitude deve ser um número real no intervalo [-90, +90].
  • O comprimento da borda deve ser inferior a 180 graus. Será escolhida a aresta mais curta entre os dois vértices.

Restrições

  • O número máximo de pontos na linha densificada é limitado a 10485760.
  • O armazenamento de linhas em formato dinâmico tem limites de tamanho.

Motivação

  • O formato GeoJSON define uma aresta entre dois pontos como uma linha cartesiana reta enquanto geo_line_densify() usa geodésica.
  • A decisão de usar bordas geodésicas ou planas pode depender do conjunto de dados e é especialmente relevante em bordas longas.

Exemplos

O exemplo a seguir densifica uma estrada na ilha de Manhattan. A borda é curta e a distância entre a borda plana e sua contraparte geodésica é menor do que a distância especificada pela tolerância. Como tal, o resultado mantém-se inalterado.

print densified_line = tostring(geo_line_densify(dynamic({"type":"LineString","coordinates":[[-73.949247, 40.796860],[-73.973017, 40.764323]]})))

Saída

densified_line
{"type":"LineString","coordenadas":[[-73.949247, 40.796860], [-73.973017, 40.764323]]}

O exemplo a seguir densifica uma borda de ~130 km de comprimento

print densified_line = tostring(geo_line_densify(dynamic({"type":"LineString","coordinates":[[50, 50], [51, 51]]})))

Saída

densified_line
{"type":"LineString","coordenadas":[[50,50],[50.125,50.125],[50.25,50.25],[50.375,50.375],[50.5,50.5],[50.625,50.625],[50.75,50.75],[50.875,50.875],[51,51]]}

O exemplo a seguir retorna um resultado nulo devido à entrada de coordenada inválida.

print densified_line = geo_line_densify(dynamic({"type":"LineString","coordinates":[[300,1],[1,1]]}))

Saída

densified_line

O exemplo a seguir retorna um resultado nulo devido à entrada de tolerância inválida.

print densified_line = geo_line_densify(dynamic({"type":"LineString","coordinates":[[1,1],[2,2]]}), 0)

Saída

densified_line