Wtyczka OpenLayers do QGIS pozwala dodawać podkłady mapowe z kilku popularnych serwisów m.in. Google Maps i OpenStreetMap. Jej opis można znaleźć w dziale QGIS wtyczki. Domyślnie użytkownik ma dostęp do 11 rodzajów map. W prosty sposób można jednak zmienić standardowe ustawienia usuwając nieużywane oraz dodając nowe podkłady.
Wtyczka OpenLayers opiera się na wykorzystaniu prerenderowanych kafelków pobieranych z serwerów. Za pomocą biblioteki OpenLayers i udostępnianych przez twórców serwisów mapowych API umożliwia pobieranie odpowiednich kafli znajdujących się w zasięgu widoku i wyświetlanie ich w oknie QGIS. Zazwyczaj twórcy udostępniają kilkanaście/kilkadziesiąt poziomów skalowych przedstawiających różny stopień szczegółowości. Minusem tego rozwiązania jest to, że mapy najlepiej są wyświetlane w konkretnych skalach poza którymi podkłady mogą być przesunięte względem innych warstw. Mapy wyświetlane w ten sposób określa się jako slippy maps, wykorzystywane są m.in. na stronie OpenStreetMap. Więcej o tematyce kafelkowania można znaleźć we wpisie TileCache – przyspieszenie dla WMS.
[important]Do poprawnego wyświetlania warstw przez wtyczkę OpenLayers koniecznym jest, aby kafelki były serwowane w układzie Google Mercator (EPSG: 900913)[/important]
Usuwanie widoków
W celu usunięcia nieużywanych widoków należy zmienić nieco kod źródłowy wtyczki. Katalog instalacyjny to standardowo:
- C:\Documents and Settings\user\.qgis\python\plugins\openlayers w Windows XP,
- C:\users\user\.qgis\python\plugins\openlayers w Windows XP w Windows Vista i 7,
- /home/user/.qgis/python/plugins/openlayers w systemach z rodziny Linux
, gdzie user należy zamienić na swoją nazwę użytkownika. Otwieramy plik openlayers_plugin.py. Rejestrowanie serwisów odbywa się podczas tworzenia instancji klasy OpenlayersPlugin (metoda __init__()), są one widoczne na liście wyboru w menu i oknie głównym wtyczki. Jeśli chcemy usunąć wybrane widoki należy usunąć odpowiednią linię lub na jej początku dodać znak # – będzie ona traktowana jako komentarz, np. zmiana:
self.olLayerTypeRegistry.add( OlLayerType(self, 'Google Satellite', 'google_icon.png', 'google_satellite.html') ) self.olLayerTypeRegistry.add( OlLayerType(self, 'Google Streets', 'google_icon.png', 'google_streets.html') ) #self.olLayerTypeRegistry.add( OlLayerType(self, 'Google Hybrid', 'google_icon.png', 'google_hybrid.html') ) self.olLayerTypeRegistry.add( OlLayerType(self, 'Google Physical', 'google_icon.png', 'google_physical.html') )
spowoduje usunięcie z listy warstwy Google Hybrid. Można również usunąć niechciane linijki, ale jeśli po pewnym czasie będziemy chcieli przywrócić dany serwis to łatwiej jest usunąć znak # niż ponownie wpisywać całą linijkę lub instalować wtyczkę od nowa. Kolejne parametry metody klasy OlLayerType określają: instancję wtyczki (zawsze self), wyświetlaną nazwę, plik z ikoną oraz plik HTML do pobierania danych. Można również zmienić kolejność widoków na liście wyboru aby najczęściej używane serwisy znalazły się na górze.
Dodawanie widoków
W sieci można znaleźć adresy serwerów oferujących usługę pobierania prerenderowanych map, głównie opartych na danych OpenStreetMap. Są to m.in. (kliknij żeby zobaczyć przykładowy widok):
- http://tile.openstreetmap.org/${Z}/${X}/${Y}.png – OSM Mapnik, standardowy widok OpenStreetMap dostępny przez wtyczkę,
- http://tiles.ump.waw.pl/ump_tiles/${Z}/${X}/${Y}.png – Uzupełniająca Mapa Polski z rzeźbą terenu
- {z}/${x}/${y}.png – OpenCycleMap z wyróżnionymi trasami rowerowymi,
- http://tile2.opencyclemap.org/transport/${z}/${x}/${y}.png – OpenCycleMap Transport z wyróżnionymi liniami kolejowymi i drogami,
- http://otile1.mqcdn.com/tiles/1.0.0/osm/${z}/${x}/${y}.png – MapQuest,
- http://tiles-base.openstreetbrowser.org/tiles/basemap_base/${z}/${x}/${y}.png – OpenStreetBrowser.
Powyższe adresy można wykorzystać przy wyświetlaniu widoków innych niż standardowo dostarczone przez Twórcę wtyczki OpenLayers. Przykładowo, jeśli chcemy dodać podkłady ‘Uzupełniająca Mapa Polski’ i ‘OpenCycleMap’ musimy dodać dwie linijki w pliku openlayers_plugin.py (w miejscu, gdzie wcześniej usuwaliśmy widoki):
self.olLayerTypeRegistry.add( OlLayerType(self, 'Uzupelniajaca Mapa Polski', 'ump_icon.png', 'ump.html', True) )
self.olLayerTypeRegistry.add( OlLayerType(self, 'OpenCycleMap', 'ocm_icon.png', 'ocm.html', True) )
Uzupelniajaca Mapa Polski (bez polskich liter!) i OpenCycleMap to wyświetlane nazwy, natomiast ump.html i ocm.html to pliki HTML, które należy stworzyć. Wykorzystamy w tym celu istniejący plik osm.html znajdujący się w folderze html w katalogu wtyczki. Należy stworzyć dwie kopie pliku i nazwać je tak jak przy rejestracji. Teraz należy zmienić linijkę 33 w każdym z nich wpisując adres serwera, w naszym przykładzie odpowiednio:
-
http://tiles.ump.waw.pl/ump_tiles/${Z}/${X}/${Y}.png
-
{z}/${x}/${y}.png
Po zapisaniu zmian uruchamiamy QGIS i sprawdzamy czy serwisy zostały prawidłowo dodane do listy:
Tutaj dostępna jest wersja wtyczki zawierająca dodatkowe podkłady mapowe.
[notice]Szybkość wczytywania kafelków zależy w dużej mierze od serwerów na których się one zajmują. W niektórych przypadkach wczytywanie map może być bardzo wolne.[/notice]
Własne podkłady
Istnieje możliwość serwowania własnych usług WMS opartych na kafelkach i dodawanie ich do wtyczki OpenLayers. Więcej o tym jak korzystać z kafelków można znaleźć tutaj.
Jeśli nie mamy dostępu do serwera możemy wykorzystać specjalne serwisy. Przykładem może być Cloudmade wykorzystujący dane OpenStreetMap, który pozwala stworzyć własny styl i udostępnić go w sieci. Link, który należy umieścić w pliku HTML, ma postać:
http://tile.cloudmade.com/klucz_api/id_stylu/256/${Z}/${X}/${Y}.png
Klucz API można uzyskać po rejestracji w serwisie, natomiast jako indeks stylu można podać numer ID stworzonego przez siebie lub innego użytkownika stylu (w serwisie można je przeglądać w specjalnej przeglądarce).
Przydatne linki:
- http://wiki.openstreetmap.org/wiki/Slippy_Map
- http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames
- http://cloudmade.com/
wykorzystujący dane OpenStreetMap, który pozwala stworzyć własny styl i udostępnić go w sieci. Link, który należy umieścić w pliku HTML, ma postać: