OGR2Layers

O tym, że ogry mają warstwy, dowiedzieliśmy się z kultowej pierwszej części „Shreka“. Ale do czego może nam się przydać ta wiedza w QGISie?
Otóż dostępna z QGIS Contributed Repository wtyczka, stworzona przez zespół: Nicholas Bozon, Rene-Luc D’Hont, Michael Douchin, Mathias Walker, Luca Delucchi o wdzięcznej nazwie OGR2Layers służy do szybkiego generowania tak zwanych mash-upów mapowych w oparciu o OpenLayers. Co to takiego mashup? W kartografii internetowej oznacza to połączenie mapy podkładowej (najczęściej Google Maps lub OpenStreetMap) z nałożonymi danymi użytkownika. Mogą być to lokalizacje restauracji w mieście, przebieg trasy turystycznej, przystanki autobusowe i tak dalej. Stworzenie takiej prostej mapy w OpenLayers wymagało napisania przynajmniej kilku linijek kodu w JavaScript i odpowiedniego przygotowania danych. Dzięki wtyczce można przynajmniej częściowo zautomatyzować ten proces.

Co będzie potrzebne? Do widoku QGIS musimy dodać jedną lub więcej warstw wektorowych ze zdefiniowanym układem współrzędnych. Prawidłowa definicja jest niezbędna do zadziałania wtyczki. Układ może być dowolny, format też.

Po drugie, należy ustawić wizualizację danych korzystając z starych stylów QGIS. Nowe nie działają i nie wiadomo, kiedy autorzy wtyczki uporają sie z ich implementacją. Należy też pamiętać o tym, że możliwości samego OpenLayers są ograniczone, więc bardzo skomplikowana symbolizacja i tak byłaby nie do przeniesienia. Możemy korzystać z ustawienia „symbol pojedynczy“ lub „wartość unikalna“.

Uwaga 1. Przy ustawianiu symboli punktów z plików SVG należy koniecznie ustawić „Opcje wypełnienia“ na „Brak“ – w przeciwnym wypadku zamiast grafik pojawią się kolorowe punkty. Symbole SVG nie działają również w przypadku wyboru „wartości unikalnej”.

Uwaga 2. OGR2Layers nie przeliczy jednostek wielkości symboli z milimetrów na piksele, tylko bezpośrednio przeniesie wartości. Należy więc założyć wszystko odpowiednio większe.

Kiedy już wszystko będzie gotowe, wywołujemy wtyczkę z menu Wtyczki – OGR2Layers Plugin. Okno ma 4 zakładki: QGIS, OpenLayers, Optional i Output.

W zakładce QGIS pokaże się lista warstw wektorowych dodanych do mapy. Oprócz tego trzeba zdecydować, gdzie będą zapisane pliki wynikowe (Output directory), oraz do jakiego formatu powinny być konwertowane wektory: GML albo GeoJSON. Zakładka OpenLayers posiada pole na wpisane tytułu mapy, rozmiaru (do wyboru jest 400×400 px, 800×600 px i pełny ekran), domyślny zakres (ustawiany jest do zasięgu aktualnego widoku QGIS), oraz umożliwia włączenie/wyłączenie przełącznika warstw. Jest tu również wybór podkładu – niestety, tylko z listy. W wersji 0.8.2 dostępnej przez instalator wtyczek można wybrać trzy różne wizualizacje OSM lub Vmap level 0, wersja rozwojowa umieszczona na GitHub umożliwia również wybranie Google Maps.

W zakładce „Optional“ można dodać do mapy kolejne elementy, jak wyświetlanie współrzędnych, skalę, opis źródła danych, pasek stopnia powiększenia, mini-mapę przeglądową i link do widoku. Sekcja „Render option“ dotyczy symbolizacji – „default OpenLayers render“ pominie ustawienia QGISa, natomiast „QGIS render“ – przeniesie symbolizację z projektu do wygenerowanej mapy. W sekcji „Query option“ wybieramy, czy kliknięcie na obiekcie ma spowodować wyświetlenie w „dymku“ jego atrybutów. Opcja „Query more features“ działa tylko wtedy, gdy dodane będą wyłącznie warstwy punktowe. Umożliwia odczyt atrybutów kilku punktów położonych bardzo blisko siebie.

Po zdefiniowaniu wszystkich parametrów wystarczy kliknąć na OK i czekać na efekty. Wygenerowany kod będzie zapewne wymagał modyfikacji (choćby zmiana nazw warstw, użycie biblioteki OpenLayers ze swojego serwera zamiast głównego serwera projektu), ale w porównaniu do pisania od zera i tak mamy zaoszczędzone sporo pracy.

Trzeba jednak pamiętać, że taki sposób tworzenia internetowych map ma swoje ograniczenia. Przede wszystkim nie mamy swobody w wyborze układu współrzędnych, wtyczka automatycznie transformuje nasze dane do Web Mercator (którego nie znoszę). Również lista dostępnych podkładów jest ograniczona. Wreszcie – tego typu mapy działają dobrze, gdy nie muszą pokazywać zbyt wielu danych. Dla Internet Explorera bezpiecznym limitem jest 100 obiektów na wszystkich warstwach, dla pozostałych przeglądarek kilkaset, ale szybkość działania może być niezadowalająca. Dane przechowywane są w formatach tekstowych, więc nadzwyczaj mało ekonomicznych. Powyżej pewnego progu nie będzie już wyjścia: trzeba zainwestować w Server GIS z prawdziwego zdarzenia.

To jednak temat na osobną opowieść, a tymczasem – miłej zabawy z OGR2Layers!