W jaki sposób etykiety są dynamicznie umieszczane na linii lub wielokącie?


9

Zastanawiałem się, czy ktoś znał matematykę lub zasoby do nauki matematyki, aby znaleźć idealną pozycję, skalę i obrót etykiety linii lub wielokąta na mapie?

Do tej pory najbardziej znajduję środek ciężkości wielokąta (choć nie jest to idealne rozwiązanie dla wielokątów wklęsłych).


Myślę, że najlepiej to zrobić ręcznie.
— Jonas

Zasoby powiązane: citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.54.8844 Złożoność obliczeniowa umieszczania etykiet kartograficznych. Cytowanie obejmuje inne powiązane odniesienia.
— glennon

Odpowiedzi:




2

Centroid nigdy nie jest odpowiedzią, ale jest to dobry wstępny przypuszczenie. Algorytmy, które są najłatwiejsze do zaimplementowania, które rozwiązują podobne problemy, zwykle działają, wypróbowując kilka powtarzalnych pseudolosowych pozycji i oceniając je w jakiś sposób, zachowując najlepsze miejsca. Do dalszej lektury zacznę od czytania algorytmów pakowania bin i biorę go stamtąd.


1

Etykietowanie to paskudne przedsięwzięcie.

Na małą skalę: masz problemy z nakładaniem się etykiet, więc które z nich usuwasz lub które powinny być pokazane.

Na dużą skalę: jeśli masz duży wielokąt, gdzie wyświetlasz etykietę. Czy wyświetlasz go wiele razy?


0

Widziałem mapy, w których obliczają po prostu obwiednię złożonego wielokąta i umieszczają etykietę na środku tego.

W przypadku prostych linii zwykle jest to tylko środek dwóch punktów końcowych.

Wydaje mi się, że tak naprawdę zależy tylko od tego, czego oczekujesz od swoich danych i jak ważna jest lokalizacja etykiety.


3
Co słychać w głosowaniu? Komentarz może być przydatny.
— Jon Bringhurst

0

Możesz sprawdzać kod w GeoTools i GeoServer, jeśli grok java - jest to ciągle ewoluujący problem, ponieważ ludzie wciąż wymyślają nowe przypadki narożne, które wymagają naprawy.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.