Szukam niewielkiego i łatwego sposobu na zaprezentowanie jednego lub więcej kształtów wielokątów online (a dokładniej na miejskiej stronie internetowej bez istniejącej infrastruktury map-serwerów). W tej chwili pracuję z QGIS i wolałbym pozostać otwartym oprogramowaniem (nie ma budżetu na duże inwestycje w oprogramowanie).
Badanie tego tematu zaowocowało przytłaczającą liczbą możliwych podejść i wprawiło mnie w zakłopotanie. To czego szukam to
- możliwość wyświetlania skategoryzowanych wielokątów na mapie tematycznej (- jeśli to możliwe, fajnie byłoby uzyskać wyskakujące okienka lub móc uzyskać informacje o atrybutach - ale jest to wysoce opcjonalne)
- Wolałbym wykonywać większość pracy (stylizacja itp.) W QGIS
- OSM jako mapa bazowa byłaby całkowicie w porządku
Do tej pory niestandardowe kafelki mapy na mapie podstawowej OSM wyglądały tak, jak szukam (czy jest lepsze rozwiązanie)? Jaki byłby najlepszy sposób na stworzenie tych płytek?
qgis
openstreetmap
openlayers
web-mapping
tiles
SAnderka
źródło
źródło
Odpowiedzi:
Aby w prosty sposób to zrobić, zaczynając od QGIS, możesz użyć QGIS Mapserver, który może obsługiwać mapy, które projektujesz za pomocą normalnego interfejsu QGIS. Alternatywnie możesz wybrać GeoServer, który jest oparty na Javie i prawdopodobnie łatwiejszy do zainstalowania. Ponieważ oba programy obsługują mapy przy użyciu otwartych standardów, jeśli zaczniesz od jednego i musisz je przełączyć później, nie ma potrzeby zmiany klienta.
Po skonfigurowaniu systemu do obsługi map WMS będziesz potrzebować interfejsu klienta. Polecam OpenLayers jak to jest dość proste do uruchomienia i łatwo rozszerzalna. Bez problemu obsługuje płytki WMS, WMST i OSM.
Ostatecznie może być konieczne przejście do kafelków dla warstw WMS (powiedz, że zaczynasz otrzymywać więcej niż 50-100 żądań na minutę na rozsądnym sprzęcie), a następnie przyjrzyj się umieszczeniu pamięci podręcznej kafelków przed serwerem mapy. Jeśli korzystałeś z GeoServer, możesz użyć GeoWebCache, który jest wbudowany lub możesz użyć TileCache .
źródło
Wszystko to można zrobić w QGIS i
ogr2layers
wtyczce. Przepływ pracy jest prosty:Styluj swoje dane w QGIS. Użyj starej symboliki, ponieważ miałem problemy z
New Symbology
używaniemogr2layers
wtyczki.Uruchom
ogr2layers
wtyczkę i zdefiniuj ustawienia openlayers (takie jak rozmiar mapy, elementy sterujące mapą, mapa bazowa itp.). Spowoduje to utworzenie katalogu zawierającegoindex.html
i twoje warstwy danych przekonwertowane jakogeojson
pliki.Prześlij katalog na serwer WWW.
Pamiętaj, że dotyczy to tylko prostej mapy internetowej. Aby utworzyć niestandardowe mapy bazowe i inne funkcje mapowania, sprawdź odpowiedzi ianta i Petera.
źródło
Inną opcją jest TileMill - obsługuje kafelkowanie, interakcję i kartografię w łatwym w obsłudze interfejsie internetowym, w tym definicje stylów w języku proto-CSS o nazwie cascadenik . Za pomocą TileMill możesz wypakować pliki mbtiles , które można wykorzystać z czymś takim jak TileStream . To powiedziawszy, wciąż istnieją pewne sztuczki z wdrażaniem mapowanych wyjść, ale dałoby to dobrą platformę do generowania płytek wysokiej jakości.
źródło
Postanowiłem podać informacje, w jaki sposób w końcu wybrałem usługę map kafelkowych. Czysty JavaScript i GeoJSON nie były rozwiązaniem, ponieważ muszę obsługiwać około 40 000 wielokątów i 33 000 punktów. Więc poszedłem na płytki. Aha, i nadal nie mam dostępu do serwera root, więc nie mogę skonfigurować GeoServera ani czegoś podobnego (w tym momencie nie byłby to wykonalny finansowo dla jednego klienta)
Po kilku badaniach i czytaniu w końcu zdecydowałem się na OpenLayers (po kilku pokazach z GMaps). Świetna książka Erica Hazzarda „OpenLayers 2.10” (Packt Publishing, 2011) naprawdę bardzo mi pomogła, ponieważ zawiera także podstawowe informacje o JavaScript i porady dotyczące debugowania.
Oczywiście wszystkie moje dane wektorowe pracowałem w QGIS, to zdecydowanie sposób, aby wybrać małego freelancera, takiego jak ja (znam też sporo materiałów ArcGIS z uniwersytetu, ale QGIS oferuje wszystko, czego do tej pory potrzebowałem).
Stylizowanie mapy i tworzenie kafelków było większym wyzwaniem. Najpierw poszedłem za „ GMapCreatorem ” firmy CASA, ale nakładanie warstw wielu plików kształtów okazało się żmudne (muszę podać dane punktowe dotyczące wielokątów, a następnie granicę miejską obejmującą wszystko). Jest to absolutnie możliwe, aby to zrobić w GMapsCreator (i zrobiłem to na etapie prezentacji), ale zajmuje to 3 pełne cykle renderowania (najpierw tworzysz kafelki, a następnie istniejące kafelki są „zastępowane” późniejszymi funkcjami - renderowanie we właściwej kolejności jest ważne!), a menu stylizacji są nieco nieporęczne i mylące. Zapisanie mapy i jej późniejsza edycja to również skomplikowany problem.
TileMill wydawał się bardzo obiecujący, szczególnie w stylu CSS, więc przyjrzałem się temu. Niestety jest to tylko Mac lub Linux, więc może to odstraszyć niektórych ludzi. Naprawdę podobało mi się to, co zobaczyłem, więc skonfigurowałem partycję Ubuntu na moim dysku twardym, pobrałem ją i zaprojektowałem swoje mapy. Dokumentacja dotycząca składni stylizacji jest czasem trochę rzadka, ale oglądanie ich filmu demonstracyjnego (link na głównej stronie) odpowiada prawie na wszystko. Możliwe jest robienie interesujących rzeczy ze stylami zagnieżdżonymi i / lub warunkowymi, a podstawowa znajomość CSS powinna naprawdę zaprowadzić cię tam, gdzie chcesz.
Na koniec TileMill renderuje ładny, pojedynczy plik * .mbtiles. Nie sądzę, że istnieje sposób na bezpośrednie wyświetlenie ich w OpenLayers (przynajmniej nie mogłem znaleźć?), Więc nadszedł czas, aby użyć innego narzędzia: mbutil . To narzędzie „rozpakowuje” plik mbtiles do zwykłej struktury folderów zawierającej pngs moich danych na wybranych poziomach powiększenia.
W końcu przesłałem wszystkie te pliki na mój serwer FTP, zrobiłem trochę czytania w OL, aby uruchomić moją mapę internetową (dodajesz utworzone kafelki jako warstwę TMS, ale odgadnięcie właściwego źródłowego adresu URL i nazwy warstwy zajęło trochę czasu i googling), a potem spędziłem kilka godzin na majstrowaniu przy podstawowych problemach HTML / CSS. Chciałem mieć mapę o szerokości i wysokości 100% z ruchomą legendą, zgodnie z wytycznymi tożsamości moich „korporacyjnych” (jak wspomniano gminy).
Aha i do tej pory używam Map Google jako warstw podstawowych, ale może to wkrótce zostać zastąpione niestandardowymi zdjęciami lotniczymi obsługiwanymi przez WMS (nie dostarczone przeze mnie, ale ankieta stanu i administracja geodanymi).
Mam nadzieję, że nie zapomniałem nic ważnego, ale jeśli to zrobię, nie krępuj się zapytać! Od czasu do czasu sprawdzę ten wątek.
źródło
Jeśli masz mniej niż 1000 wielokątów, rozważ komentarz @ Mapperz dotyczący rozwiązania wektorowego - nie musisz tworzyć i przechowywać nieinteraktywnych obrazów sąsiadujących, jeśli masz tylko kilka wielokątów.
Obrazy kafelkowe są optymalne dla bardzo gęstych informacji, takich jak zdjęcia satelitarne, drogi lub 50 000 wielokątów spisu ludności.
Najprostszym rozwiązaniem dla niewielkiej liczby wielokątów jest konwersja pliku shapefile do pliku KML i przesłanie go do Moich map Google.
Jeśli kodujesz w JavaScript, najbardziej interaktywnym rozwiązaniem jest interfejs API Map Google (lub OpenLayers) do rysowania wielokątów i tworzenia wyskakujących okien informacyjnych. Możesz zacząć od przekształcenia wielokątów pliku kształtu, używając biblioteki GDAL, w plik geoJSON (sposób przechowywania informacji geograficznych w języku JavaScript).
Lub jeśli wybrałeś trasę kafelków, możesz przechowywać kafelki w Amazonach lub w chmurze Google bez kłopotów wewnętrznych.
Wpis na blogu tematycznego mapowania zawiera ładne podsumowanie zalet podejścia wektorowego w stosunku do rozważanego podejścia do kafelków.
Powodzenia!
źródło
Współczuję ci, kolego, ponieważ powoli doszedłem do tego samego wniosku. Po opanowaniu QGIS wypróbowałem quantamnik i mapnik. Ale chociaż będzie on portował styl qgis, jest to podróż w jedną stronę, a systemy stylizacji nie są 1 na 1, dlatego i tak musisz nauczyć się stylu mapnik. Zgaduję, że to samo dotyczy funkcji eksportu qgis mapserver. Wydaje się, że nie ma „łatwego sposobu” na podniesienie umiejętności na serwerze map, wystarczy go podnieść i dać dużo czasu.
Mapnik, geoserver, mapserver, wydaje się, że są tam wielbiciele każdego, ale mapserver wydaje się być środkową drogą.
Powiedziawszy, że istnieje jeden skrót, który znalazłem, a mianowicie qgis, ma opcję wiersza polecenia, aby zrasteryzować mapę qgis do rozdzielczości i granic twojego wyboru, i tworzy plik świata. Dzięki temu możesz używać maptiler lub gdal2tiles do układania pojedynczych warstw. Oczywiście nie byłoby dobre dla 20 poziomów powiększenia, ani nie wiem, jaki jest limit maksymalnego rozmiaru png.
źródło