Jakie jest najlepsze rozwiązanie do tworzenia map internetowych typu open source do obsługi ponad 3000 wielokątów [zamknięte]

12

Mam ponad 3000 wielokątów, które reprezentują zlewnie (18 głównych zlewisk). W pierwszym etapie pokaże się wszystkie 18 zlewni, a ich lista zostanie umieszczona na lewym pasku bocznym. Jeśli jakakolwiek mysz nad mapą wyświetli się tylko wyskakująca nazwa. Jeśli którykolwiek użytkownik kliknie któryś z głównych działów wodnych na mapie, otworzy się wyskakujące okno ze szczegółami. Przy większym powiększeniu pokażą się wszystkie zlewnie.

Proszę o radę, które rozwiązanie typu open source jest najlepsze do obsługi tak dużej liczby wielokątów?

Myślałem o Leaflet lub OpenLayers, ale nie wiem, czy poradzą sobie z dużą ilością wielokątów.

Czy sugerujesz także, aby przechowywać je w mysql lub?

przeciwprąd
źródło
3
Czy potrafisz zrasteryzować te wielokąty? a może korzystasz z serwera obiektów, takiego jak geoserver lub featureserver?
dassouki

Odpowiedzi:

12

Utworzyłbym usługę obrazu (warstwę rastrową) i udostępniłbym ją za pomocą usługi Web Map Service (WMS) . W ten sposób możesz używać dowolnego frameworka API, z którym czujesz się komfortowo, o ile obsługuje on WMS (obsługuje OpenLayers ). Możesz użyć WMS, aby wyświetlić warstwę wszystkich elementów wielokąta, a następnie użyć GetFeatureInfo w WMS, aby pobrać informacje o tym wielokącie.

Jeśli z jakiegokolwiek powodu potrzebujesz danych wektorowych na mapie, możesz je dynamicznie utworzyć po kliknięciu danych odpowiedzi GetFeatureInfo.

CaptDragon
źródło
5

Zobacz TileMill , który może zrasteryzować interakcję UTFGrid do pliku MBTiles i hostować go w MapBox lub implementacji serwera MBTiles typu open source, takiego jak TileStache .

Tutaj jest wiele wielokątów . Takie podejście wymaga rasteryzacji - inaczej piec-kafelków, ale jest w zasadzie jedynym sposobem na robienie tego, co chcesz, bez posiadania ogromnych zasobów serwera, niestandardowej aplikacji lub bardzo ograniczonego zestawu przeglądarek.

tmcw
źródło
Podoba mi się ten przykład. Czy możesz mi powiedzieć, jak mogę zrasteryzować pliki kształtu? W TileMill? Dzięki.
przeciw przepływowi
Tak, to najczęstszy sposób. Oto dokumentacja dodawania podpowiedzi w ten sposób . Jeśli jesteś bardzo uczulony na narzędzia GUI i pro Python / Mapnik, istnieje również trasa cli, która omija to wszystko, ale jest nieco tajemnicza.
tmcw
2

Kluczem do tego problemu będzie zależność od skali i indeksowana przestrzennie baza danych. Powinieneś być w stanie reprezentować zlewnie za pomocą co najmniej dwóch, ewentualnie trzech lub czterech poziomów. Na przykład, możesz podzielić dane na Major (18), Minor (pewna kombinacja wszystkich zlewni środkowej skali, które wszystkie mieszczą się w tym samym Major) i trzeciorzędowy (3000 wielokątów). To dałoby ci trzy różne warstwy / usługi wektorowe.

Użyj zależności skali, aby narysować tylko odpowiednią usługę w zależności od poziomu powiększenia użytkownika.

Użyj bazy danych z indeksowaniem przestrzennym, aby zapewnić szybkie rysowanie usług, i narysuj tylko część potrzebną do wypełnienia bieżącego okna widoku.

Alternatywnie możesz rozważyć utworzenie kafelków map zlewu (ponownie, utworzonych w oparciu o odpowiednie skale dla każdej warstwy) i służyć im w ten sposób.

Na tej stronie istnieje już wiele pytań, które zalecają odpowiednie rozwiązania open source do zastosowania tych strategii.


źródło
0

Oprócz TileMill możesz sprawdzić MangoMap , nie jest to oprogramowanie typu open source, ale obecnie jest bezpłatne i jest w stanie obsługiwać tego rodzaju dane.

[Oświadczenie: Pracuję z MangoMap, ale odpowiadam, ponieważ w tym przypadku jest to właściwe]

ChrisInCambo
źródło