From e86eea08d0fa7c35a9f0bf255a5369b29ecd0124 Mon Sep 17 00:00:00 2001 From: Pavel Pisa Date: Wed, 15 Apr 2015 03:08:03 +0200 Subject: [PATCH] The initial proposal of assignment of last tutorials task. Signed-off-by: Pavel Pisa --- cviceni.mdwn | 2 +- cviceni/osm.mdwn | 136 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 137 insertions(+), 1 deletion(-) create mode 100644 cviceni/osm.mdwn diff --git a/cviceni.mdwn b/cviceni.mdwn index 9df10ce9..83820f65 100644 --- a/cviceni.mdwn +++ b/cviceni.mdwn @@ -23,7 +23,7 @@ Osnova 5. [[Prezentace projektu do kterého budu přispívat v samostatné práci a nástin řešení|cviceni/5]] 6. Úloha 4: [[Obsluha mnoha klientů|cviceni/server]] -7. Úloha 5: Open street map +7. Úloha 5: [[Open street map|cviceni/osm]] 8. Test (16. 4. 2015) ([[zadání|cviceni/6]], [[výsledky|cviceni/6/vysledky]]) 9. [[Samostatná práce, konzultace|cviceni/konzultace]] 10. [[Samostatná práce, konzultace|cviceni/konzultace]] diff --git a/cviceni/osm.mdwn b/cviceni/osm.mdwn new file mode 100644 index 00000000..b2aaf157 --- /dev/null +++ b/cviceni/osm.mdwn @@ -0,0 +1,136 @@ +[[!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 +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 +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é zprojektu +provedena úprava/oprava musí být příslušná změna poskytnutá i do +původního/otevřeného projektu. + + +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ů. +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 +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é +technologie se zpracováním dat vyrovnají. + + +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 +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 +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) + +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 +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 +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. + +Podpůrné informace pro řešení úkolu +=================================== + +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ů + +- 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 + +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 +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 +všech bodů v rámci daného úseku. + +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. + +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 +procesu do binární podoby (sekvence bytů), která je nezávislá na konkrétní +procesorové platformě a tak umožňuje data přeposlat nebo načíst ze souboru +jinému procesu (programu) a zde je rozbalit do jím používaných datových +struktur. Pro efektivní uložení dat formát přímo s daty nepřenáší pojmenování +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 + +Použití formátu Protocol Bufferes pro data projektu OpenSteerMap.org +je popsané na stránce + + 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 + + https://github.com/scrosby/OSM-binary/tree/master/src + +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í +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). -- 2.39.2