]> rtime.felk.cvut.cz Git - edu/osp-wiki.git/blob - cviceni/osm.mdwn
The initial proposal of assignment of last tutorials task.
[edu/osp-wiki.git] / cviceni / osm.mdwn
1 [[!meta title="OpenStreetMap - Otevřená Geo Data"]]
2
3 [[!toc]]
4
5 O projektu
6 ==========
7
8 Projekt OpenStreetMap.org byl inspirován úspěchem projektu Wikipedie,
9 kdy množtví jednotlivců bylo často i po malých příspěvcích a bez
10 direktivního řízení a plánu shopné vytvořit ucelené dílo strovanatelné
11 s nejvěršími placenými encyklopediemi světa. Projekt OpenStreetMap
12 umožňuje každému zájemci přispět k tvorbě mapy světa. Přitom data
13 jsou publikovaná pod licencí (ODbL), která umožňuje data využívat
14 i pro komerční účely a kombinovat mapový podklad i s vrstvami,
15 které není povolené kopírovat. V podmínkách použití je pouze
16 vyžadované, aby byl každý uživatel mapy (papíroví nebo mapového
17 portálu) informován o tom, že data (určití vrstva) pochází z projektu
18 OpenStreetMap.org a dále pokud je ve vrstvě mapy získané zprojektu
19 provedena úprava/oprava musí být příslušná změna poskytnutá i do
20 původního/otevřeného projektu.
21
22
23 Motivace úkolu
24 ==============
25
26 Hlavním motivací této úlohy je seznámit studenty i s jinými otevřenými
27 projekty než jsou přímo vlastní zdrojové kódy programů.
28 Přitom úloha umožňuje využít programátorské dovednosti a libovolné
29 technologie a vyzkoušet je při práci s velkými datovými objemy.
30 S výhodou lze použít otevřených knihoven a nástrojů, které komunita
31 vytvořila. Práce se středně velkým objemem dat také studentům
32 přinese zkušenost s tím, jak se jejich oblíbené/jimi vybrané
33 technologie se zpracováním dat vyrovnají.
34
35
36 Zadání úkolu
37 ============
38
39 Vytvořte aplikaci, která dokáže spočítat součet délek všech úseků
40 určitého typu liniových staveb, vodních toků nebo železnic na území
41 České republiky v databázi OpenStreetMap uložené k určititému
42 datu na disk počítače.
43
44 Data vztahující se k území České republiky naleznete uložená
45 v adresáři /opt/osm/data síťové instalace systému GNU/Linux
46 na počítačích laboratoři. Snímek dat je k dispozici ve dvou
47 formátech. Jedná se o soubory:
48
49 - czech-republic-snapshot.osm.bz2 - data v textovém formátu XML,
50   která jsou poté komprimované kompresí BZip2 (900MB, 13 GB před kompresí)
51 - czech-republic-snapshot.osm.pbf - data v binárním formátu Protocol Buffers (552MB)
52
53 Vytvořená aplikace musí umožnit zadat typ hledaných elementů
54 omezených kombinací jednoho klíče a jeho požadované hodnoty.
55 Například pro vyhledání všech úseků dálnic bude vstupním
56 parametrem klíč highway a jeho hodnota motorway. Pro délu
57 vodních toků waterway=river, atd. Výstupem programu bude součet
58 délek všech úseků daného typu.
59
60 Program může paramentry přijímat na příkazovém řádku nebo
61 s využitím grafického rozhraní, dialogu. Výstup může být
62 také pouze číslo vytisknuté na terminál.
63
64
65 Požadavkem je, že hodnota bude spočtena z předložených dat.
66 S daty je možné pracovat a program předvést i na svém počítači
67 nebo vzdáleném systému. K výpočtu však nesmí být použité online
68 služby nad aktuálními daty projektu OpneStreetMap.org. Odůvodnění
69
70 1) docházelo by k zbytečné zátěži komunitních serverů
71 2) výsledeky pro novější, průběžně editovaná data nebude odpovídat
72    referenčním hodnotám
73 3) cílem je se seznámit a vyřešit práci s daty, ne jen zaslání
74    dotazu do cizí služby
75
76 Pokud budete k zpracování používat infsrastrukturu laboratoří,
77 tak, prosím, nekopírujte data ani meziprodukty zpracování do svého
78 domovského adresáře. Pokud budete pot5ebovat dočasné výsledky
79 ukládat do souboru, použijte adresář /tmp. Do něj uložená data
80 se ukládají pouze do pěměti RAM na dané stanici. Velikost je pak
81 omezena přibližně na polovinu fyzické paměti stanice.
82
83 Podpůrné informace pro řešení úkolu
84 ===================================
85
86 Struktura dat projektu OpenStreetMap.org je ve své podstatě velmi jednoduchá.
87 Svět je popsaný s využím následujících třech elementů
88
89 - uzel (node) - definuje bod v prostoru (jeho zeměpisnou délku a šířku)
90 - cesta (way) - popisuje liniové objekty a hranice ploch/oblastí
91   (cesta přímo nedefinuje polohu, pouze se odkazuje na uzly, kterými prochází)
92 - relace (relation) - sekupuje uzly a cesty podle určitého kritéria/příslušnosti
93
94 Ke každému elementu pak mohou být přiřazeny vlastnosti. Vlastnosti se definují
95 dvojicemi klíč, hodnota. Přitom pořadí klíčů nenese žádnou informaci, není
96 součástí databáze. Často se vlastnosti přiřazené k relaci týkají i všech
97 do ní zahrnutých cest a bodů.
98
99 Pro jednoduchost nebude braný na tento přenos vlastností zřetel. Úkolem
100 je opravdu pouze vyhledat všechny cesty, které mají přímo nastavený
101 daný klíč s požadovanou hodnotou. Délka se pak spočítá z rozílů poloh
102 všech bodů v rámci daného úseku.
103
104 K výpočtu rozdílu poloh, které jsou v databázi uloženy ve formě zeměpisných
105 souřadnic, je potřeba provést přepočet na vzdálenost mezi body pro nejkratší
106 spojnici po zeském povrchu. Pro tento výpočet použijte některou vhodnou knihovnu.
107
108 Formát Protocol Buffers byl vytvořený firmou Google jako základní mechanizmus
109 pro předávání dat a požadavků mezi jejími službami. Jedná se o formát,
110 který umožňuje serializovat datové struktury existující v paměti nějakého
111 procesu do binární podoby (sekvence bytů), která je nezávislá na konkrétní
112 procesorové platformě a tak umožňuje data přeposlat nebo načíst ze souboru
113 jinému procesu (programu) a zde je rozbalit do jím používaných datových
114 struktur. Pro efektivní uložení dat formát přímo s daty nepřenáší pojmenování
115 a popis struktury dat. Proto, aby data mohla být uložena a poté správně
116 interpretovaná musí obě strany znát schéma/strukturu datového modelu.
117
118 Více o vlastním formátu na Wikipedii
119
120   http://en.wikipedia.org/wiki/Protocol_Buffers
121
122 Použití formátu Protocol Bufferes pro data projektu OpenSteerMap.org
123 je popsané na stránce
124
125   http://wiki.openstreetmap.org/wiki/PBF_Format
126
127 Strojově čitelné schéma popisující konkrétní strukturu dat OSM
128 je spravované v rámci projektu OSM-binary na serveru GitHub
129
130   https://github.com/scrosby/OSM-binary/tree/master/src
131
132 K dispozici jsou i data ve formátu XML. Zpracování/načtení přibližně
133 20x většího objemu dat a převod z textové reprezentace do interní
134 reprezentace může práci s daty v tomto formátu výrazně prodloužit.
135 Limit pro získání výsledku od zadání požadavku během cvičení bude
136 omezený (předběžný předpoklad půl hodiny).