poniedziałek, stycznia 31, 2011

Warstwy TMS w QGIS

Najnowsze wydanie programu QGIS zbudowane zostało w oparciu o bibliotekę GDAL 1.7. [Wersja windowsowa w okienku pomocy twierdzi, że została skompilowana ze wsparciem GDAL/OGR 1.5.4, ale jest to po prostu pomyłka.] Jedną z najciekawszych funkcji wbudowanych w bibliotekę jest obsługa serwerów TMS (kafelki). Do serwisów udostępniających mapy w takiej postaci zaliczyć można m.in.
Dzięki GDAL możliwe jest wykorzystanie tego typu serwerów jako źródeł danych rastrowych. Jak to zrobić?
Wystarczy stworzyć prosty plik XML z konfiguracją warstwy, a następnie otworzyć go poprzez menu Warstwa - Dodaj warstwę rastrową... lub jeszcze prościej: przeciągnąć plik na listę warstw.


Dodana warstwa zachowuje się jak jeden wielki raster (BDO z Geoportalu odpowiada mniej więcej 50000x30000 pikselom, pozostałe są jeszcze większe) ze zbudowanymi piramidami - przesuwanie i zbliżanie działa szybko, można też zmieniać sposób wyświetlania (przezroczystość, rozciąganie kontrastu, kompozycja barwna RGB), uważać należy jedynie z histogramem i statystykami (próba ich policzenia będzie trwała bardzo długo i z dużą pewnością zawiesi cały program).

Poniżej przykładowe konfiguracje:
OSM, UMP, Geoportal (BDO)
Dodatkowe wyjaśnienia dotyczące zawartości XML znaleźć można w poprzednich postach poświęconych GDAL i TMS oraz na stronie z dokumentacją GDAL.

Na koniec przydatna uwaga: mapy wyglądają najlepiej, gdy poziom powiększenia w oknie QGIS odpowiada poziomowi TMS (czyli jeden piksel na ekranie to jeden piksel na oryginalnym kafelku pobranym z serwera), we wszystkich pozostałych przypadkach zobaczymy niestety mapę po interpolacji (brzydką i postrzępioną). Aby 'trafić' z poziomem wystarczy przybliżyć warstwę do najlepszej skali (100%) i w zależności od potrzeb oddalić o kilka kroków kółkiem myszki lub przyciskami +/-.

Na obrazku warstwa UMP z zamienioną kolejnością kolorów (RGB->BGR) oraz przezroczystością ustawioną dla Wisły na 100%.

15 komentarzy:

Anonimowy pisze...

Czy dane z Geoportalu można wykorzystywać komercyjnie? Tzn. tworzyć na ich podstawie własne opracowania?

m_k pisze...

Raczej nie... (pozostaje jeszcze kwestia interpretacji jak to wykorzystanie komercyjne ma wyglądać i czym jest "opracowanie własne")

W każdym razie jednym z problemów z Geoportalem jest brak prostej i jasnej licencji dot. wykorzystania danych.
Najlepiej zapytać się u źródła, ale obawiam się, że odpowiedź nie będzie satysfakcjonująca - coś w stylu: iść do CODGiKu... blabla... zapłacić zgodnie z rozporządzeniem... podpisać cyrograf...

Łukasz Świtaj pisze...

Michał, wielkie dzięki za tego posta. Zupełnie już zapomniałem o skompilowaniu QGIS 1.6 z najnowszą wersją GDAL. Z poprzednich Twoich wskazówek korzystam do dziś. Od tej pory będę mógł generować mapy w locie :D
Pozdrawiam

Łukasz Świtaj pisze...

Michale, a czy wiesz może, jak to jest z QGIS dla Debiana/Ubuntu? Czy nowy GDAL jest tylko w wersji 1.6 Quantum GIS, czy również nowszych, nocnych wydaniach? Pytam, bo mam aktualnie wersję 1.7.0-Trunk 15118M i nijak nie da się wczytać TMS-ów. Czyżby krok w tył? A może rozmyślne zagranie na rzecz stabilności wydania?

m_k pisze...

Używam Windowsa, więc nie wiem co tam w wersjach linuksowych siedzi, ale byłoby dziwne, gdyby nowszy QGIS używał starszego GDALa.
Sprawdzałeś inne pliki XML?

Jak wyszedł QGIS 1.6, to nie wiem czemu, ale też nie mogłem dodać warstwy TMS - potem spojrzałem w okienko 'About' i jak ujrzałem GDAL/OGR 1.5.4, to przestałem dalej próbować... a tu nagle okazuje się, że z tym 1.5.4 to pomyłka i w magiczny sposób plik zaczął być czytany przez QGIS :)

Anonimowy pisze...

U mnie też nie da się dodać warstwy TMS z pliku *.XML.

Kompilowalem QGIS z SVN (1.70-Trunk) oraz GDAL 1.80.

Marcin

Anonimowy pisze...

Dzisiaj na nowo skompilowałem GDAL 1.8 i od razu zaczęło działać (bez ponownej kompilacji qgisa). Najprościej sprawdzić czy działa program gdalinfo z plikiem *.xml. Jeżeli podaje parametry z pliku *.xml to znaczy że QGis też powinien działać dobrze.

Używam dystrybucji Arch Linux i oficjalny pakiet GDAL 1.8 jest wadliwy, proponuję skompilować samemu.

Marcin

Anonimowy pisze...

Gdzie jest błąd?
Czemu nie chce się to otworzyć w Qgis 1.6




http://ars.geoportal.gov.pl/ARS/getTile.aspx?service=TBD;cs=EPSG2180;fileIDX=L${z}X${x}Y${y}.png


0
819200
1228800
0
2
1536
1024
bottom

EPSG:2180
256
256
4

.png

m_k pisze...

Nie chce się otworzyć czy może wywala cały program? U mnie dzieje się właśnie to drugie. Nie wiem czemu... BDO działa OK.
A czy ten xml działa w FWTools?

Anonimowy pisze...

Wywala cały program.
Myślę, że to problem z Tilecount - może coś się w tym pozmieniało.
Wcześniej (ze 2 miesiące temu) jakoś TBD chodziło.

Anonimowy pisze...

W FWTOOLS śmiga.

Anonimowy pisze...

Witaj,
chce wykorzystać quantum gis do stworzenia na razie tylko skrawka mapy. Widzę, że masz zrobiony kawałek mapki z warstwą UMP. Czy byłaby możliwość gdybyś udostępnił cały Twój projekt?
Jeśli nie byłoby tej szansy czy byłaby możliwość wytłumaczenia krok po kroku jak zrobić np. taki skrawek mapy ja przedstawiłeś na zdjęciu?
Z góry dziękuje za odpowiedz.
Pozdrawiam
Grzesiek

m_k pisze...

Wystarczy, że zapiszesz plik XML z konfiguracją warstwy UMP, który jest w notce, i przeciągniesz go do panelu warstw w QGISie. Potem tylko wystarczy się zbliżyć do wybranego obszaru i ustawić styl wyświetlania warstwy (prawy przycisk->Właściwości).

Desmond pisze...

Fajne to to, ale niestety z TBD i innymi warstwami to to nie działa, jak wspomniano wyżej ;)

Wydaje mi się, że GDAL/QGIS mają problem z wyższą liczbą tilecount - bo jak ustawię TBD i domyślne X2Y3, to dodaję i QGIS działa (tj nie wiesza się, ale mamy kafle "brak mapy dla obszaru"). Testowo jak dam X4Y6 i X8Y12 też działa, ale przy wyższych juz się wysypuje. Tak więc metoda działa na warstwy które mają mało tilecount w XY. Z Geoportalu zadziałją pewnie ORTO_SAT, BDO i niektóre mapy topo o mniejszej skali ...

jacekzatonski pisze...

Czy można prosić o reupload plików konfiguracyjnych (linki przestały działać)