Linhas agregadas com base na distância entre segmentos


12

Eu tenho um mapa base do VectorTile que estou otimizando (trabalhando para reduzir o tamanho de blocos individuais), a maior parte do tamanho dos blocos é os dados das estradas (geometria e atributos). Estou trabalhando na simplificação das geometrias de estradas individuais com base no nível de zoom e na agregação de estradas com base nos níveis de zoom.

As estradas são armazenadas em uma tabela Postgis (tabela individual para cada nível de zoom) e eu quero agregar as estradas com base no nível de zoom em que serão exibidas. Por exemplo, na tabela Nível de zoom 5, quero agregar as estradas que estão a uma certa distância uma da outra e criar uma única linha para os segmentos de estrada: insira a descrição da imagem aqui

Como não é possível distinguir estradas individuais nesse nível de zoom: insira a descrição da imagem aqui

Como posso agregar as geometrias da estrada com base na distância entre os segmentos da estrada?

PS: Estou trabalhando no PostGIS e QGIS no Linux, mas estou aberto a soluções usando qualquer plataforma ou tecnologia de código aberto


As estradas têm um ID comum, por exemplo, duas faixas no nível de zoom 5 na A50 são representadas por duas linhas, mas no nível 4 por uma linha e todas elas têm "A50" como atributo?
AnserGIS 26/09

Eles são representados por duas linhas em todos os níveis de zoom. As rodovias e rodovias terão o atributo comum como "M-2" para as rodovias.
precisa saber é o seguinte

Respostas:


5

Você pode tentar procurar nesta opção do sistema operacional Skeletron :

generaliza coleções de linhas para um nível de zoom esférico mercator específico e precisão de pixels, usando um buffer de polígono e um diagrama de voronoi

É baseado em um artigo de 1996 de Alnoor Ladak e Roberto B. Martinez, "Derivação automatizada de alta precisão de rodovias de alta precisão articula a técnica de polígonos de Thiessen"

Existem algumas dependências necessárias:

Dependências necessárias:
- qhull binário ( http://www.qhull.org )
- bem torneado 1.2+ ( http://pypi.python.org/pypi/Shapely )
- pyproj ( http://code.google.com/p / pyproj )
- networkx 1.5+ ( http://networkx.lanl.gov )
- StreetNames 0.1+ ( https://github.com/nvkelso/map-label-style-manual/tree/master/tools/street_names )

Nota: Este é um modelo / ferramenta mais antigo que pode ser aplicado, apenas como uma referência para você explorar.


1
Acho que o skeletron pode ser o caminho a seguir, mas sua resposta é apenas uma cópia do arquivo leia-me e o link para o site da esri está morto. Aqui, um link para mostrar o que ele faz nos mapas: kartographie.geo.tu-dresden.de/downloads/ica-gen/workshop2004/… . que parece ótimo, mas quando tento usá-lo, não sabia como usá-lo. Não encontrei uma documentação, exceto alguns subornos com o comando use ou setup.py --help ... Se alguém explicar como usar essa lib, dou a ele a recompensa.
Hugo Roussaffa - GeoDatup 27/09

Além disso, ele usa estradas OSM como entrada, tanto quanto eu posso ver, eu quero uma solução que possa funcionar em qualquer tipo de linha. Ainda assim, eu realmente amo a ciência por trás disso, gostaria de aplicar isso a outros cenários também.
precisa saber é o seguinte

Atualizei meu post para refletir seus comentários. Agradecemos o feedback.
whyzar

4

O ArcGIS é o mais simples, se é de todo uma opção. Eu sei que o OP especifica o SO, mas menciono isso porque as opções do SO não parecem muito úteis em comparação com: http://resources.arcgis.com/en/help/main/10.1/index.html#/Merge_Divided_Roads/00700000000w000000 /

As respostas a esta pergunta oferecem algumas opções de código aberto: Como mesclar / reduzir linhas de estradas próximas e paralelas (por exemplo, uma faixa de rodagem dupla) em uma única linha?

Se você codificar, poderá calcular a posição média das coordenadas com base em vértices; caso contrário, então:

  1. tampe as estradas com a opção "mesclar tudo" na saída.
  2. Obter a linha central do polígono
  3. Divida as linhas nas junções com JUMP Dividir linhas na interseção de outras linhas
  4. Espacial Junte os atributos novamente

Também não parece haver um bom sistema operacional equivalente à ferramenta ArcGIS 'Polygon to Center line'. Eu poderia sugerir:

uma. Crie o diagrama voronoi e pegue o esqueleto.
b. Crie uma varredura de distância euclidiana e extraia o valor central e converta em uma linha

... provavelmente alguns outros também.

Finalmente, dependendo da escala e da aplicação ... também pode valer a pena excluir uma das duas linhas - a imprecisão será importante?


A opção ArcGIS parece boa, eu vou tentar, mas eu preferiria uma solução de SO. Calcular a posição média das coordenadas com base em vértices é minha estratégia de retorno. Vou tentar todos os métodos que você listou e ver se eles funcionam para mim, obrigado!
Hasan Mustafa

A ferramenta ArcGIS, 'Merge Divided Roads (Cartography)', é exatamente o que estou procurando, mas todo o processamento que estou fazendo é no Linux, usando Postgres e QGIS, para usar a ferramenta necessária para mudar para o Windows .
Hasan Mustafa
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.