]> rtime.felk.cvut.cz Git - edu/osp-wiki.git/blob - cviceni/osm.mdwn
Oprava preklepu a formulace nekterych vet
[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žství jednotlivců bylo často i po malých příspěvcích a bez
10 direktivního řízení a plánu schopné vytvořit ucelené dílo srovnatelné
11 s největší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é z projektu
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í 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čité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élku
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 parametry 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ýsledky pro novější, průběžně editovaná data nebudou odpovídat
72    referenčním hodnotám
73 3) cílem je se seznámit se s prací na velkými daty a ne jen zasílat
74    dotazy do cizích služeb
75
76 Pokud budete ke zpracování používat infrastrukturu laboratoří, nekopírujte
77 prosím data ani meziprodukty zpracování do svého
78 domovského adresáře. Došlo by k překročení limitů přidělené kapacity na uživatele.
79 Pokud budete potřebovat dočasné výsledky
80  ukládat do souboru, použijte adresář
81 /tmp. Do něj uložená data se ukládají pouze do paměti RAM na dané stanici. Velikost
82 je pak
83  omezena přibližně na polovinu fyzické paměti stanice.
84
85 Podpůrné informace pro řešení úkolu
86 ===================================
87
88 Struktura dat projektu OpenStreetMap.org je ve své podstatě velmi jednoduchá.
89 Svět je popsaný s využitím následujících třech elementů
90 :
91
92 - uzel (node) - definuje bod v prostoru (jeho zeměpisnou délku a šířku)
93 - cesta (way) - popisuje liniové objekty a hranice ploch/oblastí
94   (cesta přímo nedefinuje polohu, pouze se odkazuje na uzly, kterými prochází)
95 - relace (relation) - seskupuje uzly a cesty podle určitého kritéria/příslušnosti
96
97 Ke každému elementu pak mohou být přiřazeny vlastnosti. Vlastnosti se definují
98 dvojicemi klíč, hodnota. Přitom pořadí klíčů nenese žádnou informaci, není
99 součástí databáze. Často se vlastnosti přiřazené k relaci týkají i všech
100 do ní zahrnutých cest a bodů.
101
102 Pro jednoduchost nebude brán na tento přenos vlastností zřetel. Úkolem
103 je opravdu pouze vyhledat všechny cesty, které mají přímo nastavený
104 daný klíč s požadovanou hodnotou. Délka se pak spočítá z rozdílů poloh
105 všech bodů v rámci daného úseku.
106
107 K výpočtu rozdílu poloh, které jsou v databázi uloženy ve formě zeměpisných
108 souřadnic, je potřeba provést přepočet na vzdálenost mezi body pro nejkratší
109 spojnici po zemském povrchu. Pro tento výpočet použijte některou vhodnou knihovnu.
110
111 Formát Protocol Buffers byl vytvořený firmou Google jako základní mechanizmus
112 pro předávání dat a požadavků mezi jejími službami. Jedná se o formát,
113 který umožňuje serializovat datové struktury existující v paměti nějakého
114 procesu do binární podoby (sekvence bytů), která je nezávislá na konkrétní
115 procesorové platformě a tak umožňuje data přeposlat nebo načíst ze souboru
116 jinému procesu (programu) a zde je rozbalit do jím používaných datových
117 struktur. Pro efektivní uložení dat formát přímo s daty nepřenáší pojmenování
118 a popis struktury dat. Proto, aby data mohla být uložena a poté správně
119 interpretovaná musí obě strany znát schéma/strukturu datového modelu.
120
121 Více o vlastním formátu na Wikipedii
122
123   http://en.wikipedia.org/wiki/Protocol_Buffers
124
125 Použití formátu Protocol Bufferes pro data projektu OpenSteerMap.org
126 je popsané na stránce
127
128   http://wiki.openstreetmap.org/wiki/PBF_Format
129
130 Strojově čitelné schéma popisující konkrétní strukturu dat OSM
131 je spravované v rámci projektu OSM-binary na serveru GitHub
132
133   https://github.com/scrosby/OSM-binary/tree/master/src
134
135 K dispozici jsou i data ve formátu XML. Zpracování/načtení přibližně
136 20x většího objemu dat a převod z textové reprezentace do interní
137 reprezentace může práci s daty v tomto formátu výrazně prodloužit.
138 Limit pro získání výsledku od zadání požadavku během cvičení bude
139 omezený (předběžný předpoklad půl hodiny).