Estou fazendo um mapa contendo informações sobre transporte público: ônibus, bondes, etc. O mapa terá uma camada contendo, por exemplo, as linhas de bonde. Cada linha tem sua própria cor e é representada por uma geometria de sequência de linhas.
O problema é que muitas das linhas têm partes sobrepostas, onde mais de uma linha de bonde cobre a mesma seção. Para mostrar isso ao usuário, eu gostaria que as linhas fossem paralelas umas às outras em vez de serem desenhadas uma sobre a outra. Por exemplo, veja como o Google Maps mostra as linhas do metrô de Nova York.
Suspeito que este seja um problema bastante comum em cartografia, mas não sei que terminologia devo procurar.
Estou usando PostGIS / GeoServer / OpenLayers como minha pilha, mas qualquer solução de código aberto seria aceitável.
Respostas:
Se você estiver interessado em aprender mais sobre essa área, o problema será denominado deslocamento cartográfico e seu aspecto da generalização cartográfica .
Alguns artigos discutindo deslocamento e abordagens para lidar com o problema:
Bader, Matthias. 2001. Métodos de minimização de energia para deslocamento de feições na generalização de mapas.
Steiniger, S. Tefan S. e S. Iegfried M. Eier. Cobras: uma técnica para suavização e deslocamento de linhas na generalização de mapas: 1-11.
Ware, Mark J e Christopher B Jones. 1998. Resolução de Conflitos na Generalização de Mapas Utilizando Melhoria Iterativa. GeoInformatica 2, no. 4: 383-407 +.
fonte
Esse problema é muito típico na generalização cartográfica. Existem métodos automatizados para isso, mas ainda não há implementações disponíveis.
Métodos baseados em " vigas " e " cobras " fornecem resultados eficientes para resolver esses conflitos cartográficos de dados da rede (consulte também as referências fornecidas pelo scw ). Aqui estão alguns resultados dos algoritmos de vigas nos dados da estrada:
Antes:
Depois de:
Veja também este documento e esta apresentação que explicam como fazer essa transformação .
EDIT: Eu nunca testei, mas parece que há algo relacionado a cobras no GRASS. Veja aqui .
fonte
Não conheço uma solução, mas acho que o termo que você procura é "resolução de conflitos" - um tópico de generalização de mapa. Uma pesquisa no Google em "conflitos de generalização de mapa" mostra algumas informações interessantes - mas não sei se há muito uso prático.
fonte
Nas implementações atuais, você pode encontrar "Deslocamento" ou "Deslocamento". Usando sua pilha atual, parece um pouco difícil obter linhas paralelas automaticamente:
Para resumir: A maneira mais fácil que eu conheço seria usar o UMN Mapserver e o valor de Offset lá. Exemplo de estilo para seu mapfile:
fonte
Se você estiver desenhando camadas de linhas que se sobrepõem, há várias opções para permitir que o visualizador veja todas as linhas.
Não uso o GeoServer, mas sei que o MapServer tem a funcionalidade para fazer todas essas coisas. É provável que o GeoServer também o faça.
fonte