}w !"#$%&'()+,-./012345
M ASARYKOVA UNIVERZITA FAKULTA INFORMATIKY
Vykreslovací systém MTB map pro OpenStreetMap ˇ B AKALÁ RSKÁ PRÁCE
Martin Tesaˇr
Brno, jaro 2010
Prohlášení Prohlašuji, že tato bakaláˇrská práce je mým puvodním ˚ autorským dílem, které jsem vypracoval samostatnˇe. Všechny zdroje, prameny a literaturu, které jsem pˇri vypracování používal nebo z nich cˇ erpal, v práci rˇ ádnˇe cituji s uvedením úplného odkazu na pˇríslušný zdroj.
Vedoucí práce: RNDr. Petr Holub, Ph. D. ii
Podˇekování Velmi rád bych podˇekoval pˇredevším RNDr. Petru Holubovi, Ph. D. za vedení této práce, vstˇrícnost, podnˇetné pˇripomínky a cˇ as mnˇe vˇenovaný. Mé díky patˇrí též otevˇrené komunitˇe uživatelu˚ a tvurc ˚ u˚ OpenStreetMap za jejich data a nástroje. Dále dˇekuji své rodinˇe a pˇrátelum ˚ za trpˇelivost a podporu.
iii
Shrnutí Cílem této práce je navrhnout specifický grafický styl map pro horská kola v rámci projektu OpenStreetMap. Tento styl následnˇe zpracovat a výsledné mapy prezentovat na webu. Uživatelum ˚ je k dispozici základní možnost zobrazení výškových profilu˚ svých tras. Souˇcástí práce je analýza sestavení systému a interakce jeho komponent. Práce navazuje na projekt OpenTrackMap.
Goal of this thesis is to design specific MTB map style within the frame of OpenStreetMap project. This style is processed and maps are displayed on the web site. Users have an option to display altitude profiles of their tracks. The thesis includes analysis of the system compilation and interaction of its components. The thesis is based on conclusions of OpenTrackMap project.
iv
Klíˇcová slova OpenStreetMap, MTB, Mapnik, OpenLayers, výškové profily, svobodná geografická data
v
Obsah 1
2
3
Úvod . . . . . . . . . . . . . . . . . . . Souˇcasný stav cyklistických map . . . 1.1 Definice mapy . . . . . . . . . . . 1.1.1 Zaˇrazení mapy . . . . . . 1.2 Tištˇené mapy . . . . . . . . . . . . 1.3 Webové mapové služby . . . . . 1.4 Projekt OpenStreetMap . . . . . . 1.4.1 Tvorba dat . . . . . . . . . 1.4.2 OSM editory . . . . . . . . 1.4.3 Fungující mapové služby Sestavení systému . . . . . . . . . . . 2.1 Architektura . . . . . . . . . . . . 2.2 Vektorová data . . . . . . . . . . . 2.2.1 Osmosis . . . . . . . . . . 2.2.2 Pˇríprava databáze . . . . 2.2.3 Osm2pgsql . . . . . . . . 2.2.4 Další datové soubory . . . 2.3 Rastrová data . . . . . . . . . . . 2.3.1 Potˇrebný software . . . . 2.3.2 Vrstevnice . . . . . . . . . 2.3.3 Stínování a hypsometrie . 2.4 Mapnik . . . . . . . . . . . . . . . 2.5 Prezentace mapy . . . . . . . . . 2.5.1 Mod_tile . . . . . . . . . . 2.5.2 OpenLayers . . . . . . . . Grafický styl mapy . . . . . . . . . . . 3.1 Mapnik . . . . . . . . . . . . . . . 3.1.1 Tvorba stylu . . . . . . . . 3.1.2 Generalizace . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 5 5 5 5 6 6 7 7 8 10 10 11 12 13 14 15 16 16 17 18 20 21 21 22 23 24 24 26 1
3.2
4
A B C D
Webová prezentace . . . . 3.2.1 Návrh stránky . . . 3.2.2 Doplnkové ˇ funkce 3.3 Výškové profily . . . . . . Mˇerˇení výkonnosti . . . . . . . Závˇer . . . . . . . . . . . . . . . Literatura . . . . . . . . . . . . . Obsah CD . . . . . . . . . . . . Výsledné mapy . . . . . . . . . Vybrané konfiguraˇcní soubory Tabulka mˇerˇítek . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
27 27 28 28 32 36 37 41 42 44 47
2
Úvod ˇ V posledních 20 letech zažívá cykloturistika v Ceské republice veliký rozmach. Buduje se velké množství cyklostezek, organizují se závody pro profesionální, ale i rekreaˇcní jezdce. Tímto vzniká nutnost tvorby map pro hledání neznámých cest, plánování výletu, ˚ cˇ i tras na dovolené, vˇcetnˇe zobrazení dodateˇcných informací duležitých ˚ pro tyto aktivity. Existují mapy na velmi dobré technické úrovni, které bˇežným cyklistum ˚ vyhovují. Cyklistický tábor se však dˇelí na nˇekolik skupin, z nichž každá má specifické nároky. Pro potˇreby jezdcu˚ na horských kolech (MTB, mountain bike) žádná speciální mapa doposud vytvoˇrena nebyla. Pro zpracování takového úkolu se nabízí projekt OpenStreetMap (OSM), který prostˇrednictvím svých pˇrispˇevatelu˚ vytváˇrí a poskytuje svobodná geografická data celého svˇeta. Každý, kdo chce, muže ˚ tato data dále libovolnˇe zpracovávat a prezentovat za jakýmkoli úˇcelem a jakýmkoli zpusobem. ˚ Na jiná geografická data, cˇ i volnˇe dostupné mapy se vˇetšinou vztahují právní, cˇ i technická omezení, která znesnadnují ˇ jejich užívání [1]. Cílem této bakaláˇrské práce je použít data a nástroje OSM k vytvoˇrení specifické mapy pro jezdce na horských kolech. Tuto poté zobrazit na internetu, aby byla komukoli dostupná. Specifika cílové skupiny uživatelu˚ vyžadují znázornˇení stezek pro horská kola, turistických tras, reliéfu krajiny, nároˇcnosti povrchu tras a zobrazení výškových profilu. ˚ Je tˇreba se nechat alesponˇ pˇribližnˇe vést doporuˇcenými postupy tvurc ˚ u˚ Openˇ StreetMap [2]. Ke zpracování práce bylo použito geografických dat pro území Ceské republiky a nejbližšího okolí. Všechna data jsou však dostupná prakticky pro celý svˇet a nemˇelo by cˇ init velké komplikace aplikovat uvádˇené postupy pro ostatní cˇ ásti svˇeta. Práce významnˇe navazuje na projekt OpenTrackMap [3], který má za cíl zobrazení cˇ eských turistických tras. Jeho autor navíc struˇcnˇe popsal zpusob ˚ vytvoˇrení takového projektu, což bylo použito jako primární zdroj informací [4]. Popisuje však nejen možné postupy zpracování, ale i duvody ˚ použití, cˇ i nepoužití vyzkoušených dat a aplikací. V první cˇ ásti shrnuji souˇcasný stav tištˇených i internetových cykloturistických map, a blíže pˇredstavuji projekt OSM, vˇcetnˇe existujících projektu˚ jeho uživatelu, ˚ které mají s cyklistikou nˇejakou souvislost. Ve druhé kapitole jsem pˇripravil postup tvorby celého 3
systému, který je potˇrebný ke tvorbˇe originální mapy. Od instalace nezbytných programu˚ a stažení dat, pˇres zpusob ˚ ukládání geografických dat v databázi a rendering, až po nastavení serveru a webového rozhraní. Ve tˇretí cˇ ásti popisuji mnou vytvoˇrený grafický styl mapy, který se snaží ctít kartografické zásady, metodu generování výškových profilu˚ a možnosti internetové prezentace pomocí knihovny OpenLayers [5]. V další kapitole se zabývám testováním rychlosti renderingu a v závˇereˇcné cˇ ásti možnostmi dalšího rozšíˇrení projektu v budoucnu, s ohledem na další vývoj použitých nástroju. ˚
4
Kapitola 1
Souˇcasný stav cyklistických map 1.1 Definice mapy Pod pojmem mapa rozumíme zmenšené, zevšeobecnˇené zobrazení povrchu Zemˇe, sestrojené podle matematického zákona (kartografického zobrazení) na rovinˇe a vyjadˇrující pomocí smluvených znaku˚ rozmístˇení a vlastnosti objektu˚ [6]. Cyklistickou mapu tvoˇrí topografický (místopisný, podrobný) podklad, který má cyklistickou tematickou nadstavbu. Ta je znázornˇena na úkor jiných pro cyklistiku nepodstatných informací [7]. Nadstavbu tvoˇrí linie znaˇcených cyklostezek, trasy pro horská kola, turistické trasy a další duležité ˚ body, jako jsou turistické zajímavosti, nabídky ubytovacích a stravovacích zaˇrízení, ale i prodejny kol. 1.1.1 Zaˇrazení mapy ˇ Podle územního rozsahu lze mapu vymezit na území Ceské republiky a nejbližšího okolí. Podle úˇcelu mužeme ˚ hovoˇrit o mapˇe pro orientaci, cˇ i pro sport – jízdu na horských kolech. Obsah byl vymezen definicí cyklistické mapy. Podle mˇerˇ ítka se úplnˇe zaˇradit nedá, webové rozhraní umožnuje ˇ zobrazení velmi malých mˇerˇ ítek (celá Zemˇe) i velkých mˇerˇ ítek až do 1 : 2 000. Vzhledem k úˇcelu a obsahu je kladen duraz ˚ na správné zobrazení velkých mˇerˇ ítek 1 : 200 000 a vˇetších.
1.2 Tištˇené mapy Vydáváním tištˇených cykloturistických map se zabývají tˇri nakladatelství, která vydᡠSHOCart, s. r. o. [8], Kartografie Praha, a. s. [9] vají své edice pokrývající celé území CR: a TRASA, s. r. o., obchodní spoleˇcnost Klubu cˇ eských turistu˚ [10]. Mapy jsou obecnˇe na velmi vysoké úrovni. Cílovou skupinou tˇechto nakladatelství jsou rekreaˇcní cyklisté, kteˇrí vyhledávají spíše novˇe budované asfaltové cyklostezky, pˇrípadnˇe málo frekventované silnice. Vyznavaˇce jízdy v nezpevnˇeném terénu cˇ asto 5
ˇ 1. S OU CASNÝ STAV CYKLISTICKÝCH MAP
opomíjejí. Nedá se rˇ íct, že by v mapách vubec ˚ nebyly znaˇceny stezky pro horská kola, ale jsou zpravidla slouˇceny do jedné kategorie „stezek pro MTB“. Nevýhodou tištˇených map je jejich pevnˇe dané mˇerˇ ítko. Dukazem ˚ toho muže ˚ být pestrá škála mˇerˇ ítek, kterou jednotlivá nakladatelství volí. Nejvˇetší používá SHOCart – 1 : 50 000, 1 : 60 000 a 1 : 75 000. Kartografie Praha stabilnˇe 1 : 70 000 a nejmenší volí Klub cˇ eských turistu˚ – 1 : 100 000. Ideální pomˇer se zvolit nedá, jelikož je naše území velmi pestré a škála uživatelu˚ map je široká. Pro horská kola se jeví jako nejvhodnˇejší mˇerˇ ítko 1 : 50 000, pˇrípadnˇe i vˇetší [11]. Duvodem ˚ jsou specifika pohybu na horském kole, které je obecnˇe pomalejší a zpravidla je používáno v cˇ lenitˇejším a cˇ asto nepˇrehledném teˇ rénu. Rešením tˇechto problému˚ muže ˚ být webová kartografie, v níž muže ˚ být doplnˇena možnost tisku.
1.3 Webové mapové služby Je známo, že cˇ eská webová kartografie je velmi bohatá. Každý významný zpravodajský, cˇ i vyhledávací server má svou online mapu. Zpravidla je v nich možnost zobrazit cyklostezky jako pˇrekryvnou vrstvu, zobrazení tras pro horská kola ale umožnuje ˇ pouze SHOCart na portálu cykloserver.cz [12] a to pouze v rozsahu podobném jeho tištˇené podobˇe. Cykloserver.cz se dá považovat za jakousi vlajkovou lod’ tuzemských online cykloturistických map. Prezentuje vlastní mapy, které se kvalitou zobrazení velmi blíží tištˇeným originálum. ˚ Využívá znaˇcnˇe upraveného aplikaˇcního rozhraní GoogleMaps [13]. Umožnuje ˇ mˇerˇ ení vzdáleností i výškových profilu. ˚ Jediné, co mu zatím chybí, je systém vyhledávání vlastních cyklotras podle zadaných bodu˚ (smˇerování) a lepší podpora MTB stezek. Na všechny doposud zmínˇené mapy se vztahují zákonná omezení používání. Poskytují je komerˇcní spoleˇcnosti, které svá data draze získávají a pˇredevším si je samy upravují. Není možné tato data zdarma použít k vytvoˇrení vlastní mapy nebo do dat nˇejak operativnˇe zasahovat v pˇrípadˇe, že nám na mapˇe nˇeco schází. Tyto komplikace se snaží rˇ ešit ojedinˇelý projekt OpenStreetMap [1].
1.4 Projekt OpenStreetMap Jak už bylo rˇ eˇceno v úvodu, projekt OpenStreetMap (OSM) vytváˇrí a poskytuje geografická data každému, kdo je chce. Data jsou chránˇena licencí CC-By-SA 2.0 (Creative 6
ˇ 1. S OU CASNÝ STAV CYKLISTICKÝCH MAP
Commons, Attribution-Share Alike 2.0 Generic), která dovoluje data volnˇe upravovat a šíˇrit, za podmínky uvedení autora dat nebo vlastníka licence a podmínky zachování licence, tedy šíˇrení vlastního díla pod stejnou nebo sluˇcitelnou licencí [14]. 1.4.1 Tvorba dat Každý dobrovolník muže ˚ OSM pˇrispívat tvorbou geografických dat. Staˇcí se zaregistrovat na stránkách OSM [1]. Tento pˇrístup má pochopitelnˇe své výhody i nevýhody. Pˇrispívat muže ˚ každý, bez jakýchkoli záruk za správnost dat. Data pˇribývají v ruzných ˚ lokalitách nerovnomˇernˇe, lépe zmapována jsou velká mˇesta a jejich okolí, rˇ ídce osídlené oblasti nemusí být zmapovány vubec. ˚ Obrovskou výhodou je neomezená možnost vkládání nejruznˇ ˚ ejších atributu˚ geodat. Stejnˇe tak potenciálnˇe neomezená skupina pˇrispˇevatelu˚ muže ˚ být postupem cˇ asu velmi silnou konkurencí pro tvurce ˚ komerˇcních dat. Metody tvorby geodat jsou témˇerˇ neomezené, pouze se nesmí kopírovat data chránˇená autorským zákonem. Nejˇcastˇejším zpusobem ˚ je nahrávání GPS záznamu˚ z osobních GPS pˇrístroju. ˚ Vzniklé soubory staˇcí pˇrevést do poˇcítaˇce a pomocí nˇekterého OSM editoru je nahrát do datových souboru˚ OSM. Další možností je jakési obkreslování volnˇe dostupných satelitních snímku˚ Zemˇe. Souhlas k tomu udˇelil napˇríklad Yahoo! [15]. Jeho poskytnuté snímky nejsou zpravidla tak podrobné, jako u dalších komerˇcních institucí, ale k mapování silniˇcní sítˇe a ruzných ˚ velkých objektu, ˚ cˇ i ke kontrole GPS záznamu˚ se dají velmi dobˇre použít. V další fázi se mohou k jednotlivým bodum ˚ a liniím pˇridávat nejruznˇ ˚ ejší atributy, napˇr. klasifikace silnic, jména ulic, názvy a výšky vrcholu˚ atp. Tato data se dají získat tˇreba jen prostým pozorováním a zapisováním toho, co venku spatˇríme. 1.4.2 OSM editory Existuje pomˇernˇe široká škála editoru, ˚ nejpoužívanˇejší jsou však následující 3: •
Potlatch je online editor, který je implementován pomocí technologie Adobe Flash. Po pˇrihlášení ho lze spustit pˇrímo na hlavních stránkách OSM. Umožnuje ˇ okamžité úpravy OSM dat i za pomoci satelitních snímku, ˚ jako podkladové vrstvy. Jeho hlavní nevýhodou je pomalá interakce ve srovnání s dalšími offline editory. Obecnˇe je vhodný pro zaˇcínající tvurce ˚ [16].
•
JOSM (Java OpenStreetMap Editor) je urˇcen pro pokroˇcilé uživatele. Nabízí širokou škálu funkcí a je rozšiˇritelný pomocí zásuvných modulu. ˚ Bez jednoho z nich napˇríklad nejde zobrazit satelitní snímky jako podkladovou vrstvu. Dají se v nˇem 7
ˇ 1. S OU CASNÝ STAV CYKLISTICKÝCH MAP
zobrazit lokálnˇe uložená OSM data, jejichž zmˇeny se mohou po dokonˇcení práce jednorázovˇe nahrát do OSM. Jedná se o editor, kterým byla nahrána naprostá vˇetšina dat [16]. •
Merkaartor je jednoduchý a intuitivní offline editor. Nabízí zobrazování vrstev cest s pruhledností ˚ a možnost použití vlastních XML znaˇcek a atributu, ˚ jejich podstata bude popsána v další kapitole [16].
1.4.3 Fungující mapové služby Pˇrehled poskytuje pouze projekty, které nˇejak souvisí s úˇcelem naší mapy. Hodnocení souˇcasného stavu se musí brát s rezervou, jelikož neustále vznikají nové projekty a stávající služby se velmi živelnˇe vyvíjí. •
OpenStreetMap.org: aˇckoli nejde o mapu pro cyklisty, nemužeme ˚ tuto hlavní OSM stránku z tohoto výˇctu vynechat [17]. Používá cˇ istˇe OSM data a proto neznázornuje ˇ reliéf1 . Dává nám možnost pˇrepínat mezi nˇekolika základními mapami, avšak pouze Mapnik a Osmarender jsou pˇrímou souˇcástí. Tyto se liší stejnojmennými vykreslovacími systémy, které je generují. Styl mapy je dobˇre cˇ itelný, hlavní duraz ˚ je kladen na zobrazení silniˇcní sítˇe. Jednotlivé klasifikace komunikací jsou zobrazeny barvami rozliˇcných odstínu, ˚ což v kartografii není bˇežné, nicménˇe tady to dobˇre slouží ke zlepšení rozlišitelnosti. Zaujme pˇredevším modrá barva dálnic, která by mˇela být vyhrazena vodním tokum ˚ a plochám. Z hlediska dalších služeb je poskytnuta možnost exportu mapy podle daného mˇerˇ ítka a geografických souˇradnic a vyhledávání podle názvu. ˚ Navíc lze mapu upravit výše zmínˇeným editorem Potlatch, zjistit historii úprav dalších uživatelu˚ a jejich nejnovˇejší GPS záznamy, cˇ i nejruznˇ ˚ ejší poznámky k mapování.
•
OpenCycleMap.org: cyklistická mapa celého svˇeta [?]. Základ silniˇcní sítˇe je podobný OSM. Znázornuje ˇ reliéf pomocí barevné hypsometrie, která je ve velkých ˇ mˇerˇ ítkách doplnˇena vrstevnicemi. Rešení pomocí hypsometrie ve velkých mˇerˇ ítkách považuji za nešt’astné. V nižších oblastech bývá mapa „celá zelená“, ve vyšších naopak „celá hnˇedá“ a podobnˇe. Kombinací nˇekterých pruhledných ˚ prvku˚ mapy s mˇenícím se podkladem se uživateli ztˇežuje orientace. Zobrazeny jsou témˇerˇ výhradnˇe znaˇcené cyklostezky, trasy pro horská kola jsou postupnˇe a velmi
1. Toto neplatí pro OpenCycleMap, ale ta je na této stránce pouze zobrazena, nikoli tvoˇrena
8
ˇ 1. S OU CASNÝ STAV CYKLISTICKÝCH MAP
nevýraznˇe doplnovány ˇ (pruhledné ˚ svˇetle modˇre teˇckované trasy na svˇetle zeleném hypsometrickém podkladu najdeme prakticky jen v pˇrípadˇe, že víme, kde je hledat). Lze ji prohlížet i jako standardní vrstvu OSM, z cˇ ehož plynou i stejné možnosti a funkcionalita. •
OpenTrackMap: nezobrazuje žádný cyklistický obsah, nicménˇe dává návod jak zobrazit turistické trasy, rozcestníky a reliéf (vrstevnice a stínování) [3]. Jde pouze o mapu, neumožnuje ˇ žádnou interakci s uživatelem ve smyslu hledání tras, zájmových bodu, ˚ exportu map a podobnˇe. Turistický podklad je vizuálnˇe obdobný ˇ naší MTB mapˇe. Zobrazuje území Ceské republiky.
•
HikeBikeMap.de: má podobný úˇcel jako naše mapa, nicménˇe ke zpusobu ˚ vyznacˇ ení má ponˇekud odlišný pˇrístup – trasy pro horská kola neznaˇcí, pouze graficky zvýraznuje ˇ do popˇredí všechny nezpevnˇené stezky [19]. Turistické trasy symbolizuje jednotlivými znaˇckami podél trasy, nikoli liniovˇe. Reliéf je znaˇcen obdobnˇe, stínováním i vrstevnicemi. Interakce je stejná jako v pˇredchozím pˇrípadˇe. Jde o nˇeˇ mecký projekt, proto se zatím nˇekterá doplnková ˇ data (vrstevnice) pro území CR nezobrazují.
•
OpenMTBMap: jediná mapa, která zobrazuje MTB trasy [20]. Není však dostupná pro webové prohlížeˇce, primárnˇe je urˇcena pro GPS pˇrístroje, na poˇcítaˇci lze zobrazit ve speciálních aplikacích. Dostupná je tedy ve formˇe datových souboru˚ pro GPS pˇrístroje, rozsahovˇe tradiˇcnˇe rozˇclenˇených podle administrativních hranic státu, ˚ cˇ i spolkových zemí.
9
Kapitola 2
Sestavení systému Samotné zprovoznˇení systému, který z poˇcáteˇcních OSM dat vyprodukuje webovou stránku, na níž jsou data zobrazena je zejména cˇ asovˇe velmi nároˇcné. Existují ruzné ˚ návody, ale žádný není nijak úplný, protože každý z tvurc ˚ u˚ má svou pˇredstavu a svuj ˚ projekt. Navíc všechny nástroje prochází rychlým vývojem a vzájemná konfigurace se muže ˚ v ruzných ˚ verzích lišit. Následující postup jsem pˇripravil a aplikoval na stroji s operaˇcním systémem Ubuntu 9.10 Karmic Koala (Intel Core 2 Duo 2 GHz, 3 GB RAM). Aˇckoli je vˇetšina aplikací dostupná i pro Windows, volbu systému založeného na Unixu nelze než doporuˇcit. Jednotliví vývojáˇri poskytující své skripty, cˇ i drobné aplikace, které se cˇ asto mohou s výhodou použít, jsou psané nejprve pro Linux. ˇ Cást aplikací je pro Ubuntu dostupná ve formˇe balíku˚ a jejich instalace je tím velmi zjednodušená. Postupy pro instalaci v jiných distribucích Linuxu zde uvádˇeny nejsou, ale zpravidla jsou srozumitelnˇe popsány v dokumentacích jednotlivých produktu. ˚
2.1 Architektura Architektura je velmi podobná systému OpenStreetMap. Vektorová data jsou pomocí Osm2pgsql nahrána do databáze PostgreSQL s rozšíˇrením pro práci s prostorovými daty PostGIS. Vykreslování mapových rámcu˚ zajišt’uje Mapnik podle stylového XML dokumentu. Na serveru Apache je spuštˇen modul Mod_tile, který se dotazuje, zda jsou na serveru uloženy mapové cˇ ásti požadované uživatelem. Pokud ne, je poslána žádost pˇrímo nástroji Mapnik k vykreslení odpovídajících cˇ ástí (rámcu). ˚ O zobrazování map se stará HTML dokument, který využívá rozhraní Slippy map založené na AJAX knihovnˇe OpenLayers [4]. Oproti hlavnímu OSM systému jsem doplnil zpracování výškových dat. Do stejné databáze PostGIS jsou nahrána i puvodnˇ ˚ e rastrová data vrstevnic prostˇrednictvím knihovny GDAL a aplikace Shp2pgsql. Stínování reliéfu je uloženo jako 10
2. S ESTAVENÍ SYSTÉMU obrázek ve formátu TIFF. Na serveru jsou spouštˇeny CGI skripty, starající se o generování profilu˚ a export map na základˇe žádostí uživatelu. ˚
Obrázek 2.1: Schéma architektury systému
2.2 Vektorová data Úplným základem je soubor ve formátu XML – planet.osm. Obsahuje koˇrenový element
, ve kterém jsou elementy – vyjádˇrení geografických hranic souboru, <node> – bodové uzly, <way> – linie s odkazy na uzly (je-li poˇcáteˇcní bod roven koncovému, odpovídají polygonum), ˚ – vztahy mezi liniemi [21]. V rámci tˇechto základních elementu˚ jsou zahrnuty další znaˇcky obsahující informace vzniku elementu, ˚ geografické poloze nebo nejruznˇ ˚ ejší atributy (tags). Puvodní ˚ soubor je distribuován v komprimovaném formátu na stránce http://planet.openstreetmap.org/, ale je možné ho stáhnout i z jiných zdroju˚ (napˇr. http://ftp.heanet.ie/mirrors/openstreetmap.org/). Aktualizace na základním zdrojovém serveru probíhá jednou týdnˇe. Jinde jsou soubory aktualizovány i nˇekolikrát dennˇe. Na tomto souboru lze názornˇe ilustrovat rozvoj celého projektu, viz obr. 2.2. Kromˇe dat pro celou planetu, která dnes mají i v komprimovaném formátu velikost rˇ ádovˇe v GigaBytech (velikost rozbaleného souboru pˇrekroˇcila 150 GB), jsou dostupná ˇ data pro jednotlivé kontinenty i samostatné státy. Pro Ceskou republiku jsou dostupná napˇríklad na webu http://osm.kyblsoft.cz/archiv/, aktualizují se v souˇcasné dobˇe dennˇe. 11
2. S ESTAVENÍ SYSTÉMU
Obrázek 2.2: Graf vývoje velikosti komprimovaného souboru planet.osm.bz2 v závislosti na cˇ ase. Data jsou pˇrevzata z http://planet.openstreetmap.org/. Existuje však i zpusob ˚ extrahování datových souboru˚ podle vlastních rozsahových parametru. ˚ 2.2.1 Osmosis Osmosis je konzolová aplikace, která umožnuje ˇ zpracování OSM dat, jejich tˇrídˇení, nahrávání do databáze, vytváˇrení OSM dat zpˇetnˇe z databáze a extrahování na základˇe urˇcených zemˇepisných souˇradnic [22]. V Linuxu ji není tˇreba instalovat, staˇcí rozbalit staženou aktuální verzi na disk a pˇridˇelit práva spuštˇení souboru osmosis v adresáˇri bin. V mém pˇrípadˇe jsem použil až poslední zmínˇenou funkci k vytvoˇrení malého datového souboru pro testovací úˇcely. Osmosis „oˇrezání“ zvládá mnohem rychleji, než dále zmínˇený Osm2pgsql [4]. Pˇríklad vytváˇrí datový soubor Brna a jeho severozápadního okolí: bzcat ../Data/czech_republic.osm.bz2 | ./osmosis --read-xml \ file=- --bounding-box left="16.5" right="16.62" top="49.3" \ bottom="49.18" --write-xml file=../Data/brno.osm.gz 12
2. S ESTAVENÍ SYSTÉMU Vstupní soubor czech_republic.osm.bz2 mˇel pˇribližnˇe 180 MB, výstupní brno.osm.gz 4 MB. Zpracování trvalo 164,3 s. Rozbalený brno.osm má pˇribližnˇe 45 MB a tak už se dá rozumnˇe otevˇrít v libovolném textovém editoru. 2.2.2 Pˇríprava databáze V poˇcátcích své existence využíval projekt OSM databázi MySQL. Její nevýhodou je chybˇející rozšíˇrení pro ukládání prostorových (geografických) dat. Proto v souˇcasné dobˇe využívá databázi PostgreSQL s rozšíˇrením PostGIS [23]. PostgreSQL ve verzi 8.4 je dostupná jako balík Ubuntu. Ovládání je možné konzolovˇe i pomocí grafického rozhraní PgAdmin, ve kterém lze intuitivnˇe vytvoˇrit databázový server, pˇrípadnˇe pokládat SQL dotazy. Konfigurace se provádí v souborech pg_hba.conf (nastavení práv uživatelu, ˚ pˇrístupu k databázím, IP adres databázového serveru a metody autentizace) a postgresql.conf (umístˇení databázových souboru, ˚ nastavení pˇripojení, využití pamˇeti a mnoho dalšího) [24]. V našem pˇrípadˇe jsem musel pouze zvˇetšit velikost vyrovnávací pamˇeti pro systémové objekty (shared_buffers v postgresql.conf ) na hodnotu 128 MB. A to až ve chvíli, kdy jsem si ze zkušebních duvod ˚ u˚ pˇripojil 3 databáze najednou – první s daty ˇ další s malým výˇrezem okolí Brna a tˇretí s vrstevnicemi. celé CR, Rozšíˇrení PostGIS je tˇreba doinstalovat ze zdrojových kódu˚ (v balících je pouze pro starší verzi PostgreSQL). Ještˇe pˇredtím je však nutné nainstalovat knihovny PROJ4 (knihovna kartografických zobrazení – projekcí) a GEOS (Geometry Engine). Staˇcí ve verzích PROJ4-4.6.1 a GEOS 3.1.0 jako balíky Ubuntu. Po rozbalení archivu s PostGIS ho následujícím postupem nainstalujeme a vytvoˇríme prostorovou databázi [4, 24]. cd postgis-1.5.0 # instalace PostGIS ./configure make sudo make install # vytvoreni prostorove databaze su postgres # postgres je tzv. superuser databaze createuser dbusername createdb -E UTF8 -O dbusername gis #zatim neni prostorova createlang plpgsql psql -d gis -f /usr/share/postgresql/8.4/postgis/postgis.sql echo "ALTER TABLE geometry_columns OWNER TO dbusername; \ ALTER TABLE spatial_ref_sys OWNER TO dbusername;" \ 13
2. S ESTAVENÍ SYSTÉMU | psql -d gis psql -d gis -f /usr/share/postgresql/8.4/contrib/_int.sql
2.2.3 Osm2pgsql Jak už název napovídá, další konzolová aplikace Osm2pgsql umožnuje ˇ konverzi OSM dat do databáze PostgreSQL. Sestavíme ji se ze zdrojových kódu˚ za pˇredpokladu, že už máme díky instalaci PostGIS potˇrebné knihovny, instalace není nutná. svn co http://svn.openstreetmap.org/applications/utils\ /export/osm2pgsql cd osm2pgsql ./autogen.sh ./configure make Zpusob ˚ nahrání je primárnˇe urˇcen pro vykreslovací nástroj Mapnik. Používá kartografickou projekci s oznaˇcením 900913, která je známa jako projekce Google Mercator [25]. Ve výchozím stavu databáze není zahrnuta a musíme ji pˇridat: psql -d gis -f 900913.sql
# ve slozce osm2pgsql
Výbˇer jednotlivých parametru˚ a atributu˚ pro nahrání do databáze specifikujeme ve stylovém souboru [26]. Náš vychází ze stylu OSM, k nˇemuž jsem pˇridal turistické trasy podle OpenTrackMap a trasy pro horská kola následujícím zpusobem: ˚ # OsmType way way way way way way ...
Tag mtb mtb:scale mtb:scale:uphill mtb:description incline surface
DataType text text text text text text
Flags linear linear linear linear linear linear
Formát tohoto souboru je pomˇernˇe zˇrejmý už z výchozího stylu OSM, Tag odpovídá znaˇckám v datovém souboru OSM a následnˇe sloupci v databázové tabulce, DataType urˇcuje datový typ záznamu ve sloupci databáze (témˇerˇ výhradnˇe se používá text), Flags nabývá hodnot linear nebo polygon, podle geometrie objektu. Vlastní nahrání zprostˇredkuje následující pˇríkaz: 14
2. S ESTAVENÍ SYSTÉMU ./osm2pgsql -s -d gis ../Data/czech_republic.osm.bz2 -W \ -S ./default.style Parametr -s urˇcuje tzv. slim mód, který na rozdíl od výchozího umožnuje ˇ aktualizace dat pomocí pˇrírustkových ˚ souboru, ˚ tedy bez nutnosti nahrávání pokaždé celého OSM souboru, a je obecnˇe doporuˇcován. Databázi volíme pomocí parametru -d, následuje umístˇení datového souboru, parametrem -W vynutíme dotaz na heslo k pˇrístupu do databáze a -S urˇcuje umístˇení stylového souboru [26]. ˇ Zpracování vstupního komprimovaného souboru s daty Ceské republiky (180 MB) zabralo pˇribližnˇe 25 minut. Pro srovnání lze uvést, že nahrání vstupního souboru s okolím Brna (4 MB) trvalo 34 sekund, platí zde tedy pˇrímá úmˇera. V databázi se vytvoˇrí 3 tabulky odpovídající základním dceˇriným elementum ˚ z datového souboru OSM (planet_osm_nodes, _ways a _rels). Tyto jsou pak podle stylového dokumentu dále zpracovávány do odvozených tabulek (_point, _line, _roads, _polygon), obsahujících požadované atributy, geometrie a indexy pro rychlejší vyhledávání. Uvedený pˇríklad slouží k vytvoˇrení zcela nových záznamu˚ v databázi a pˇrípadné staré vymaže. Pro pˇridání dat je tˇreba uvést parametr -a (append) a jméno pˇrírustkového ˚ souboru [26]. Pˇrestože jsou naše data v poˇrádku nahrána, ve fázi vykreslování by se objevily problémy se zobrazením soubˇežných turistických a MTB tras, jelikož jsou v tabulce planet_osm_line uloženy zvlášt’, ale odkazují na stejné geometrie cest. Tento problém rˇ eší skript relations2lines.py z projektu OpenTrackMap [4], který vytvoˇrí zcela novou tabulku v databázi, v níž ukládá záznamy se seskupenými atributy turistických a MTB tras. K jeho spuštˇení je však tˇreba doinstalovat balík python-psycopg2 a bylo nezbytné skript upravit pro naše lokální nastavení.
2.2.4 Další datové soubory Chceme-li na svém serveru zobrazovat data pro celý svˇet nebo území, které je alesponˇ cˇ ásteˇcnˇe ohraniˇceno moˇrem, je výhodné použít pomocné datové soubory processed_p.shp a shoreline_300.shp. Zaruˇcíme tak správné vykreslení pobˇrežních tvaru. ˚ Staˇcí stáhnout archivy tˇechto souboru, ˚ rozbalit je a uložit na disk (vˇcetnˇe tˇech s jinou pˇríponou, ale stejným názvem). Jde o formát shapefile, což je bˇežnˇe používaný vektorový formát komerˇcních geografických informaˇcních systému. ˚ Soubor shoreline_300.shp je ménˇe detailní, používá se u zobrazení menších mˇerˇ ítek do 1 : 450 000, processed_p.shp je pˇresnˇejší a je tedy vhodný pro mˇerˇ ítka vˇetší. 15
2. S ESTAVENÍ SYSTÉMU OSM navíc používá soubor builtup_area.shp, kterým zobrazuje zastavˇené území v mˇerˇ ítkách, v nichž už mˇesto zabírá plochu vˇetší než nˇekolik pixelu, ˚ ale ještˇe nejde zástavbu zobrazit na úrovni jednotlivých budov samostatnˇe [27].
2.3 Rastrová data Ke znázornˇení reliéfu a k výpoˇctu výšek bodu˚ v profilech jsem použil rastrová výšková data USGS SRTM (United States Geological Survey, Shuttle Radar Topography Mission) poskytovaná vládou Spojených státu˚ amerických [37]. Data jsou získávána dálkovým pruzkumem ˚ Zemˇe metodou radarové interferometrie. K dispozici jsou oblasti od 60 st. severní šíˇrky po 56 st. jižní šíˇrky, což zahrnuje 80 % zemské souše (prakticky vše vyjma neobydlených polárních oblastí). Rozlišení dat je (v námi používané verzi SRTM3) 3 obloukové sekundy, což na rovníku pˇribližnˇe odpovídá 92 metrum. ˚ V našich zemˇepisných šíˇrkách je rozlišení ve východozápadním smˇeru 58–61 m, v severojižním smˇeru je stejné jako na rovníku. Data jsou organizována do jednotlivých rámcu˚ obsahujících vždy „ˇctverec“ zemského povrchu o hranˇe délky jednoho geografického stupnˇe. Rámce jsou pojmenovány ˇ jihozápadního) rohu rámce. podle zemˇepisných souˇradnic levého dolního (na území CR Chceme-li data pro Brno (49,2◦ s. š.; 16,6◦ v. d.), potˇrebujeme soubor N49E016.hgt.zip. Zemˇepisné souˇradnice 49 a 16 tedy odkazují na geometrický stˇred útvaru v levém dolním rohu o stranách 92 a 60 metru. ˚ Jeden soubor obsahuje 1201 rˇ ádku, ˚ každý s 1201 hodnotami, údaje na krajích se pˇrekrývají se sousedními rámci. Vzhledem ke zpusobu ˚ získávání dat se v nich mohou vyskytnout ruzné ˚ defekty – vodní hladiny mohou být špatnˇe zmˇerˇ eny, prázdná místa, lokální výškové anomálie. Proto je tˇreba je brát s rezervou. Pro naše potˇreby však plnˇe dostaˇcují. 2.3.1 Potˇrebný software Ke zpracování souboru˚ s pˇríponou .hgt.zip byl použit volnˇe dostupný skript srtm_generate_hdr.sh. Vytváˇrí potˇrebné hlaviˇcky k výškovým souborum ˚ podle jejich názvu, ˚ které obsahují zpusob ˚ projekce a umístˇení. Ještˇe pˇred jeho spuštˇením je tˇreba nainstalovat z balíku˚ knihovnu GDAL (Geography Data Abstraction Library, ve verzi 1.5.2)[28]. Soucˇ ástí instalace jsou i spustitelné soubory k manipulaci s výškovými daty. Zdrojové kódy jsou k dispozici i pro verzi 1.7.1, jejíž souˇcástí už jsou i níže popsané nástroje DEMTools (spouští se stejnˇe, pouze se na zaˇcátek pˇríkazu pˇripíše gdaldem) a díky níž by mˇelo být umožnˇeno konzistentní popisování vrstevnic [29]. Vykreslovací systém Mapnik ovšem 16
2. S ESTAVENÍ SYSTÉMU tohoto vylepšení zatím nedokáže využít. Také jsem mˇel v nové verzi problém s použitím nástroje Gdalwarp, který z neznámých duvod ˚ u˚ generoval v dolní cˇ ásti výstupního obrázku pruh, který symbolizoval, že nemá pro tuto cˇ ást výšková data, pˇrestože ve vstupním souboru zahrnuta byla. K vizualizaci stínování slouží programy DEMTools1 . Uložený archiv zdrojových souboru˚ staˇcí rozbalit a zkompilovat pˇríkazem make2 [30]. Vzniklé binární soubory neuškodí pˇresunout do nˇejaké složky, která se nachází v promˇenné PATH (ideálnˇe /usr/local/bin). 2.3.2 Vrstevnice Vrstevnice ukládáme v databázi PostGIS, není problém použít stejnou databázi jako pro vektorová data z planet.osm podobnˇe jako v následujícím skriptu [4]: CREATE="1" for TILE in N*E*.hgt.zip; do yes | ./srtm_generate_hdr.sh ${TILE} rm -f "${TILE%%.zip}" "${TILE%%.hgt.zip}.shp" \ "${TILE%%.hgt.zip}.shx" "${TILE%%.hgt.zip}.dbf" gdal_contour -i 5 -snodata -32767 -a height \ "${TILE%%.hgt.zip}.tif" "${TILE%%.hgt.zip}.shp" if [ "$CREATE" == "1" ]; then shp2pgsql -d -I -g way "${TILE%%.hgt.zip}" contours \ | psql -q gis else shp2pgsql -a -g way "${TILE%%.hgt.zip}" contours | \ psql -q gis fi; unset CREATE rm -f "${TILE%%.hgt.zip}.shp" "${TILE%%.hgt.zip}.shx" \ "${TILE%%.hgt.zip}.dbf" rm -f "${TILE%%.hgt.zip}.bil" "${TILE%%.hgt.zip}.hdr" \ "${TILE%%.hgt.zip}.prj" done 1. DEM je zkratka pro Digital Elevation Model – digitální výškový model 2. V pˇrípadˇe problému˚ muže ˚ pomoci upravit v souboru Makefile následující: GDAL_LIB=-I /usr/include/gdal/ -L/usr/lib/ -lgdal1.5.0
17
2. S ESTAVENÍ SYSTÉMU Výškové soubory jsou jeden po druhém nahrány do databáze. Program Gdal_contour vytváˇrí soubory formátu shapefile. Pˇrepínaˇc -i urˇcuje interval vrstevnic v metrech, pomocí -snodata lze urˇcit hodnotu v místech, v nichž chybí datový záznam, -a urˇcuje název atributu [29]. Aplikace Shp2pgsql je souˇcástí instalace PostGIS. V prvním pruchodu ˚ vytváˇrí tabulku contours (pokud existuje, zruší ji a vytvoˇrí novou – pˇrepínaˇc -d), do níž nahrává linie vrstevnic do sloupce way – pˇrepínaˇc -g, a pˇriˇradí jí prostorový index – pˇrepínaˇc -I. V dalších pruchodech ˚ vše pˇridává do již existující tabulky – pˇrepínaˇc -a [4]. K umožnˇení co nejpodrobnˇejšího znázornˇení reliéfu jsem urˇcil interval vrstevnic 5 m. 2.3.3 Stínování a hypsometrie Vyjadˇrování výškových pomˇeru˚ na mapˇe pomocí stínování umožnuje ˇ lepší plastický vjem. Je založeno na šikmém osvˇetlení terénu, zpravidla pod úhlem 45◦ . Duležitá ˚ je volba vhodného smˇeru osvitu. V praxi se nejvíce používají následující dva typy osvˇetlení: •
Pˇrirozené osvˇetlení: založené na sluneˇcním svˇetle, tedy pro severní polokouli smˇerˇ uje od jihu.
•
Konvenˇcní osvˇetlení: s volbou smˇeru od severozápadu. Z fyziologického hlediska je plasticky nejúˇcinnˇejší. Vychází z bˇežného osvˇetlení pracovního stolu zleva.
Kombinace stínování a vrstevnic plastický úˇcinek ještˇe více umocnuje ˇ [6]. Následující skript vytváˇrí rastrový obrázek stínování [4]: for TILE in N*E*.hgt.zip; do yes | ./srtm_generate_hdr.sh ${TILE} rm -f "${TILE%%.hgt.zip}.bil" "${TILE%%.hgt.zip}.hdr" \ "${TILE%%.hgt.zip}.prj" "${TILE%%.hgt.zip}.hgt" done gdal_merge.py -v -o srtm.tif -ul_lr 12.10 51.06 18.87 \ 48.55 N*E*.tif gdalwarp -co "TILED=YES" -srcnodata 32767 -dstnodata 0 \ -t_srs "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgris=@null +no_defs" -rcs -order 3 -tr 30 30 -wt Float32 -ot Float32 \ -wo SAMPLE_STEPS=100 srtm.tif warped30.tif hillshade warped30.tif hillshade.tif -s 0.2 18
2. S ESTAVENÍ SYSTÉMU Zaˇcátek je velmi podobný zpusobu ˚ zpracování vrstevnic. Skript gdal_merge.py slucˇ uje jednotlivé rámce dohromady a oˇrezává obraz podle zadaných geografických hranic. Gdalwarp vstupní obraz srtm.tif transformuje z puvodního ˚ kartografického zobrazení do nového (-t-srs). Parametr -tr urˇcuje rozlišení výstupního obrazu v metrech, které je v našem pˇrípadˇe vˇetší, než rozlišení výškových dat. Díky výpoˇcetnˇe nároˇcné interpolaci (-rcs -order 3 -wt Float32 -ot Float32 -wo SAMPLE_STEPS=100) je však toto omezení zamaskováno. Programem Hillshade ze skupiny DEMTools získáváme kýžený stínovaný model reliéfu. Pˇrepínaˇc -s nastavuje intenzitu stínu. ˚ Analyzoval jsem ruzné ˚ intenzity, prakticky použitelné jsou hodnoty od 0,15 (nejtmavší) do 0,4 (málo výrazné). Volitelnými parametry -alt nastavujeme výšku zdroje osvitu (výchozí je 45◦ ) a pomocí -az nastavujeme smˇer – azimut (výchozí je 315◦ , tedy osvˇetlení ze severozápadu) [31, 4]. Použil jsem výchozí hodnoty odpovídající konvenˇcnímu osvˇetlení. Hypsometrie je vytváˇrena totožnˇe jako stínování. Pouze je místo programu Hillshade použit Color-relief z balíˇcku nástroju˚ DEMTools. Kombinaci tˇechto dvou technik používáme pouze na mapách malých mˇerˇ ítek, na nichž pˇrestává být znázornˇení výšky vrstevnicemi pˇrehledné. Analyzoval jsem tedy velikost rozlišení, které není zbyteˇcnˇe velké a zárovenˇ je dostateˇcnˇe kvalitní pro maximální mˇerˇ ítko, pro nˇež hypsometrii používám. Parametr -tr programu Gdalwarp jsem zmˇenil ze 30 m na 150 m. Pˇetkrát menší rozlišení v obou smˇerech znamená dvacetipˇetinásobnˇe menší velikost obrázku a zrychlení vykreslování. color-relief warped150.tif hypsometry.tif -s 0.2 Výškové hranice a barvy ploch v intervalu mezi nimi specifikujeme v jednoduchém textovém souboru colorscale.txt. Pˇrechody mezi zvolenými hranicemi jsou plynule interpolovány. Struktura je následující (dolní hranice v metrech, cˇ ervená, zelená, modrá): 1550 1300 1000 750 500 400 300 200 0 -32768
255 103 181 195 235 248 248 188 115 0
255 56 122 148 194 221 231 231 201 0
255 36 81 102 123 109 146 114 99 0 19
2. S ESTAVENÍ SYSTÉMU Výškové hodnoty nevolíme náhodnˇe, jejich urˇcení odpovídá charakteru reliéfu ve zpracovávaném území. Barevná stupnice by mˇela být tvoˇrena na základˇe barev, které v dané výšce pˇrevládají v pˇrírodˇe [6]. Je pochopitelné, že bychom si s nejvyšší hranicí 1 500 m nevystaˇcili ani na Slovensku nebo v Alpských zemích, natož v Himalájích.
Obrázek 2.3: Znázornˇení reliéfu metodou barevné hypsometrie, stínováním a jejich ˇ kombinací na území celé CR
2.4 Mapnik Mapnik je knihovna k samotnému vykreslování map. Je napsaná v jazyce C++, ovšem její „ovládání“ je možné pomocí jazyka Python a vzhled vykreslení urˇcuje XML stylový dokument. Instalace verze 0.6.1 je možná z balíku, novˇejší verze ze zdrojových kódu˚ pomocí SCons (Software Constructor), který upozorní i na potˇrebné knihovny. Úspˇešnost instalace lze jednoduše ovˇerˇ it v interpretu jazyka Python zadáním import mapnik. Žádný výstup znaˇcí úspˇech. Mapnik podporuje velké množství vstupních formátu. ˚ Pro nás nejduležitˇ ˚ ejší jsou vektorové OSM XML, shapefile a databáze PostGIS. Z rastrových využijeme formát GeoTIFF. Formát výstupních souboru˚ záleží na tom, zda použijeme grafickou knihovnu 20
2. S ESTAVENÍ SYSTÉMU AGG (Anti-Grain Geometry) nebo Cairo, obˇe zvládají PNG, který lze bez problému˚ pˇrevádˇet na další rastrové formáty pomocí bˇežných grafických programu. ˚ V této fázi už je možné vytváˇret statické mapy podle vybraných geografických hranic skriptem generate_image.py, který je dostupný v hlavním úložišti OSM. Vzhled mapy se standardnˇe ovládá stylovým XML souborem, který je vysvˇetlen v další kapitole [27].
2.5 Prezentace mapy Základem webové prezentace je server Apache, na nˇemž je nahrán modul Mod_tile. Uživateli je zobrazena HTML stránka s rozhraním Slippy Map, které zobrazuje požadované cˇ ásti mapy prostˇrednictvím knihovny OpenLayers. CGI skripty zprostˇredkovávají doplnkové ˇ funkce – generování výškových profilu˚ a export mapy jako obrázku.
2.5.1 Mod_tile Tento modul se stará o zprostˇredkování mapových rámcu˚ (tiles) na základˇe požadavku˚ uživatelu˚ webového rozhraní. Samotnou komunikaci s Mapnikem a ukládání na disk obsluhuje program Renderd, který je souˇcástí mod_tile. Zdrojové kódy jsou dostupné v SVN úložišti OpenStreetMap, instalace probíhá klasicky pˇríkazy make a make install s právy superuživatele [32]. Konfigurace modulu se nastavuje v souboru mod_tile.conf (konfigurace Apache virtual host a programu Renderd), který musíme uložit do složky /etc/apache2/conf.d/. Jeho šablona je souˇcástí distribuce Mod_tile, je nutné v ní upravit cesty ke koˇrenovému adresáˇri našeho webu a dalším konfiguraˇcním souborum ˚ podle našeho lokálního nastavení [32]. Vzhledem k požadavku na spouštˇení CGI skriptu˚ jsem musel pˇridat ještˇe element , v nˇemž jsem urˇcil potˇrebná nastavení pro složku cgi-bin. Zde uložené skripty pak musí mít spouštˇecí oprávnˇení pro všechny [33]. V dalším konfiguraˇcním souboru renderd.conf specifikujeme umístˇení úložištˇe mapových rámcu, ˚ instalace Mapniku, pomocných souboru˚ a mapové vrstvy, které budou požadovány webovým rozhraním. Ve výchozím nastavení lze specifikovat až deset vrstev [32], což pro naše potˇreby dostaˇcuje. Konfigurace vrstvy muže ˚ být následující: [mtbmap] URI=/mtbmap_tiles/ XML=/home/xtesar7/Devel/mapnik/styles/MTB-main.xml HOST=mtbmap.local 21
2. S ESTAVENÍ SYSTÉMU Máme-li Mapnik v aktuální verzi 0.7.1, muže ˚ být problematické použití více vláken (pocˇ tem odpovídajících poˇctu jader procesoru) – vykreslování Mapnikem se neoˇcekávanˇe ukonˇcí. Nastavením parametru num_threads na 1 se tˇechto problému˚ zbavíme, avšak za cenu zpomalení renderingu. Pomocné soubory renderd.stats a renderd.sock jsem uložil do podsložky domácího adresáˇre, jelikož se ve výchozím umístˇení po ukonˇcení programu mazaly. Po prvním spuštˇení je tˇreba restartovat Apache. Spouštˇení Renderd v terminálu s pˇrepínaˇcem -f zajistí bˇeh programu v popˇredí (foreground). Je tedy možné sledovat požadavky na vykreslení mapových rámcu, ˚ odpovˇedi programu a pˇredevším pˇrípadné chybové zprávy. 2.5.2 OpenLayers Knihovnu OpenLayers není nutné mít pˇrístupnou lokálnˇe, pokud jsme trvale pˇripojeni k internetu (to je v pˇrípadˇe, že mapu nedˇeláme jen pro sebe samozˇrejmost). Nicménˇe v dobˇe pˇrípravy systému (napˇríklad na pˇrenosném poˇcítaˇci) taková situace nastává bˇežnˇe. Lze ji získat na stránce http://openlayers.org/ a spuštˇením skriptu build.py v adresáˇri build pˇripravit. Do souborového systému naší webové stránky, jejíž koˇrenový adresáˇr je specifikován v souboru mod_tile.conf se musí zkopírovat složky lib, theme a img a soubor openlayers.js, na který se odkazujeme v HTML dokumentu klasickým zpuso˚ bem: <script src="../OpenLayers-2.8/OpenLayers.js"> OpenLayers je velmi obsáhlá knihovna. Vysvˇetlování jejího použití je nad rámec této práce. Její možnosti jsou však velmi podrobnˇe popsány v dokumentaci na jejich webových stránkách. Navíc je tam uvedeno velké množství ilustrativních pˇríkladu˚ [5], které ke zobrazení kýžené mapové vrstvy velmi dobˇre poslouží. Základní pˇríklad pro vykreslení a zobrazení vrstvy specifikované v souboru renderd.conf je uveden kvuli ˚ své délce v pˇríloze a cˇ ásteˇcnˇe je diskutován v následující kapitole.
22
Kapitola 3
Grafický styl mapy Grafický styl by mˇel co nejlépe interpretovat zobrazovanou skuteˇcnost, s durazem ˚ na požadavky specifikované v definici mapy pro horská kola. Zpusob ˚ interpretace je urˇcen úˇcelem, kterému má mapa sloužit [6]. V mém pˇrípadˇe kladu duraz ˚ na mapy velkých mˇerˇ ítek, na podrobnost jejich obsahu a místopis, na pˇrednostní zobrazení prvku, ˚ které souvisejí s jízdou na kole a orientací v terénu. Zejména musí být zobrazeny: •
Topografický podklad (obce, vodstvo, lesy, silniˇcní sít’, železniˇcní sít’)
•
Trasy pro horská kola
•
Stupnice obtížnosti tˇechto tras
•
Pˇeší trasy Klubu cˇ eských turistu˚
•
Znaˇcené cyklostezky
•
Reliéf – vrstevnice, kóty, stínování, pˇrípadnˇe barevná hypsometrie
•
Body zájmu (prodejny a opravny kol, turistické zajímavosti, ubytování, možnosti stravování)
V závislosti na mˇerˇ ítku je nutné vhodné zevšeobecnování, ˇ výbˇer a vzájemná harmonizace prvku˚ obsahu mapy – kartografická generalizace [6]. Naše možnosti jsou výraznˇe ovlivnˇeny automatizací tvorby map, která do znaˇcné míry omezuje lidský faktor. ˇ Casto se pˇri zpracování setkáme s problémy nekonzistence vstupních dat, které plynou z jejich hromadné tvorby. OpenStreetMap je stále velmi mladý projekt a metodika tvorby dat nemusí být striktnˇe vymezena, pˇrípadnˇe není všemi uživateli, jakkoli nechtˇenˇe, dodržována. Pˇríkladem takové nekonzistence muže ˚ být stejné oznaˇcení (XML atribut v datovém souboru OSM) mezinárodního letištˇe Praha-Ruzynˇe a letištˇe aeroklubu Brno-Medlánky, které má pouze travnatou pˇristávací plochu. 23
3. G RAFICKÝ STYL MAPY
3.1 Mapnik 3.1.1 Tvorba stylu Výbˇer prvku˚ a zpusob, ˚ jakým budou vykresleny ovládáme dokumentem, který odpovídá XML schématu Mapniku. Po nezbytném XML prologu, deklaraci typu dokumentu a entit následuje koˇrenový element <map> s dceˇrinými elementy, které obsahují definice fontu˚ , stylu˚ <Style> a vrstev . Elementem <Style> urˇcujeme formu vizualizace dat, které jsou zpravidla vybrány SQL dotazem nebo odkazem na rastrový obrázek v odpovídajícím elementu . Jednotlivá pravidla jsou následnˇe definována podobnˇe, jako pˇri použití kaskádových stylu. ˚ Všechny možnosti jsou podrobnˇe vypsány vˇcetnˇe pˇríkladu˚ v dokumentu popisujícím XML schéma od tvurc ˚ u˚ Mapniku. [34] Muj ˚ stylový dokument je založen na primárním stylu OSM. Ten však klade duraz ˚ na výrazné zobrazení silniˇcní sítˇe, která není k našemu úˇcelu nejpodstatnˇejší. Jednotlivé kategorie silnic jsem zjednodušil a barevnˇe pˇrizpusobil ˚ cˇ eským zvyklostem, zrušil jsem cˇ íslování silnic. Zobrazení tras pro horská kola jsem získal pˇridáním následujícího stylu a vrstvy (jde o zkrácenou verzi bez generalizace): <Style name="mtb_basic"> #710068 2 round round <StyleName>mtb_basic <Parameter name="table"> (select osm_id,way,route,mtb,"mtb:scale","mtb:scale:uphill" from planet_osm_line where ("mtb:scale" is not null or mtb is not null or "mtb:scale:uphill" is not null or route=’mtb’)) as mtb_basic 24
3. G RAFICKÝ STYL MAPY &datasource-settings; Tímto zápisem vykreslíme všechny linie vybrané SQL dotazem v elementu . Stylem specifikujeme barvu, šíˇrku a zpusob ˚ napojení linií. Lze v nˇem urˇcit i rozsah mˇerˇ ítek, v nichž budou linie vykresleny. Duležitým ˚ pˇrínosem je zobrazení obtížnosti terénu tras, která je v datovém souboru OSM uložena v atributu mtb:scale. Používá se stupnice s 6 základními kategoriemi obtížnosti od nejjednodušší 0 do nejnároˇcnˇejší 5. Doporuˇcený zpusob ˚ znázornˇení znaˇckami je uveden na stránkách OSM [2], avšak z mého pohledu má urˇcité nedostatky. Doporucˇ ené znaˇcky pˇrímo nic neˇríkají o tom, které kategorii odpovídají. Pro obtížnost 2 a 3 jsou velmi tˇežko rozlišitelné, stejnˇe tak otáˇcení znaˇcek v závislosti na smˇeru linie komplikuje cˇ itelnost. Proto jsem navrhl podobný, ale logiˇctˇejší znaˇckový klíˇc. Pˇriˇrazení kategorií je zjednodušeno podobností s rˇ ímskými cˇ íslicemi, obtížnost 0 je znázornˇena kroužkem. Znaˇcky mají stále stejné umístˇení ve vztahu k linii a nijak nerotují.
Obrázek 3.1: Znaˇcení obtížnosti terénu Zobrazení turistických tras je pˇrevzato ze stylu OpenTrackMap [4], není však definitivní. V budoucnu se oˇcekává, že bude Mapnik umožnovat ˇ vykreslení linií mimo hlavní osu, což pˇrinese možnost paralelního vykreslování soubˇežných tras, namísto souˇcasného vykreslování pˇrerušovanou cˇ arou. Alesponˇ v pˇrípadˇe soubˇežné MTB a turistické trasy a jsem to obešel vykreslením MTB trasy zvlášt’ mimo osu namapováním obrazového vzorku (ve stylu je místo element ). Tento vzorek je ve své ose pruhledný ˚ a na jedné stranˇe má linii v barvˇe MTB trasy o požadované šíˇrce. Vyznaˇcení výrazných stoupání a klesání jsem získal využitím atributu˚ mtb:scale:uphill (kategorie sklonu 0–5) a incline (smˇer nahoru nebo dolu). ˚ Aby nedošlo k zahlcení mapy další šesticí symbolu, ˚ vyznaˇcil jednotným symbolem sklony v kategoriích 3, 4 a 5, tedy ty nejprudší. Vˇetší duraz ˚ jsem kladl na peˇclivé znázornˇení vrstevnic, které toho o tvaru terénu ve velkých mˇerˇ ítkách napoví mnohem více. 25
3. G RAFICKÝ STYL MAPY Interpretace cyklostezek je podobná stylu OpenCycleMap, avšak všechny kategorie (národní, regionální, lokální) jsou vyobrazeny stejnˇe, aby mapa nebyla barevnˇe pˇretíˇ žená. Císlování cˇ i pojmenování stezek je zachováno. Provedl jsem nˇekolik dalších menších zásahu˚ do puvodní ˚ šablony OSM na základˇe úˇcelu mapy a základních kartografických zásad. Modré barvy popisku˚ jsem zmˇenil na cˇ erné (modrá je vyhrazena pro popis vodstva), popisy sídel jsem zvˇetšil pro lepší cˇ itelnost, zakázal zobrazování administrativních hranic (s výjimkou státních) a cˇ íslování domu, ˚ které považuji za nepodstatné. Formu vyznaˇcení elektrického vedení jsem v rámci možností pˇrizpusobil ˚ cˇ eským zvyklostem, nˇekteré mapové znaˇcky výchozího stylu jsem zvýraznil. Další rˇ ada modifikací probˇehla v rámci generalizace. 3.1.2 Generalizace Základním nástrojem generalizace ve stylovém dokumentu jsou elementy <MaxScaleDenominator> a <MinScaleDenominator>, které cˇ íselnˇe specifikují rozsah mˇerˇ ítek, pro nˇež 1 má být dané pravidlo uplatnováno ˇ . Hodnoty pak korespondují s jednotlivými úrovnˇemi pˇriblížení, které poskytuje webové rozhraní Slippy Map, viz tab. D.1. V závislosti na mˇerˇ ítku tedy specifikujeme mˇenící se velikost fontu, ˚ šíˇrku linií a pˇredevším samotné vykreslení ruzných ˚ prvku. ˚ Vzhledem k použití mapy v poˇcítaˇcovém prostˇredí, kdy má každý uživatel jinou velikost a specifické nastavení rozlišení monitoru, nelze pˇresnˇe urˇcit limity zobrazovacích zaˇrízení (minimální hodnoty, které lidské oko rozliší na konkrétním zaˇrízení). Spíše než matematiku jsem proto musel uplatnit cit. Ilustrativním pˇríkladem muže ˚ být generalizace výškových dat. Stínování nijak generalizováno není, je vhodným doplnkem ˇ k umocnˇení prostorového vjemu v kombinaci s vrstevnicemi i hypsometrií. Hypsometrii používám v mapách do úrovnˇe pˇriblížení 10 (ve Slippy Map), která pˇribližnˇe odpovídá mˇerˇ ítkovému cˇ íslu 550 000. Ve vˇetších mˇerˇ ítkách by se mohlo stát, že bude území celého výˇrezu mapy spadat do jednoho barevného intervalu a informace o charakteru reliéfu bude minimální. Nastupuje v nich tedy metoda vrstevnic. Výhodou vrstevnic je geometricky nejpˇresnˇejší zachycení reliéfu v mapovém obrazu. Mapu ze všech tradiˇcních zpusob ˚ u˚ nejménˇe graficky zatˇežují. Je pro nˇe typická hnˇedá barva. Interval vrstevnic volíme podle konkrétního mˇerˇ ítka tak, aby se sousední 1. Pro lepší cˇ itelnost zápisu tyto elementy nahrazujeme XML entitami, v nichž je uvedena úrovenˇ pˇriblížení. Napˇr. entita &maxscale_zoom_14; odpovídá zápisu <MaxScaleDenominator>50000. Toto pravidlo se tedy vykreslí pouze na mapách s mˇerˇ ítkem vˇetším než 1 : 50 000.
26
3. G RAFICKÝ STYL MAPY vrstevnice nikdy neslily do sebe. Nápomocný muže ˚ být vztah interval = M/5000, kde M je mˇerˇ ítkové cˇ íslo mapy. Jelikož máme vrstevnice uloženy v databázi ve zvláštní tabulce s intervalem 5 m, mužeme ˚ takˇrka ideálnˇe generalizovat do mˇerˇ ítka 1 : 25 000. Každá pátá vrstevnice by navíc mˇela být zvýraznˇena a oznaˇcena výškou [6]. Tabulka 3.1: Interval vrstevnic pro mˇerˇ ítka Slippy Map Pˇriblížení Mˇerˇítkové cˇ . (orien. hodn.) Interval vrstevnic [m] Zvýraznˇení [m] ≤ 10 11 12 13 14 ≥ 15
≥ 550 000 270 000 140 000 70 000 35 000 ≤ 20 000
hypsometrie 50 20 10 10 5
100 100 50 50 25
Kartografickým nedostatkem vykreslení je zcela náhodná orientace popisu vrstevnic, jelikož Mapnik podporuje jediné možné umístˇení textu na linii (tak, aby nebyl vzhuru ˚ nohama). Správnˇe by základní dotažnice popisu vrstevnice mˇela být na stranˇe údolí a horní dotažnice na stranˇe vrcholu [6]. Generalizoval jsem i tzv. objekty zájmu. V puvodním ˚ OSM stylu se objevují až na výjimky pro úrovenˇ pˇriblížení 16 a vyšší. Naše téma si vyžaduje zduraznˇ ˚ ení tˇechto bodu. ˚ Na úkor jmen zastávek MHD a dalších ménˇe duležitých ˚ objektu˚ byly zduraznˇ ˚ eny (zobrazeny i v menších mˇerˇ ítkách) cyklistické obchody, odpoˇcívadla, rozcestníky, kostely, muzea, zámky, restaurace, hotely apod. Na závˇer nutno dodat, že Mapnik používá pro bodové objekty tzv. antikolizní algoritmus, aby se vzájemnˇe neprolínaly. To pˇri hustˇe zmapovaném území cˇ asto zpusobí, ˚ že se nˇekteré objekty jednoduše nevykreslí.
3.2 Webová prezentace 3.2.1 Návrh stránky Okno s webovou stránkou jsem rozvrhl do dvou základních oken. V pravém je vlastní mapové pole s nˇekolika ovládacími prvky (navigace, pˇriblížení, generování odkazu˚ na právˇe zobrazenou cˇ ást mapy), mˇerˇ ítkem a zobrazením pozice kurzoru. Uživatelé mají možnost pˇrepínat mezi mapovými vrstvami MTB mapy, OpenStreetMap (mapnik) a 27
3. G RAFICKÝ STYL MAPY OpenCycleMap. Všechny tyto vlastnosti jsem zpˇrístupnil pˇrímo v HTML dokumentu pomocí knihovny OpenLayers. Do levé cˇ ásti jsem umístil další kompoziˇcní prvky – název, odkaz na zdroje dat, kontakt na autora, odkaz na zobrazení vysvˇetlivek. Navíc jsem zde umístil ovládání doplnkových ˇ funkcí – pˇrepínaˇc pro kreslení vlastní trasy k vygenerování výškového profilu a tlaˇcítko k exportu právˇe zobrazené cˇ ásti MTB mapy. 3.2.2 Doplnkové ˇ funkce Pro kreslení tras jsem s výhodou použil ovládací funkci measure control knihovny OpenLayers. Kromˇe zobrazení trasy, kterou uživatel poklikáváním vybírá, si totiž ukládá celou její geometrii. Lze také jednoduše upravit styl kreslené trasy. Ve chvíli, kdy uživatel „dvojkliknutím“ ukonˇcí kreslení své trasy, stiskne tlaˇcítko Spoˇcítat profil. Geometrie trasy je pˇrevedena do geografických souˇradnic a poslána protokolem HTTP jako POST Request na server na standardní vstup CGI skriptu popsaného v další cˇ ásti práce. Ten vrátí obrázek profilu a zobrazí ho v novém oknˇe prohlížeˇce. Skript ke generování obrázku mapy je založen na souboru generate_image.py, který je dostupný v repozitáˇri OSM. Upravil jsem ho tak, aby pˇrijímal žádosti uživatelu˚ pˇres HTTP protokol, které obsahují geografické hranice ve stupních a rozmˇery v bodech jejich mapového okna, na jejichž základˇe obrázky generuje.
3.3 Výškové profily Pro generování výškových profilu˚ jsem napsal CGI skript v jazyce Python [35]. Nejprve je zkontrolována správnost vstupních dat – geometrie linie (ˇretˇezec zemˇepisných sourˇ adnic lomových bodu), ˚ pro kterou se má vytvoˇrit profil. Je-li zadán pouze jeden bod, je vrácena jednoduchá HTML stránka s údajem o jeho výšce. V pˇrípadˇe, že je zadáno dva a více bodu, ˚ skript vyhodnotí výškový profil linie, vytvoˇrí SVG obrázek, který je programem Rsvg-convert pˇreveden do rastrového formátu PNG a nakonec vrátí jednoduchou HTML stránku s tímto souborem. K urˇcení informace o nadmoˇrské výšce je tˇreba zpracovat potˇrebné .hgt.zip soubory. Následující funkce projde seznam bodu˚ (nodes), ze souˇradnic urˇcí, který soubor bude ˇ ezec potˇreba. Komprimovaný soubor je pˇreveden na rˇ etˇezec pomocí balíku Zipfile. Retˇ je pomocí funkcí z balíku NumPy transformován na pole o velikosti 1201x1201, které má pˇrímý vztah se zemˇepisným souˇradnicovým systémem. Tato transformace vyplývá ˇ ez formátu souboru .hgt, což je 16-bitový big-endian formát bez jakýchkoli hlaviˇcek. Retˇ 28
3. G RAFICKÝ STYL MAPY zec tedy musí být pˇreveden do little-endian (byteswap()), rozdˇelen do pole požadované velikosti (reshape(1201,1201)) a pˇrevrácen (jakoby sever vymˇenit s jihem, flipud()) [36]. Zárovenˇ je do seznamu bodu˚ pˇridána nadmoˇrská výška. from numpy import * import zipfile def appendHeights(nodes): # Works only for latitudes 10-90 degrees north and # longitudes 10-99 degrees east. hgtArrays = {} zip_path = ’../shadingdata/’ for node in nodes: key = ’N’ + str(int(math.floor(node[0]))) + ’E0’ + str(int(math.floor(node[1]))) if not (hgtArrays.has_key(key)): zip_file = zipfile.ZipFile(zip_path + key + ’.hgt.zip’, ’r’) zip_file_name = zip_file.namelist()[0] hgt_str = zip_file.read(zip_file_name) zip_file.close() hgtArrays[key] = flipud(((fromstring(string=hgt_str, dtype=’int16’)).byteswap()).reshape(1201,1201)) node.append(getHeight(hgtArrays, node[0], node[1])) Použitá funkce getHeight() vyhledá ve slovníku správné pole s výškovými daty, na které namapuje požadované zemˇepisné souˇradnice a vrátí výšku. Nadmoˇrská výška pˇribližnˇe odpovídá stˇrední hodnotˇe nadmoˇrské výšky na reálném území. Tˇreba vrcholy hor tedy nemají pˇresnou výšku, kterou známe z tištˇených zdroju, ˚ ale jsou o nˇeco nižší [37]. S ohledem na rozlišení dat SRTM3 byla zvažována jednoduchá interpolace výšky bodu pomocí cˇ tyˇr okolních prvku˚ pole. V extrémních pˇrípadech (vrcholy kopcu, ˚ hluboká údolí) by však pusobila ˚ kontraproduktivnˇe. Docházelo by ke zplošt’ování reliéfu. Údaj o nejvyšším nebo nejnižším místˇe trasy pˇritom uživatele mnohdy nejvíce zajímá. Vzhledem k tomu, že Zemˇe má pˇribližnˇe kulový tvar, nestaˇcí poˇcítat vzdálenosti bodu˚ jako v rovinˇe. K výpoˇctu slouží vzorec pro délku ortodromy, což je nejkratší spoj29
3. G RAFICKÝ STYL MAPY nice dvou bodu˚ na kouli, na níž aproximujeme zemské tˇeleso [6]: σ = arccos(sin ϕ1 sin ϕ2 + cos ϕ1 cos ϕ2 cos(λ2 − λ1 )) ϕ oznaˇcuje zemˇepisnou šíˇrku, λ zemˇepisnou délku a σ je délka ortodromy v úhlových jednotkách. Pˇrevod na délkové jednotky vychází z polomˇeru Zemˇe. K pˇresnému urˇcení profilu nestaˇcí urˇcit a vykreslit výšky bodu˚ zadaných uživatelem. V pˇrípadˇe, že jsou body velmi daleko od sebe, reálný profil se mezi nimi nemˇení lineárnˇe. Je tˇreba mezi takové body vložit další s ohledem na rozlišení výškových dat. V mém skriptu jsou body pˇridávány lineárnˇe pˇribližnˇe po 100 metrech, je-li celková vzdálenost menší než 50 km. Je-li vˇetší, bere se jako jeden krok jedna pˇetisetina celkové vzdálenosti. Tento limit je urˇcen podle rozlišení výstupního obrázku. Mužeme ˚ se pozastavit nad tím, že vzdálenosti se poˇcítají na sféˇre pomocí vzorce pro ortodromu, zatímco dˇelení probíhá jakoby v rovinˇe. Chyba takového dˇelení se prakticky nijak neprojeví, pokud vzdálenost mezi dvˇema zadanými body není vˇetší než 20– 30 km [6]. Neumím si pˇredstavit trasu pro horské kolo, která by mˇela delší úsek bez zatáˇcky. Toto zjednodušení nám pˇrináší pˇresné urˇcení celkové vzdálenosti a dostateˇcnˇe pˇresné a rychlé znázornˇení reliéfu. Zbývá nakreslit profil, k cˇ emuž se ideálnˇe hodí formát SVG (Scalable Vector Graphics) založený na XML, jelikož umožnuje ˇ algoritmicky vykreslit geometrické tvary. Zvolil jsem pevnˇe daný rozmˇer 1010x300 obrazových bodu, ˚ který odpovídá standardnímu rozlišení dnešních monitoru. ˚ Kromˇe profilu jsou vykresleny stupnice, pomocná vodítka, celková vzdálenost a pˇrevýšení trasy. Na výškové a na délkové stupnici jsem ošetˇril možné kolidující znaˇcení výšek a délek2 . Vektorový formát má sice rˇ adu výhod (možnost bezeztrátové zmˇeny rozlišení, menší velikost), ale nemá nativní podporu v prohlížeˇci Internet Explorer a i ostatní prohlížeˇce ho mohou zobrazovat ruznˇ ˚ e [38]. Nezbývá než pˇrevést ho na rastrový obrázek, v našem pˇrípadˇe formát PNG.
2. Napˇr. v pˇrípadˇe, kdy je celková délka trasy 20,1 km, není cˇ íselnˇe uvedena znaˇcka 20 km, ale pouze celková délka
30
3. G RAFICKÝ STYL MAPY
Obrázek 3.2: Pˇríklad výškového profilu trasy
31
Kapitola 4
Mˇerˇení výkonnosti Vykreslování mapy je výpoˇcetnˇe nároˇcný proces, provedl jsem proto testy, které dávají základní pˇredstavu o rychlosti vykreslování. Zajímalo mˇe pˇredevším srovnání rychlosti pro jednotlivé úrovnˇe pˇriblížení. Pˇredpokládal jsem, že se rychlost zmenšuje použitím výškových dat, takže jsem srovnal vykreslování s nimi a bez nich. ˇ Z cˇ asových duvod ˚ u˚ jsem neprovedl mˇerˇ ení ve všech úrovních na území celé Ceské republiky, nýbrž pro každou úrovenˇ jsem urˇcil rozsah tak, aby se vykreslilo alesponˇ 1501 mapových rámcu˚ (obrázek ve formátu PNG o rozmˇerech 256x256 pixelu). ˚ Z výsledku˚ pˇeti po sobˇe jdoucích mˇerˇ ení stejných území jsem dopoˇcítal prumˇ ˚ erné hodnoty ˇ pro rozsah celé Ceské republiky. Podle míry zmapování jsem odhadem vybíral ta území, která jsou prumˇ ˚ ernˇe zmapovaná. Na základˇe tˇechto pravidel jsem si upravil skript generate_tiles.py z repozitáˇre OSM pro vlastní vykreslování rámcu. ˚ Mˇerˇ ení bylo provedeno na stroji s operaˇcním systémem Ubuntu 9.10 Karmic Koala, procesorem Intel Core 2 Duo 2 GHz a 3 GB RAM. Výpoˇcet probíhal pouze v jednom vláknˇe, cˇ ili pouze na jednom jádˇre procesoru. Poˇcet mapových rámcu˚ pro urˇcitou úrovenˇ pˇriblížení odpovídá pˇribližnˇe cˇ tyˇrnásobku poˇctu rámcu˚ o stupenˇ menší úrovnˇe, což implikuje exponenciální nárust ˚ výpocˇ etní doby, viz tab. 4.1. Na grafu doby výpoˇctu s logaritmickou stupnicí se proto linie podobají pˇrímkám, viz obr. 4.1. Celková doba vykreslení všech rámcu˚ do úrovnˇe 15 by na mém stroji trvala pˇribližnˇe 12 dní. Složitost vykreslení výškových dat se projevila výraznˇe až v úrovni pˇriblížení 11 a vyšších, tedy v úrovních, které ke znázornˇení výšky využívají vrstevnice. V nejvyšších mˇerˇ ítkách byl výpoˇcet s vrstevnicemi osmkrát pomalejší. Postupné zvˇetšování rozdílu rychlostí s výškovými daty a bez nich je zpusobeno ˚ zvˇetšujícím se pomˇerem mezi vrstevnicemi a poˇctem ostatních prvku˚ v mapˇe, urˇcených stylovým XML dokumentem ˇ s tolika rámcu˚ neskládá, viz 1. Pro úrovenˇ pˇriblížení menší než 10 bylo rámcu˚ ménˇe, jelikož se celá CR tab. 4.1. S ohledem na to jsem do testu vubec ˚ nezahrnul úrovnˇe pˇriblížení menší než 8, jelikož by výsledky ˇ byly zkresleny chybˇejícími daty v rámcích zasahujících cˇ ásteˇcnˇe mimo CR.
32
ˇ 4. M Eˇ RENÍ VÝKONNOSTI
ˇ Tabulka 4.1: Výsledky mˇerˇ ení s výškovými daty – dopoˇcítané hodnoty pro celou Ceskou republiku za pˇredpokladu normálního rozdˇelení, interval spolehlivosti 95 % ˇ Pˇriblížení Rámce CR 8 9 10 11 12 13 14 15 16 17 Σ
24 66 252 920 3478 14062 55892 221958 887832 3551328 4735836
Rámce/s Prum. ˚ Vel. [kB] 0,28 0,29 0,35 0,44 0,60 0,46 0,46 0,27 0,27 0,27
37,33 47,36 45,44 40,58 35,22 30,94 24,89 23,92 13,96 8,06
ˇ CR ˇ [min] Cas 1,424±0,004 3,769±0,002 12,14±0,06 34,80±0,04 96,8±0,4 505,4±0,5 2018±6 13630±30 54600±100 219000±1000 290000±1000
ˇ Tabulka 4.2: Výsledky mˇerˇ ení bez výškových dat – dopoˇcítané hodnoty pro celou Ceskou republiku za pˇredpokladu normálního rozdˇelení, interval spolehlivosti 95 % ˇ Pˇriblížení Rámce CR 8 9 10 11 12 13 14 15 16 17 Σ
24 66 252 920 3478 14062 55892 221958 887832 3551328 4735812
ˇ CR ˇ [min] Rámce/s Prum. ˚ Vel. [kB] Cas 0,29 0,31 0,37 0,66 1,34 1,52 1,50 1,59 2,00 1,98
10,44 15,12 15,98 21,80 14,70 12,28 13,69 14,11 6,69 4,57
1,400±0,002 3,603±0,006 11,37±0,01 23,38±0,03 43,3±0,1 154,7±0,5 621±3 2320±10 7390±40 29900±100 40400±200
33
ˇ 4. M Eˇ RENÍ VÝKONNOSTI
ˇ v jedObrázek 4.1: Graf cˇ asu potˇrebného k vykreslení všech rámcu˚ pro území celé CR notlivých úrovních pˇriblížení. Mapniku. Zobrazení hypsometrie spolu se stínováním zpomalilo výpoˇcet zanedbatelnˇe. Stejná rychlost v úrovních 13 a 14 je zˇrejmˇe zpusobena ˚ nezmˇenˇeným intervalem vrstevnic, viz tab. 3.1. Z grafu rychlosti lze nepˇrímo odhadovat i grafické zaplnˇení mapy, které je nejvˇetší v úrovni 12 (s výškovými daty), viz obr. 4.2.
34
ˇ 4. M Eˇ RENÍ VÝKONNOSTI
Obrázek 4.2: Graf rychlosti vykreslování mapových rámcu˚ za sekundu v jednotlivých úrovních pˇriblížení
35
Závˇer V práci jsem vysvˇetlil postup vedoucí ke spuštˇení systému, který využívá svobodná geografická data projektu OpenStreetMap a volnˇe dostupný software, jako alternativu k použití komerˇcních dat a placených geografických informaˇcních systému. ˚ Komplexnost systému mi umožnila vyzkoušet si práci s databázovými systémy, XML daty, webovými technologiemi a poˇcítaˇcovou grafikou v unixovém prostˇredí. Nahlédl jsem do základu˚ kartografie a geoinformatiky. Ve výsledku jsem navrhl grafický styl mapy pro vyznavaˇce jízdy na horském kole, který umožnuje ˇ zobrazit neobvyklé doplnující ˇ informace, které mohou být cílovým uživatelum ˚ užiteˇcné. Tento styl má však své nesporné kartografické nedostatky, kvuli ˚ omezením vykreslovacího nástroje a mé nedostateˇcné kartografické odbornosti. V budoucnu bude styl mapy i funkcionalita systému dále vyvíjena. Oˇcekává se nová verze nástroje Mapnik, v níž bude pˇrímoˇcará možnost vykreslování paralelních tras. Nabízí se implementace vyhledávaˇce tras, které uživatelé urˇcí pouze zadáním poˇcáteˇcních, koncových a prujezdních ˚ bodu. ˚ S tím souvisí doplnˇení výškových profilu˚ o znázornˇení soubˇežných tras, cˇ i zájmových bodu, ˚ které trasy míjí. Doplnˇena muže ˚ být dynamická vrstva KML (Keyhole Markup Language), která by umožnila odlehˇcit grafické zaplnˇení mapy a zárovenˇ zpˇrístupnit další doplnkové ˇ informace.
36
Literatura [1] OpenStreetMap Wiki [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: [2] Mountainbike – OpenStreetMap Wiki [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: ˇ R. OpenTrackMap – Czech Republic [online]. 2010 [cit. 2010-05-15]. [3] BARTON, Dostupné z WWW: . ˇ R. Custom OpenStreetMap Rendering – OpenTrackMap Experience [4] BARTON, [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: . [5] OpenLayers – Trac [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: [6] HOJOVEC, V., et. al. Kartografie. Praha : Geodetický a kartografický podnik v Praze. 1987. 664 s. [7] VOŽENÍLEK, V. Aplikovaná kartografie I. – tematické mapy. Olomouc : Univerzita Palackého, 1999. 169 s. ISBN 80-7067-971-9. [8] Homepage webu kartografického vydavatelství SHOCart [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: [9] Cykloturistické mapy – kartografie.cz [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: ˇ [online]. 2010 [cit. [10] TRASA, spol. s r. o. – Pˇrehled cykloturistických map KCT 2010-05-15]. Dostupné z WWW: 37
ˇ 4. M Eˇ RENÍ VÝKONNOSTI
[11] SALVETOVÁ, Šárka. Analýza, hodnocení a klasifikace cykloturistických map. Brno, 2005. Bakaláˇrská práce. Masarykova univerzita, Pˇrírodovˇedecká fakulta. [12] Cykloatlas on-line – Cykloserver [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: . [13] Google Maps API – Google Code [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: [14] OpenStreetMap Wiki – License [online]. 2010 [cit. 2010-05-16]. Dostupné z WWW: [15] OpenStreetMap Wiki – Yahoo! Aerial Imagery [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: [16] OpenStreetMap Wiki – Comparison of editors [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: [17] OpenStreetMap [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: [18] ALLAN, A.; STUBBS, D. OpenCycleMap.org [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: . [19] MARQUARDT, C. OpenStreetMap Hike & Bike Map [online]. 2010. [cit. 2010-05-15]. Dostupné z WWW: [20] Openmtbmap.org – Mountainbike and hiking Maps based in Openstreetmap [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: [21] OpenStreetMap Wiki – planet.osm [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: [22] OpenStreetMap Wiki – Osmosis [online]. 2010 [cit. 2010-05-17]. Dostupné z WWW: [23] OpenStreetMap Wiki – Databases and data access APIs [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: 38
ˇ 4. M Eˇ RENÍ VÝKONNOSTI
[24] PostgreSQL – Community Ubuntu Documentation [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: [25] Google Projection: SR-ORG Projection – Spatial Reference [online]. 2010 [cit. 2010-05-17]. Dostupné z WWW: [26] OpenStreetMap Wiki – Osm2pgsql [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: [27] OpenStreetMap Wiki – Mapnik [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: [28] NETELER, M. SRTM remote sensing at MPBA group/IRST [online]. 2006 [cit. 2010-05-15]. Dostupné z WWW: [29] GDAL: gdal_contour [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: [30] PERRY, M. PerryGeo – GDAL-based DEM utilities [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: [31] OpenStreetMap Wiki – HikingBikingMaps [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: [32] OpenStreetMap Wiki – Mod Tile [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: [33] Apache Tutorial: Dynamic Content with CGI – The Apache HTTP Server Project [online]. 2009 [cit. 2010-05-15]. Dostupné z WWW: . [34] Eastcott, D. Mapnik XML Schema Reference [online]. 2010 [cit. 2010-05-15]. Dostupné z WWW: . [35] HARMS, D.; MCDONALD, K. The Quick Python Book. 2nd printing, 2000. Greenwich (Canada): Manning. 426 p. ISBN 1-884777-74-0. 39
ˇ 4. M Eˇ RENÍ VÝKONNOSTI
[36] SRTM Forum [online]. 2009 [cit. 2010-05-15]. Dostupné z WWW: [37] SRTM Documentation – USGS/EROS [online]. 2003 [cit. 2010-05-15]. Dostupné z WWW: [38] TIŠNOVSKÝ, P. Vektorový grafický formát SVG – Root.cz [online]. 2007 [cit. 2010-05-16]. Dostupné z WWW:
40
Dodatek A
Obsah CD •
Text práce
•
Zdrojové soubory stylu, ˚ skriptu, ˚ webové stránky
•
Základní data
•
Výstup testování
•
Seznam použitých nástroju˚
41
Dodatek B
Výsledné mapy
Obrázek B.1: Mapa odpovídající pˇriblížení 13, území severozápadní cˇ ásti Brna a okolí
42
B. V ÝSLEDNÉ MAPY
Obrázek B.2: Mapa odpovídající pˇriblížení 14, území severozápadní cˇ ásti Brna
43
Dodatek C
Vybrané konfiguraˇcní soubory Konfiguraˇcní soubor aplikace renderd: renderd.conf [renderd] socketname=/home/xtesar7/Web/renderd/renderd.sock num_threads=1 tile_dir=/var/lib/mod_tile stats_file=/home/xtesar7/Web/renderd/renderd.stats [mapnik] plugins_dir=/usr/local/lib/mapnik/input font_dir=/usr/share/fonts/truetype font_dir_recurse=1 [mtbmap] URI=/mtbmap_tiles/ XML=/home/xtesar7/Devel/mapnik/my_styles/MTB-main.xml HOST=mtbmap.local
44
ˇ C. V YBRANÉ KONFIGURA CNÍ SOUBORY
Konfiguraˇcní soubor Apache modulu: Mod_tile.conf # podle mod_tile.conf.sample v~distribuci mod_tile listen 8080 LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so ServerName mysite.com DocumentRoot /home/xtesar7/Web/mtbmap ScriptAlias /cgi-bin/ /home/xtesar7/Web/mtbmap/cgi-bin/ AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all LoadTileConfigFile /etc/renderd.conf ModTileRequestTimeout 15 ModTileMaxLoadOld 4 ModTileMaxLoadMissing 10 ModTileRenderdSocketName /home/xtesar7/Web/renderd/renderd.sock ModTileCacheDurationMax 604800 ModTileCacheDurationDirty 900 ModTileCacheDurationMinimum 10800 ModTileCacheDurationMediumZoom 13 86400 ModTileCacheDurationLowZoom 9 518400 ModTileCacheLastModifiedFactor 0.20 LogLevel debug Allow From All
45
ˇ C. V YBRANÉ KONFIGURA CNÍ SOUBORY
Zcela základní nastavení webové stránky, zobrazující vlastní mapu. <script src="../OpenLayers-2.8/OpenLayers.js"> <script type="text/javascript"> // pocatecni stredove souradnice a priblizeni var lat=49.80, lon=15.50, zoom=8, map; // funkce, ktera zjistuje umisteni ramcu na disku podle souradnic function getTileURL(bounds){ var res = this.map.getResolution(); var x = Math.round((bounds.left - this.maxExtent.left) /(res * this.tileSize.w)); var y = Math.round((this.maxExtent.top - bounds.top) /(res * this.tileSize.h)); var z~= this.map.getZoom(); return this.url + z + "/" + x + "/" + y + "." + this.type; } // inicializacni funkce function init(){ map = new OpenLayers.Map("map",{ projection: new OpenLayers.Projection("EPSG:900913"), displayProjection: new OpenLayers.Projection("EPSG:4326") }); map.addLayer(new OpenLayers.Layer.OSM("MTB", "mtbmap_tiles/", {type: ’png’, numZoomLevels: 19, getURL: getTileURL})); if (!map.getCenter()){ var lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject()); map.setCenter(lonLat, zoom); } } 46
Dodatek D
Tabulka mˇerˇítek Tabulka D.1: Pˇrepoˇcet úrovnˇe pˇriblížení ve SlippyMap na mˇerˇ ítkové cˇ íslo [27] Pˇriblížení Mˇerˇítkové cˇ íslo zoom scale denominator 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
279541132,01 139770566,01 69885283,00 34942641,50 17471320,75 8735660,38 4367830,19 2183915,09 1091957,55 545978,77 272989,39 136494,69 68247,35 34123,67 17061,84 8530,92 4265,46 2132,73
47