Como os rótulos são colocados dinamicamente em uma linha ou polígono?


9

Eu queria saber se alguém sabia a matemática envolvida, ou recursos para aprender a matemática envolvida, em encontrar a posição ideal, escala e rotação de um rótulo para uma linha ou polígono em um mapa?

O máximo que tenho até agora é encontrar o centróide para um polígono (embora não seja o ideal para polígonos côncavos).


Eu acho que é melhor fazer isso manualmente.
Jonas

Recurso relacionado: citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.54.8844 A complexidade computacional da colocação de etiquetas cartográficas. A citação inclui outras referências associadas.
Glennon

Respostas:




2

O centróide nunca é a resposta, mas é um bom palpite inicial. Os algoritmos mais fáceis de implementar que resolvem problemas semelhantes geralmente operam tentando algumas posições pseudo-aleatórias reproduzíveis e pontuando-as de alguma forma, mantendo os melhores pontos. Para uma leitura mais aprofundada, começaria lendo sobre os algoritmos de empacotamento de lixeira e a partir daí.


1

Rotular é um esforço desagradável.

Em pequena escala: você tem problemas de sobreposição de etiquetas, portanto, qual deles você remove ou deve ser mostrado.

Em grande escala: se você possui um polígono grande, onde exibe o rótulo. Você o exibe várias vezes.


0

Eu vi mapas nos quais eles apenas calculam uma caixa delimitadora para um polígono complexo e colocam o rótulo no centro disso.

Para linhas simples, geralmente é apenas o meio dos dois pontos de extremidade.

Eu acho que depende realmente do que você espera que seus dados sejam e da importância da localização do rótulo.


3
O que há com o voto negativo? Um comentário pode ser útil.
precisa

0

Você pode inspecionar o código no GeoTools e no GeoServer se você gosta de java - é um problema em constante evolução, pois as pessoas continuam apresentando novos casos de canto que precisam ser corrigidos.

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.