Come vengono posizionate dinamicamente le etichette su una linea o un poligono?


9

Mi chiedevo se qualcuno conoscesse la matematica coinvolta o le risorse per apprendere la matematica coinvolta nel trovare la posizione, la scala e la rotazione ideali di un'etichetta per una linea o un poligono su una mappa?

Il massimo che ho finora è trovare il centroide per un poligono (anche se non è l'ideale per i poligoni concavi).


Immagino sia meglio farlo manualmente.
Jonas,

Risorse correlate: citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.54.8844 La complessità computazionale del posizionamento di etichette cartografiche. La citazione include altri riferimenti associati.
Glennon,

Risposte:




2

Il centroide non è mai la risposta, ma è una buona ipotesi iniziale. Gli algoritmi più facili da implementare che risolvono problemi simili di solito operano provando alcune posizioni pseudo-casuali riproducibili e segnandole in qualche modo, mantenendo i punti migliori. Per ulteriori letture vorrei iniziare leggendo su algoritmi di imballaggio bin e prendere da lì.


1

L'etichettatura è una brutta impresa.

Su piccola scala: hai problemi di sovrapposizione delle etichette, quindi quale rimuovi o dovrebbe essere mostrato.

Su larga scala: se hai un poligono grande, dove visualizzi l'etichetta. Lo visualizzi più volte.


0

Ho visto mappe in cui calcolano solo un rettangolo di selezione per un poligono complesso e posizionano l'etichetta al centro di quello.

Per linee semplici, di solito è solo la metà dei due endpoint.

Immagino che dipenda solo da cosa ti aspetti che siano i tuoi dati e da quanto sia importante la posizione dell'etichetta.


3
Che succede con il downvote? Un commento potrebbe essere utile.
Jon Bringhurst,

0

È possibile ispezionare il codice in GeoTools e GeoServer se si cerca java: si tratta di un problema in continua evoluzione poiché le persone continuano a trovare nuovi casi angolari che devono essere riparati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.