wtorek, sierpnia 21, 2007

Plan Poznania - OpenLayers i TileCache w akcji

mapa poznaniaSpośród wszystkich dostępnych w Internecie map i planów polskich miast (zarówno na serwisach samorządowych jak i komercyjnych) wyróżnić można dwie grupy: pierwsza to mapy oparte o autorskie rozwiązania techniczne (czytaj: niestandardowe interfejsy wymagające Flasha lub Javy, a nawet jeśli zrobione są w zwykłym JavaScripcie, to i tak okazuje się, że całość działa jedynie w Internet Explorerze...), druga zaś to wstawione na stronę Google Maps API (wkład własny autora ogranicza się tu jedynie do dodania kilku punktów typu sklep/kino/bankomat, właściwa mapa serwowana jest przez Google).

open layersUdostępniony niedawno internetowy plan Poznania wyłamuje się z tego prostego podziału. Wykorzystano w nim dane pochodzące z Zarządu Geodezji i Katastru Miejskiego GEOPOZ. Obejmują one m.in. ulice, budynki, tereny zielone, komunikację miejską, szlaki turystyczne i ścieżki rowerowe. I choć projekt opiera się na danych "własnych", to na szczęście nikt nie próbował czynić tego samego z interfejsem.

Do wyświetlania mapy na stronie użyto OpenLayers - biblioteki JavaScript, którą najkrócej można by nazwać "opensourcowym odpowiednikiem Google Maps API". OL pozwala na użycie map pochodzących z wielu źródeł: Google Maps, Virtual Earth, Yahoo! Maps, serwerów WMS, WFS oraz World Wind.open layers: wms + google maps + virtual earth Wygląd strony z mapą może być dowolnie modyfikowany - od prostego okienka z jedynie kilkoma przyciskami do nawigacji i zoomowania (przykładem omawiany plan Poznania) po rozbudowane web-aplikacje, pozwalające na niemal dowolne manipulowanie i zmienianie oglądanych map (np. przeglądarka WMS Manager).
OL nie ogranicza się tylko do pokazywania, możliwe jest też rysowanie po mapie - użytkownik może dodać własne punkty, linie i poligony (a następnie zapisać je na serwerze typu WFS-T). Wymienianie wszystkich możliwości biblioteki zajęłoby wiele czasu, dlatego najlepiej samemu pobawić się jednym z przykładów dostępnych na stronie projektu.open layers: wms manager

Kolejnym rozwiązaniem open source użytym do wykonania cyfrowego planu Poznania jest TileCache, będący jedną z implementacji serwera typu WMS-C (Caching WMS).
Coż to jest? Standard WMS oprócz wielu zalet ma też jedną podstawową wadę: wymaga sporo mocy obliczeniowej ze strony serwera. O ile przy kilku użytkownikach-klientach nie stanowi to jeszcze problemu, to przy >kilkuset serwer nie jest w stanie obsłużyć ich wszystkich w sensownym czasie. Typowe żądanie wygląda mniej więcej tak: "pokaż mi teren o takich a takich to współrzędnych, warstwy takie i takie, wynikową mapę wyślij w formacie png o zadanych rozmiarach i w określonym odwzorowaniu"... Serwer WMS musi żądaną mapę najpierw stworzyć (korzystając np. z danych wektorowych w formacie shapefile czy też rastrów w GeoTiffach) i dopiero potem wysłać do klienta (co już jest najłatwiejsze i najmniej pracochłonne). To właśnie renderowanie map wymaga tyle pracy.
Wspominałem już kiedyś na blogu o serwerze OnEarth, który na przełomie 2004/2005 nie wyrabiał z obsługą tysięcy użytkowników NASA World Wind, więc jego administrator odciął im po prostu dostęp. Rozwiązanie problemu okazało się proste - skoro WW żąda plików w tym samym formacie (jpg), o jednakowym rozmiarze (512x512px) i w tym samym odwzorowaniu (EPSG:4326), to można by serwować gotowe "cegiełki" i nie uciekać się bez potrzeby do tworzenia ich "on the fly". Sposób ten okazał się skuteczny (dziś bez problemu możemy oglądać dane OnEarth w WW), a na tej samej idei oparto WMS-C.
Dzięki zastosowaniu TileCache szybkość dostępu do serwera WMS może wzrosnąć 10-100 razy (nawet ponad 300 żądań na sekundę). TC może też służyć jako serwer dla World Winda.
Dla zainteresowanych: więcej o WMS Tile Caching na stronach OSGeo - 1, 2, 3 i 4

Szkoda tylko, że tak mało u nas projektów wykorzystujących otwarte standardy - wystarczy chociażby spojrzeć na liczbę serwisów WMS (tysiące w USA, sporo w Anglii, Kanadzie, Australii i Zachodniej Europie: 1, 2, 3, 4; w Polsce - nie znam ani jednego...)

poprawiona mapaMałe uaktualnienie (28/08/2007): oprócz zwykłej mapy dostępna jest również ortofotomapa i hybryda, choć aby do nich dotrzeć trzeba trochę pogrzebać w kodzie strony... Wystarczy niewielka modyfikacja pliku openlayers_poznan.js (i odwołującej się do niego strony html), by uaktywnić brakujące warstwy, a nawet dodać nowe elementy takie jak pasek zoomu.
Swoją drogą ciekawe, czy autorzy nie umieścili tych danych specjalnie, czy też po prostu popełnili przeoczenie? ;)
(Dla leniwych: tutaj znajduje się strona z poprawionym przeze mnie interfejsem.)

Update: Na oficjalnej stronie z planem dodano już przyciski do zmiany warstwy.

5 komentarzy:

Adek pisze...

"strona z poprawionym przeze mnie interfejsem." nie działa :( :( :( :(

mk pisze...

Ta stronka odwołuje się do serwisu poznan.pl i to właśnie on nie chce dzisiaj coś działać:
"Przepraszamy, usługa czasowo niedostępna.
Sprawdź poprawność adresu lub przejdź na stronę startową Miejskiego Informatora Multimedialnego www.poznan.pl."

Ja nic na to nie poradzę, trzeba poczekać

Adek pisze...

Witam! Rzeczywiście, w ciągu dnia www.poznan.pl nie działała jak należy (co niestety nie rzadko się zdarza). Ale mi się nie udało zobaczyć jak to wygląda już wczoraj w nocy no i teraz. Niezależnie od przeglądarki w miejscu mapy jest szary prostokąt. Może da się coś zrobić... Straszniem ciekaw jak to działa i wygląda. Skądinąd wiem, że na razie te ortofotomapy są celowe ukryte.

Adek

m_k pisze...

Proszę spróbować teraz, u mnie jak na razie działa...

Anonimowy pisze...

Z planem Poznania zintegrowano wyszukiwarkę cmentarną - możemy zobaczyć miejsca, w których spoczywają szukane osoby z dokładnością do pojedynczego nagrobka.
http://www.poznan.pl/mim/public/necropolis/search.html?id=1943&instance=1017&lhs=necropolis