JOSM oraz inne edytory nie obsługują wielu formatów map, przez co tracimy możliwość wykorzystywania niektórych ciekawych podkładów. QGIS, potężny kombajn do GIS-u, wprawdzie posiada obsługę edytowania OSM, ale bardzo szczątkową (i komu chciałoby sie uczyć obsługi kolejnego programu?). Na szczęście ten sam QGIS, a dokładniej jego MapServer, może przetłumaczyć nam dowolną mapę (obsługiwaną przez Qgisa, czyli praktycznie wszystkie) na format WMS zrozumiały przez JOSM i inne szanujące się edytory OSM.
W tej instrukcji weźmiemy na warsztat mapę ISOK_Cien z Geoportalu, dostępną w formacie WMTS, bardzo przydatną — zwłaszcza w lasach! — w rysowaniu dróg, rowów, wałów, strumieni, jezior i innych elementów terenowych.
Pierwsza wersja instrukcji zakłada, że używanym systemem jest Linux (dokładniej Debian, lub któraś z jego pochodnych, np. Ubuntu lub Mint; w przypadku innych dystrybucji nazwy pakietów i ścieżki mogą być inne, ale zasada działania ta sama). Później postaram się też zrobić ją dla Windowsa.
Potrzebne nam będą:
- QGIS oraz QGIS MapServer,
- serwer HTTP z obsługą FCGI (tutaj skorzystam z Apache, teoretycznie może być inny),
- edytor JOSM.
Oczywiście testy i konstruktywna krytyka mile widziane.
1. Instalujemy programy QGIS i QGIS MapServer.
W Debianie i pochodnych to pakiety:
qgis qgis-mapserver
2. Uruchamiamy QGIS i tworzymy nowy projekt.
W górnym menu wybieramy „Warstwa » Dodaj warstwę WMS/WMTS…” — otworzy się nowe okno, gdzie musimy najpierw dodać źródło mapy: klikamy „Nowa”, po czym nadajemy warstwie nazwę (np. „ISOK Cieniowanie”) oraz podajemy URL:
http://mapy.geoportal.gov.pl/wss/service/WMTS/guest/wmts/ISOK_CIEN?REQUEST=GetCapabilities&SERVICE=WMTS
po czym kilkamy OK i wracamy wcześniejszego okna. Na rozwijanej liście wybieramy dodaną właśnie warstwę (później oczywiście nie trzeba jej dodawać) i klikamy „Połącz”.
Pojawi się lista dostępnych warstw, w tym wypadku tylko ISOK_Cien — zaznaczamy ją i klikamy „Dodaj”, a następnie „Zamknij”. W głównym oknie Qgisa powinna być widoczna dodana właśnie mapa.
Zapisujemy projekt jako plik *.qgs i zamykamy program.
3. Instalujemy serwer Apache i konfigurujemy FCGI.
Do obsługi MapServera potrzebny będzie serwer HTTP z FCGI, wykorzystamy w tym celu Apache’a. W Debianie i pochodnych instalujemy pakiety:
apache2 libapache2-mod-fcgid
następnie włączamy obsługę fcgi i restartujemy serwer:
a2enmod cgid
/etc/init.d/apache2 restart
4. Magia
Zapisany wcześniej plik *.qgs umieszczamy w katalogu, w którym znajduje się plik qgis_mapserv.fcgi (w Debianie i pochodnych to /usr/lib/cgi-bin/), a następnie sprawdzamy czy wszystko działa — w przeglądarce WWW wchodzimy pod adres http://localhost/cgi-bin/qgis_mapserv.fcgi. Powinien nam się pojawić podobny komunikat WMS:
<ServiceExceptionReport version="1.3.0" xmlns="http://www.opengis.net/ogc">
<ServiceException code="ServiceNotSpecified">Service not specified. The SERVICE parameter is mandatory</ServiceException>
</ServiceExceptionReport>
Jeśli tak — działa!
5. Dodanie własnej warstwy w JOSM
W górnym menu edytora klikamy na „Podkład mapy » Konfiguracja”, następnie w ustawieniach na ikonkę dodania warstwy WMS („WMS” z plusem po prawej stronie). Wklejamy adres usługi http://localhost/cgi-bin/qgis_mapserv.fcgi i klikamy „Pobierz warstwy”. Na liście wybieramy „ISOK_Cien”, dodatkowo można wybrać format grafik oraz nadać nazwę warstwie w JOSM. Zatwierdzamy wybór i już możemy korzystać z nowego podkładu.
TODO:
- wersja dla Windows,
- zbadać możliwość wykorzystania mniej kobylastych serwerów HTTP (nginx? lighttpd?),
- dodać cache kafelków po drodze aby przyspieszyć (?) działanie,