]> rtime.felk.cvut.cz Git - edu/osp-wiki.git/blobdiff - cviceni/osm.mdwn
(no commit message)
[edu/osp-wiki.git] / cviceni / osm.mdwn
index b2aaf157ba64bbb35772ad57d60b12b1c9abf479..03331043451932a9a5b0fbecd332ee96eea092b7 100644 (file)
@@ -1,32 +1,35 @@
-[[!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,
-kdy množtví jednotlivců bylo často i po malých příspěvcích a bez
-direktivního řízení a plánu shopné vytvořit ucelené dílo strovanatelné
-s nejvěršími placenými encyklopediemi světa. Projekt OpenStreetMap
+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 publikována pod licencí [ODbL][], která je umožňuje 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Ä\8dití vrstva) pochází z projektu
-OpenStreetMap.org a dále pokud je ve vrstvě mapy získané zprojektu
-provedena úprava/oprava musí být příslušná změna poskytnutá i do
-původního/otevřeného projektu.
+které není povoleno kopírovat. V podmínkách použití je pouze
+vyžadováno, aby byl každý uživatel mapy (papírové nebo mapového
+portálu) informován o tom, Å¾e data (urÄ\8ditá 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.
 
+[osmo]: https://www.openstreetmap.org/
+[wp]: https://www.wikipedia.org/
+[ODbL]: http://opendatacommons.org/licenses/odbl/
 
 Motivace úkolu
 ==============
 
-Hlavním 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ů.
+Hlavní motivací této úlohy je seznámit studenty i s jinými otevřenými
+projekty, než je open source software.
 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.
+technologie a vyzkoušet je při práci s velkými objemy dat.
 S výhodou lze použít otevřených knihoven a nástrojů, které komunita
 vytvořila. Práce se středně velkým objemem dat také studentům
 přinese zkušenost s tím, jak se jejich oblíbené/jimi vybrané
@@ -38,72 +41,81 @@ Zadání úkolu
 
 Vytvořte aplikaci, která dokáže spočítat součet délek všech úseků
 určitého typu liniových staveb, vodních toků nebo železnic na území
-České republiky v databázi OpenStreetMap uložené k určititému
+České republiky v databázi OpenStreetMap uložené k určitému
 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 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,
-  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.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)
 
 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élu
-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 paramentry přijímat na příkazovém řádku nebo
-s využitím grafického rozhraní, dialogu. Výstup může být
+Program může parametry přijímat na příkazovém řádku nebo
+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í
-
-1) docházelo by k zbytečné zátěži komunitních serverů
-2) výsledeky pro novější, průběžně editovaná data nebude odpovídat
-   referenčním hodnotám
-3) cílem je se seznámit a vyřešit práci s daty, ne jen zaslání
-   dotazu do cizí služby
-
-Pokud budete k zpracování používat infsrastrukturu laboratoří,
-tak, prosím, nekopírujte data ani meziprodukty zpracování do svého
-domovského adresáře. Pokud budete pot5ebovat dočasné výsledky
-ukládat do souboru, použijte adresář /tmp. Do něj uložená data
-se ukládají pouze do pěměti RAM na dané stanici. Velikost je pak
-omezena přibližně na polovinu fyzické paměti stanice.
+služby nad aktuálními daty projektu OpneStreetMap.org. Odůvodnění:
+
+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
+domovského adresáře. Došlo by k překročení limitů přidělené kapacity
+na uživatele. Pokud budete potřebovat dočasné výsledky ukládat do
+souboru, použijte adresář `/tmp`. Do něj uložená data se ukládají
+pouze do paměti RAM na dané stanici. Velikost je pak omezena přibližně
+na polovinu fyzické paměti stanice.
 
 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ží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) - sekupuje 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í
 součástí databáze. Často se vlastnosti přiřazené k relaci týkají i všech
 do ní zahrnutých cest a bodů.
 
-Pro jednoduchost nebude braný na tento přenos vlastností zřetel. Úkolem
+Pro jednoduchost nebude brán na tento přenos vlastností zřetel. Úkolem
 je opravdu pouze vyhledat všechny cesty, které mají přímo nastavený
-daný klíč s požadovanou hodnotou. Délka se pak spočítá z rozílů poloh
+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 zeském povrchu. Pro tento výpočet použijte některou vhodnou knihovnu.
+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,
@@ -115,22 +127,20 @@ struktur. Pro efektivní uložení dat formát přímo s daty nepřenáší pojm
 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).
+omezený na cca půl hodiny.