-[[!meta title="OpenStreetMap - Otevřená Geo Data"]]
+[[!meta title="OpenStreetMap – Otevřená Geo Data"]]
[[!toc]]
O projektu
==========
-Projekt OpenStreetMap.org byl inspirován úspěchem projektu Wikipedie,
+Projekt [OpenStreetMap.org][osmo] byl inspirován úspěchem projektu [Wikipedie][wp],
kdy množství jednotlivců bylo často i po malých příspěvcích a bez
direktivního řízení a plánu schopné vytvořit ucelené dílo srovnatelné
s největšími placenými encyklopediemi světa. Projekt OpenStreetMap
umožňuje každému zájemci přispět k tvorbě mapy světa. Přitom data
-jsou publikovaná pod licencí (ODbL), která umožňuje data využívat
+jsou publikovaná pod licencí ([ODbL][]), která umožňuje data využívat
i pro komerční účely a kombinovat mapový podklad i s vrstvami,
které není povolené kopírovat. V podmínkách použití je pouze
vyžadované, aby byl každý uživatel mapy (papírové nebo mapového
portálu) informován o tom, že data (určitá vrstva) pochází z projektu
-OpenStreetMap.org a dále pokud je ve vrstvě mapy získané z projektu
-provedena úprava/oprava musí být příslušná změna poskytnutá i do
-původního/otevřeného projektu.
+OpenStreetMap.org a dále, pokud je ve vrstvě mapy získané z projektu
+provedena úprava/oprava, musí být příslušná změna poskytnutá i do
+původního otevřeného projektu.
+[osmo]: https://www.openstreetmap.org/
+[wp]: https://www.wikipedia.org/
+[ODbL]: http://opendatacommons.org/licenses/odbl/
Motivace úkolu
==============
Hlavní motivací této úlohy je seznámit studenty i s jinými otevřenými
-projekty než jsou přímo vlastní zdrojové kódy programů.
+projekty, než jsou přímo vlastní zdrojové kódy programů.
Přitom úloha umožňuje využít programátorské dovednosti a libovolné
technologie a vyzkoušet je při práci s velkými datovými objemy.
S výhodou lze použít otevřených knihoven a nástrojů, které komunita
datu na disk počítače.
Data vztahující se k území České republiky naleznete uložená
-v adresáři /opt/osm/data síťové instalace systému GNU/Linux
-na počítačích laboratoři. Snímek dat je k dispozici ve dvou
+v adresáři `/opt/osm/data` síťové instalace systému GNU/Linux
+na počítačích v laboratoři. Snímek dat je k dispozici ve dvou
formátech. Jedná se o soubory:
-- czech-republic-snapshot.osm.bz2 - data v textovém formátu XML,
+- `czech-republic-snapshot.osm.bz2` – data v textovém formátu XML,
která jsou poté komprimovaná kompresí BZip2 (900MB, 13 GB před kompresí)
-- czech-republic-snapshot.osm.pbf - data v binárním formátu Protocol Buffers (552MB)
+- `czech-republic-snapshot.osm.pbf` – data v binárním formátu Protocol Buffers (552MB)
Vytvořená aplikace musí umožnit zadat typ hledaných elementů
omezených kombinací jednoho klíče a jeho požadované hodnoty.
Například pro vyhledání všech úseků dálnic bude vstupním
-parametrem klíč highway a jeho hodnota motorway. Pro délku
-vodních toků waterway=river, atd. Výstupem programu bude součet
+parametrem klíč *highway* a jeho hodnota *motorway*. Pro délku
+vodních toků *waterway=river*, atd. Výstupem programu bude součet
délek všech úseků daného typu.
Program může parametry přijímat na příkazovém řádku nebo
-s využitím grafického rozhraní, dialogu. Výstup může být
+s využitím grafického rozhraní. Výstup může být
také pouze číslo vytisknuté na terminál.
Požadavkem je, že hodnota bude spočtena z předložených dat.
S daty je možné pracovat a program předvést i na svém počítači
nebo vzdáleném systému. K výpočtu však nesmí být použité online
-služby nad aktuálními daty projektu OpneStreetMap.org. Odůvodnění
+služby nad aktuálními daty projektu OpneStreetMap.org. Odůvodnění:
-1) docházelo by k zbytečné zátěži komunitních serverů
-2) výsledky pro novější, průběžně editovaná data nebudou odpovídat
- referenčním hodnotám
-3) cílem je se seznámit se s prací na velkými daty a ne jen zasílat
- dotazy do cizích služeb
+1. docházelo by ke zbytečné zátěži komunitních serverů,
+2. výsledky pro novější, průběžně editovaná data nebudou odpovídat
+ referenčním hodnotám,
+3. cílem je si vyzkoušet práci s velkými daty a ne jen zasílat dotazy
+ do cizích služeb.
Pokud budete ke zpracování používat infrastrukturu laboratoří, nekopírujte
prosím data ani meziprodukty zpracování do svého
Podpůrné informace pro řešení úkolu
===================================
+Struktura dat
+-------------
+
Struktura dat projektu OpenStreetMap.org je ve své podstatě velmi jednoduchá.
-Svět je popsaný s využitím následujících třech elementů
-:
+Svět je popsaný s využitím následujících třech elementů:
-- uzel (node) - definuje bod v prostoru (jeho zeměpisnou délku a šířku)
-- cesta (way) - popisuje liniové objekty a hranice ploch/oblastí
+- uzel (node) – definuje bod v prostoru (jeho zeměpisnou délku a šířku)
+- cesta (way) – popisuje liniové objekty a hranice ploch/oblastí
(cesta přímo nedefinuje polohu, pouze se odkazuje na uzly, kterými prochází)
-- relace (relation) - seskupuje uzly a cesty podle určitého kritéria/příslušnosti
+- relace (relation) – seskupuje uzly a cesty podle určitého kritéria/příslušnosti.
Ke každému elementu pak mohou být přiřazeny vlastnosti. Vlastnosti se definují
dvojicemi klíč, hodnota. Přitom pořadí klíčů nenese žádnou informaci, není
daný klíč s požadovanou hodnotou. Délka se pak spočítá z rozdílů poloh
všech bodů v rámci daného úseku.
+Výpočet vzdálenosti
+-------------------
+
K výpočtu rozdílu poloh, které jsou v databázi uloženy ve formě zeměpisných
souřadnic, je potřeba provést přepočet na vzdálenost mezi body pro nejkratší
spojnici po zemském povrchu. Pro tento výpočet použijte některou vhodnou knihovnu.
+Protocol Buffers
+----------------
+
Formát Protocol Buffers byl vytvořený firmou Google jako základní mechanizmus
pro předávání dat a požadavků mezi jejími službami. Jedná se o formát,
který umožňuje serializovat datové struktury existující v paměti nějakého
a popis struktury dat. Proto, aby data mohla být uložena a poté správně
interpretovaná musí obě strany znát schéma/strukturu datového modelu.
-Více o vlastním formátu na Wikipedii
-
- http://en.wikipedia.org/wiki/Protocol_Buffers
+[Více o vlastním formátu na Wikipedii](http://en.wikipedia.org/wiki/Protocol_Buffers).
Použití formátu Protocol Bufferes pro data projektu OpenSteerMap.org
-je popsané na stránce
-
- http://wiki.openstreetmap.org/wiki/PBF_Format
+je popsané na [wiki projektu OpenSteerMap](http://wiki.openstreetmap.org/wiki/PBF_Format).
-Strojově čitelné schéma popisující konkrétní strukturu dat OSM
-je spravované v rámci projektu OSM-binary na serveru GitHub
+Strojově čitelné schéma popisující konkrétní strukturu dat OSM je
+spravované v rámci projektu
+[OSM-binary na serveru GitHub](https://github.com/scrosby/OSM-binary/tree/master/src).
- https://github.com/scrosby/OSM-binary/tree/master/src
+XML
+---
K dispozici jsou i data ve formátu XML. Zpracování/načtení přibližně
-20x většího objemu dat a převod z textové reprezentace do interní
+20× většího objemu dat a převod z textové reprezentace do interní
reprezentace může práci s daty v tomto formátu výrazně prodloužit.
Limit pro získání výsledku od zadání požadavku během cvičení bude
omezený (předběžný předpoklad půl hodiny).