CZ.NIC: Vyvíjej, Inovuj, Programuj: Projekt MapTiler


MapTiler je nástroj pro online publikování map a generování mashups s překryvem existujících interaktivních webových map. Vaše geodata jsou přetrasformovány do dlaždic kompatibilních s Google Maps, Google Earth, Yahoo a Microsoft Maps a také OpenStreetMap - připravené pro zkopírování na jakýkoliv webserver.

Stránka projektu: http://www.maptiler.org/ 
Instalace: http://help.maptiler.org/betatest/ 
 
Vývoj aplikace MapTiler byl podpořen společností CZ.NIC v rámci soutěže VIP (Vyvíjej, Inovuj, Programuj).

Do soutěže byl přihlášen projekt se zadáním:

Výsledky:

Byla vytvořena plnohodnotná okenní aplikace, během vývoje testovaná na všech třech platformách Windows, Linux, MacOSX v prostředí wxWidget (wxPython) a je zde plně funkční. 

Došlo k významnému přepracování a přestruktorování aplikace GDAL2Tiles do objektové podoby použitelné jak se standardní příkazovou řádkou tak s grafickým prostředím.
Do GDAL2Tiles přibyla podpora pro přímé zpracovní rastrů s transparentní barvou (NODATA) a také rastrů bez Alpha kanálu (GDAL2Tiles ve verzi před začátkem prací na CZ.NIC VIP projektu bylo nutné předat RGBA raster).

Byl vyroben skript preprocess.py and gdalpreprocess.py, který je v GUI využit pro předzpracování rastrů s barevnou paletou pro přímé dlaždicování.

Všechny tyto kroky byly nezbytné pro implementaci funkčnosti v grafickém prostředí.

Samotné grafické prostředí bylo připravované nezávisle na aplikaci a následně s utilitou propojeno. Grafická aplikace tak bude schopna i generovat dávky (.bat nebo .sh) pro pozdější hromadné zpracování rastrových vstupů.

Vlastní zadávání vstupu probíhá krok po kroku.

Detaily k instalaci a zprovoznění jsou na adrese: http://help.maptiler.org/betatest/ 

Zdrojový kód přepracované verze GDAL2Tiles je i součástí GDAL 1.6 a je v SVN tohoto projektu.

Dokumentace:

Mashup s vysvětlením dlaždicování v Google Maps:
(byl zařazen do Official Google Maps API Gallery zaměstnanci společnosti Google Inc.)

Hodnotící kritéria a komentář

  1. Vytvoření plnohodnotné open-source grafické aplikace v prostředí wxWidgets, naprogramované v Pythonu, plně fungující pod operačním systémem Linux, Windows i Mac OS X.

    Nejdůležitější první bod je splněn na 100%. Aplikace je v alpha-verzi a je nutné ji řádně otestovat.

  2. Kompilace knihovny GDAL (C++) se všemi závislostmi do binarní podoby vhodné pro distribuci na platformách Windows a Mac. (Linux má již GDAL v balíčkovacích systémech obsažen). Závislostí je poměrně hodně.

    Bod dva se ukázal jako nadbytečný vzhledem k dostupnosti OSGeo4W a binarní distribuce GDAL pro Mac od KyngChaos. Pro Linux (Debian) se zabalíčkování nového GDAL 1.6 teprve připravuje (projekt Debian GIS: GDAL package). Přesto jsem během vývoje samozřejmně celý GDAL včetné závislosti kompiloval, ale veřejné publikování mých binárek nemá příliš smysl, protože jiné projekty se přímo tímto zabývají a budou do budoucna připravovat update. Proto je instalátor postaven nad existujícími binárními distribucemi.

  3. Vytvoření instalátoru pro Windows a Mac OS X. Připravení kostry balíku aplikace MapTiler pro některý balíčkovací systém v Linuxu (alespoň jeden z autopackage, debian, rpm nebo Python PyPI).

    Je hotovo pro Windows a Mac OS X (Leopard) (zde je potreba nejprve nainstalovat Kyngchaos GDAL 1.6). Linux zatím nemá k dispozici instalační balíček, důvodem je opožděné publikování GDAL 1.6 a prozatimní neexistence binární distribuce GDAL pro Linux. Balík GDAL je základní závislostí pro balíčkování MapTiler. Nyní je pro zprovoznění na Linux potrebné využít zdrojových kódů.

  4. Doplnění potřebné funkčnosti pro zpracování libovolného rastrového obrazu na vstupu aplikace, úprava GDAL2Tiles pro podporu spolupráce s grafickým prostředím.

    Hotovo. Tento krok se ukázal jako velmi obtížný a v prvních dvou měsících projektu došlo prakticky k přepsání originálního projektu do objektové struktry s možností výstupu do GUI i na příkazovou řádku.

    Podobně problematický je krok pro předzpracování a lepení rastru - především díky nepřeberným variantám vstupu (georeference pomocí GCPs / world file, barevná paleta, různé množství bands v rastru,...).

  5. Vytvoření základu uživatelské dokumentace a FAQ databáze.

    Uživatelská dokumentace: http://help.maptiler.org/ 
    a dotazy s fulltextovým prohledáváním ve skupině
    http://groups.google.com/group/maptiler 

    Velmi důležitý a relativně náročný krok byla dokumentace českých mapových systémů.

    Vytvořil jsem také mashup dokumentující dlaždicování použité v MapTiler a Google Maps. Tento mashup je velice populární a byl oceněn i zaměstnanci společnosti Google Inc.

  6. Aplikace bude zveřejněna na http://www.maptiler.org/ a kompletní zdrojový kód bude k dispozici na http://code.google.com/p/maptiler/.

    Stránka projektu je funkční. Zdrojový kód je vystaven v SVN repozitáři. Během této soutěže došlo k vytvoření GUI. Instalátor s binarními soubory předpřipravenými pro Windows je zveřejněn.

Samozřejmně je na projektu mnoho věcí, které by bylo potřeba vylepšit (http://help.maptiler.org/todo ) a nepochybně se objeví ještě mnoho chyb a bugů.
Základ je ale položen. Na projektu plánuju dále pracovat dle časových a finančních možností.

Velmi vítaná je jakákoliv pomoc od open-source programátorů a připomínky, testování a návrhy na zlepšení od uživatelů.

Ukázka použití krok za krokem:

  1. Stahněte si ukázková geodata, např: zip z ČUZK: Rastrová Základní mapa ČR 1 : 10 000
  2. Rozbalte, v adresáři "bezesva" najdete .tif soubory. Každy z nich ma také záznam o georeferenci v souboru .tfw (tzv. World File), který je podporován aplikací MapTiler.
  3. Spusťte MapTiler. V prvním kroku volíte typ dlaždic, nejpoužívanější je asi Mercator, tj. dlaždice stejné jako má Google Maps a podobné systémy. Stačí tedy kliknout na "Continue".
  4. V druhém kroku otevřte jeden z .tif souborů z adresáře "bezesva". Georeference je automaticky načtena z World files - není tedy nutné ji zadávat. Pokračujeme s "Continue".
  5. Data ČUZK využívají pro georeferenci český systém souřadnic "S-JTSK GIS". Bohužel tato informace není uložena v hlavičce souboru GeoTIFF, proto musíme přidat definici tohoto českého systému ručně (jinak by byla automaticky načtena).
    Nejjednodušší je zkopírovat definici z odstavce "WKT" ze stránky: S-JTSK GIS: definice pomocí Proj4 a WKT do prázdného vstupního boxu.
    Náhled na umístění našeho souboru po transformaci souřadnic ze zvoleného systému se otevře pokud klikneme na "Preview the map...". Pokud je vše v pořádku pokračujeme dál.
  6. Další kroky jsou automaticky předvoleny nejvhodnějšími hodnotami, mužeme tedy pokračovat až k "Render".
  7. Po dokončení generování dlaždic se zobrazí odkaz na adresář s výsledkem. V tomto adresáři je připraven i ukázkový mashup: googlemaps.html a openlayers.html. Při otevření těchto souborů je mapa zobrazena jako nová překryvná vrstva standardních map. Samozřejmně je možné prezentaci upravit nebo využít kód pro vlastní projekty a mashups.

MapTiler také umožňuje generování prohlížečky a dlaždic pro obrázky bez georeference, např. rozměrné panoramatické fotografie, scany obrazů apod.

Pak je vhodné v prvním kroku zvolit "Image based tiles" a dale pokračovat již normálně.

Prezentace v Google Earth pomocí SuperOverlay KML je idealní při zvoleném prvním kroku "Image based tiles" a je generována pokud je k dispozici georeference v systému WGS84.

Definice českých mapových systémů pro použití v MapTiler:


Sepsal jsem zakladní popis a definice nejčastěji používaných souřadných systémů pro území České Republiky. Do MapTiler je možné vložit příslušnou definici (v textu vždy písmem Courier New) pomocí Copy&Paste:

Detailní popis, souvislosti a odkazy na zdroje informací jsou k dispozici na stránce: Map Coordinate Reference Systems: Czech Republic.


Ukázky českých map jejichž prezentace byla vygenerována pomocí MapTiler:



ČUZK - Základní mapa ČR v systému S-JTSK GIS
(zdrojový soubor: Ukázky dat z ČUZK GeoPortal)



SHOCart poskytl ukázku pro MapTiler v systému S-42
(zdrojový soubor: Prodej dat)



Rastr pro výškopis ČR (UTM33) vytvořen z Czech Free Geodata
(zdrojový soubor: Výškopis ČR na GisMaster)

Comments