Postanowiłem pobawić się trochę systemami informacji geograficznej (GIS). Zdarzyło mi się kiedyś współpracować przy dużym projekcie, którego celem było udostępnienie portalu mapowego dla różnych zastosowań i wtedy łyknąłem trochę niezbędnej wiedzy. W trakcie tego projektu pracowałem z drogimi narzędziami, które wymagały sporych umiejętności zdobywanych na drogich szkoleniach. Wtedy też pomyślałem, czy faktycznie to wszystko musi być drogie? Czy prosty programista bez wielkiej wiedzy teoretycznej o geodezji i kartografii byłby w stanie stworzyć portal z udostępnionymi funkcjami charakterystycznymi dla drogich systemów GIS? Ten i przyszłe wpisy będą zapiskami z moich „badań”. Zapraszam i zaczynamy…
Trochę teorii i podstaw
Załóżmy, że na naszym portalu chcielibyśmy wyświetlić interaktywną mapę. Czego potrzebujemy do realizacji naszego celu?
Po pierwsze źródła danych. Od razu nasuwa się nam pierwszy wybór: Google z ich Google Map API. Każdy z nas zna i używa mapy Google. API jest wygodne w użytkowaniu, dobrze udokumentowane, ale ma jedną wadę – czasem trzeba za nie płacić. Dopóki nie zechcemy zarabiać na naszym portalu lub nasze rozwiązanie jest tylko na użytek nasz i zaproszonych gości Google Maps API jest za darmo. Gdy jednak okaże się, że jesteśmy popularni i zechcemy coś zarobić to niestety trzeba już zapłacić. Planów jest dużo i każdy wybierze coś dla siebie. Postaram się w jednym z postów coś napisać o Google Maps i jego użyciu.
Czy mamy darmową alternatywę? Tutaj wybór jest dość oczywisty. Nasze pierwsze kroki powinniśmy skierować do społeczności skupionej wokół OpenStreetMap. Jest to organizacja zrzeszająca amatorów GIS, która między innymi rozwija autorską, wektorową mapę świata. Dane udostępnianę przez tę organizację są na licencji ODbL, więc ich wykorzystania wymaga głównie umieszczenia ich źródła. Mapę można ściągnąć z dostępnych źródeł i udostępnić z wykorzystaniem serwera map. Zwykle jednak jest to proces czasochłonny, więc, my w tym wypadku będziemy się posiłkować gotowymi serwerami udostępnianymi przez społeczność w postaci serwisów WMS.
Co to jest WMS?
WMS – Web Map Service, czyli webowy serwis mapowy udostępniający na odpowiednie żądanie mapy w postaci obrazka w formacie JPEG, PNG lub GIF. (Istnieje jeszcze WFS i WFSM, ale o tym kiedy indziej). Działa jak zwyczajna usługa HTTP z tym, że ma odgórnie zdefiniowany przez organizację OGC (Open Geospatial Consortium) format. O tym dokładniej napiszę przy okazji tworzenia własnego serwera map. Nam obecnie potrzebny jest tylko adres usługi i odpowiednie parametry zapytania.
Jeśli chodzi o adresy serwerów map, polecam forum openStreeMap lub strony wiki. Mała uwaga – nie każdy udostępniający serwer, udostępnia dane za darmo. Część serwerów zezwala na korzystanie danych tylko na użytek niekomercyjny. Pamiętajmy więc aby zawsze czytać Terms of Use.
Jak to wyświetlić?
Skoro zapewniliśmy sobie backend to teraz czas na frontend. Musimy gdzieś te nasze mapy wyświetlić. W środowisku web jedyną sensowną opcją jest język JavaScript i powstałe z jego pomocą biblioteki. Wybór mamy całkiem duży. Od minimalistycznych, idealnych dla rozwiązań mobilnych LeafLet i ModestMaps, przez wspierające mapy wektorowe Polymaps, Mapael, a skończywszy na mocno zaawansowanych (i ciężkich) OpenLayers, z których korzystają również profesjonaliści. Warto zajrzeć tutaj, gdzie dostępna jest w miarę aktualna lista narzędzi wspierających nas w wizualizacji danych GIS. Spora część z tych narzędzi ma publicznie dostępny kod, więc jak ktoś chce to można pogrzebać w bebechach.
Dobra. Na dziś wystarczy. Wiemy skad czerpać wiedzę. Następnym razem spróbujemy coś napisać.