]> rtime.felk.cvut.cz Git - edu/osp-wiki.git/commitdiff
The initial proposal of assignment of last tutorials task.
authorPavel Pisa <pisa@cmp.felk.cvut.cz>
Wed, 15 Apr 2015 01:08:03 +0000 (03:08 +0200)
committerPavel Pisa <pisa@cmp.felk.cvut.cz>
Wed, 15 Apr 2015 01:08:03 +0000 (03:08 +0200)
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
cviceni.mdwn
cviceni/osm.mdwn [new file with mode: 0644]

index 9df10ce9eaf7467d3f4005e0a0b305608c16d3e4..83820f658b922ecbe1da948b576c8cf3c348f5f0 100644 (file)
@@ -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 (file)
index 0000000..b2aaf15
--- /dev/null
@@ -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).