Tworzę mapę zawierającą informacje o transporcie publicznym: autobusy, tramwaje itp. Mapa będzie miała warstwę zawierającą na przykład linie tramwajowe. Każda linia ma swój własny kolor i jest reprezentowana przez geometrię ciągu linii.
Problem polega na tym, że wiele linii ma zachodzące na siebie części, w których więcej niż jedna linia tramwajowa obejmuje ten sam odcinek. Aby pokazać to użytkownikowi, wolałbym, aby linie biegły równolegle do siebie, zamiast być nanoszone jeden na drugim. Na przykład zobacz, jak Mapy Google pokazują linie metra w Nowym Jorku.
Podejrzewam, że jest to dość powszechny problem w kartografii, ale nie wiem, jakiej terminologii powinienem szukać.
Używam PostGIS / GeoServer / OpenLayers jako mojego stosu, ale każde rozwiązanie typu open source byłoby dopuszczalne.
Odpowiedzi:
Jeśli chcesz dowiedzieć się więcej o tym obszarze, problem nazywa się przesunięciem kartograficznym i jest jednym z aspektów uogólnienia kartograficznego .
Kilka artykułów omawiających przemieszczenie i podejścia do rozwiązania problemu:
Bader, Matthias. 2001. Metody minimalizacji zużycia energii w przypadku przemieszczania elementów w generalizacji mapy.
Steiniger, S Tefan S i S Iegfried M Eier. Węże: technika wygładzania i przemieszczania linii w generalizacji mapy: 1-11.
Ware, Mark J i Christopher B Jones. 1998. Rozwiązywanie konfliktów w generalizacji map za pomocą iteracyjnego ulepszania. GeoInformatica 2, no. 4: 383–407 +.
źródło
Ten problem jest bardzo typowy w uogólnieniu kartograficznym. Istnieją do tego zautomatyzowane metody, ale nie są jeszcze dostępne żadne implementacje.
Metody oparte na „ wiązkach ” i „ wężach ” dają skuteczne wyniki w rozwiązywaniu tych konfliktów kartograficznych danych sieciowych (patrz także referencje podane przez scw ). Oto niektóre wyniki algorytmów wiązek dla danych drogowych:
Przed:
Po:
Zobacz także ten artykuł i prezentację, które wyjaśniają, jak to zrobić tę transformację .
EDYCJA: Nigdy go nie testowałem, ale wydaje się, że w GRASS jest coś związanego z wężami. Zobacz tutaj .
źródło
Nie znam rozwiązania, ale myślę, że termin, którego szukasz, to „rozwiązywanie konfliktów” - temat uogólnienia mapy. Wyszukiwanie w Google „konfliktów uogólnienia mapy” pokazuje kilka interesujących informacji - ale nie wiem, czy ma to praktyczne zastosowanie.
źródło
W aktualnych implementacjach często można znaleźć „Offset” lub „Dislocation”. Korzystając z aktualnego stosu, uzyskanie automatycznych linii równoległych wydaje się nieco trudne:
Podsumowując: Najłatwiejszy sposób, jaki znam, to użycie UMN Mapserver i wartości Offset. Przykładowy styl pliku map:
źródło
Jeśli rysujesz warstwy linii, które się nakładają, masz kilka opcji, które pozwalają widzowi zobaczyć wszystkie linie.
Nie używam GeoServera, ale wiem, że MapServer ma funkcjonalność pozwalającą wykonywać wszystkie te czynności. Prawdopodobnie GeoServer również to robi.
źródło