Přeskočit obsah

Projekt OpenStreetMap

iD editor

Vytváření nových prvků

Nový prvek typu uzel.

Nový prvek typu cesta. Konec editace cesty uskutečníme stisknutím tlačítka Escape. Pokud vytvoříme uzavřenou cestu (první uzel je zároveň uzlem posledním), automaticky se vytvoří též odpovídající oblast.

Nový prvek typu oblast můžeme vytvořit stejně jako prvek typu cesta použitím typu cesta, nebo rovnou použitím typu oblast (usnadňuje a urychluje plnění značek - tags). Následující ukázka řeší problematičtější případ, kde je zapotřebí vytvořit oblast s dírou (v ukázce jsou k vytvoření použity dvě cesty - díru by bylo lze vytvořit stejným způsobem i za použití dvou oblastí, ale bylo by zapotřebí se následně vnitřní oblasti zbavit).

Aktualizace již existujících prvků

Humanitarian OpenStreetMap Team

Humanitarian OpenStreetMap Team (HOT) je mezinárodní tým zaměřený na tvorbu geoinformací v OSM za humanitárními účely. Více informací naleznete na jejich stránkách. Možnost zapojit se do mapování je skrze HOT OSM Tasking Manager nebo na dedikovaných mapatonech.

Tasking Manager

Sami si vyberete, na jakém projektu chcete pracovat. Projekty jsou ve výchozím nastavení seřazeny podle jejich naléhavosti; první tak zpravidla bývají přírodní katastrofy a náhlé epidemie. Uživatel si může projekty seřadit podle svých preferencí (např. podle data zadání) nebo filtrovat (např. podle jejich obtížnosti, geografické oblasti nebo oblasti zájmů). K přihlašování do HOT OSM Tasking Manager se používají přihlašovací údaje z OSM.

Bližší informace o jednotlivých projektech získáte po jejich rozkliknutí.

Po kliknutí na Contribute získáte (levá část obrazovky) podrobné informace o tom, co a jak se v daném projektu mapuje. Důležitá je informace o tom, jaké letecké/satelitní snímky se používají jako podklad a jakým způsobem jsou řešeny kruhové apod. prvky. Některé projekty obsahují dokonce i videonávody. V pravé části obrazovky jsou jednotlivá zájmová území zbarvená podle jejich momentálního stavu mapování.

Mapování probíhá stejně jako v iD editoru popsaném výše. Po ukončení editací je v pravém panelu zapotřebí označit, zda je dlaždice zmapována celá, nebo jsou ještě nějaké práce zapotřebí. Bývá slušností se k editaci slovně vyjádřit. V případě, že se vám zdá dlaždice pro jednoho člověka/jeden úkol příliš velká, můžete ji pomocí tlačítka Split task (vpravo dole) rozčtvrtit.

Export dat a jejich využití v GIS

Data OSM lze exportovat jednoduše přímo ze záložky Export na stránce OpenStreetMap. Příklad: https://www.openstreetmap.org/export#map=17/50.10307/14.38749

V dalším textu se budeme věnovat pokročilejším možnostem.

Overpass turbo

Overpass turbo je online IDE určené k získávání dat z OSM. K tomuto účelu využívá tzv. Overpass API. Klient posílá skrze API dotazy na server OSM, který na jejich základě vrací prostorová data. Overpass turbo je vizualizuje v interaktivní mapě a napomáhá s volbou dotazů. Přesto můžete Overpass API využít i z jakýchkoli skriptů bez potřeby interakce s Overpass turbo.

Příklady dotazů

Uzly uvnitř vybrané oblasti

Existuje několik způsobů, jak ohraničující obdélník definovat. Prvním je aktualizace nastavení bbox dotazu. Aktualizace nastavení dotazu je vždy ohraničeno hranatými závorkami a nachází se na začátku dotazu. Pokud by náš dotaz obsahoval více řádek, ohraničující obdélník by se týkal všech. Komentáře se tvoří pomocí dvou lomítek.

// ohranicujici obdelnik casti Stareho Mesta prazskeho
[bbox:50.085, 14.41, 50.09, 14.42];

// vrat vsechny uzly
node;

out;

Kratší zápis využívá jeho definičních bodů jako parametrů přímo v dotazu na uzly. Pokud by náš dotaz obsahoval více řádek, ohraničující obdélník by se týkal pouze dotazu na uzly.

node(50.085, 14.41, 50.09, 14.42);

out;

Uživatel se však nemusí nutně spoléhat na ohraničující obdélník. Pomocí around lze získat prvky do vzdálenosti (v metrech) od zadaného bodu.

// uzly do vzdalenosti 700 metru od bodu se souradnicemi (50.085, 14.41)
node(around:700, 50.085, 14.41)["name"];

out;

Jako definiční geometrie around však nemusí sloužit pouze jeden bod. Lze též vyhledávati prvky do vzdálenosti od zadané linie.

// uzly do vzdalenosti 200 metru od linie s krajnimi body o souradnicich (50.085, 14.41) a (50.09, 14.42)
node(around:200, 50.085, 14.41, 50.09, 14.42)["name"];

out;

Vedle bbox a around pak existuje také možnost prostorového filtrování na základě mnohoúhelníku. To se činí za užití poly. Pro vytvoření polygonu musí být ve formě řetězce zadány souřadnice nejméně trojice bodů oddělených mezerami. Čím složitější bude zadaný mnohoúhelník, tím déle bude příkaz trvat.

node(poly:"50.085 14.41 50.09 14.41 50.09 14.42");

out;

V Overpass turbo navíc existuje možnost využíti mapového okna jako ohraničujícího obdélníku.

node({{bbox}});
out;
FIltrování prvků podle značek

Filtrování se děje za použití hranatých závorek. Vrácené prvky lze filtrovati podle toho, zda je značka vyplněná.

// ohranicujici obdelnik casti Stareho Mesta prazskeho
[bbox:50.085, 14.41, 50.09, 14.42];

// vrat vsechny uzly, ktere maji definovany nazev
node["name"];
out;

Protože musí mít každá značka jen jednu hodnotu, názvy v cizích řečích se zadávají jako nové značky.

// ohranicujici obdelnik casti Stareho Mesta prazskeho
[bbox:50.085, 14.41, 50.09, 14.42];

// vrat vsechny uzly, ktere maji definovany nazev v anglictine
node["name:en"];
out;

Lze také vykonat pravý opak. Následující příklad vrátí prvky, které nemají značku vyplněnou.

// ohranicujici obdelnik casti Stareho Mesta prazskeho
[bbox:50.085, 14.41, 50.09, 14.42];

// vrat vsechny uzly, ktere nemaji definovany nazev
node[!"name"];
out;

Většinou ale uživatel nebaží po prvcích s vyplněnou značkou, nýbrž po nějaké hodnotě.

// ohranicujici obdelnik casti Stareho Mesta prazskeho
[bbox:50.085, 14.41, 50.09, 14.42];

// vrat vsechny uzly, ktere se nazyvaji svaty Ivo
node["name" = "svatý Ivo"];
out;

V takových dotazech lze využívati též regulárních výrazů.

// ohranicujici obdelnik casti Stareho Mesta prazskeho
[bbox:50.085, 14.41, 50.09, 14.42];

// vrat vsechny uzly, ktere jsou pojmenovany podle svatych
node["name" ~ "[Ss]vat"];
out;

V přechozím příkladu jsme řešili velké a malé písmeno přes regulární výraz. Lze to však řešiti i pomocí parametru i ("case insensitive").

// ohranicujici obdelnik casti Stareho Mesta prazskeho
[bbox:50.085, 14.41, 50.09, 14.42];

// vrat vsechny uzly, ktere jsou pojmenovany podle svatych
node["name" ~ "svat", i];
out;

Nemusíme se však omezovati pouze jedním filtrem. Filtry lze řetěziti.

// ohranicujici obdelnik casti Stareho Mesta prazskeho
[bbox:50.085, 14.41, 50.09, 14.42];

// vrat vsechny uzly, ktere jsou pojmenovany podle svatych a jejich autorem je Braun
node["name" ~ "svat", i]["artist_name" ~ "braun", i];
out;

Pokud uživatele nezajímají veškeré atributy vrácených prvků, existuje několik možností, jak je filtrovat. To zrychlí dotazy a sníží jejich nároky na paměť. Druhé jmenované je důležité především pro rychlé testování procesů v Overpass turbo.

  • out: vrať vše
  • out ids: typ objektu, ID
  • out skel: typ objektu, ID; souřadnice uzlů; ID členských bodů (pro cesty); ID, typ a role členů (pro vztahy)
  • out body: typ objektu, ID; souřadnice uzlů; ID členských bodů (pro cesty); ID, typ a role členů (pro vztahy); značky
  • out tags: typ objektu, ID; značky
  • out meta: typ objektu, ID; souřadnice uzlů; ID členských bodů (pro cesty); ID, typ a role členů (pro vztahy); značky; historie změn
  • out count: pouze počet nalezených prvků

Protože out ids a out tags nevracejí žádné souřadnice, v Overpassturbo se výsledek zobrazí pouze jako XML (po překliknutí ze zobrazení Data na Map nebudou žádné prvky vybrány). Pokud chcete pro cesty a relace pouze souřadnice centroidu, připište k příkazu out doušku center, např. out body center.

V Overpass turbo se na detaily vrácených prvků můžete podívat jednoduše kliknutím myší.

Velice často potřebuje uživatel provést více dotazů než jeden (např. dotázat se na cesty i na oblasti). To by sice bylo lze řešiti dvěma dotazy, ale za použití závorek lze vše přehledněji a skladněji zahrnouti do dotazu jednoho.

// ohranicujici obdelnik casti Stareho Mesta prazskeho
[bbox:50.085, 14.41, 50.09, 14.42];

// vrat vsechny uzly, jejichz prvkem je socha (tedy nejen primarne sochy, ale napr. i fontany se sochami)
(
  node["artwork_type"="statue"];
  node["memorial"="statue"];
);
out;

Vrácené prvky však nemusíme pouze spojovati, občas je vhodné vytvořit i jejich rozdíl. Toho dosáhneme za využití operátoru minus.

// ohranicujici obdelnik casti Stareho Mesta prazskeho
[bbox:50.085, 14.41, 50.09, 14.42];

// vrat vsechny sochy, ktere se nenachazeji na mostech
(
  node["memorial"="statue"];
  -
  node["location"="bridge"];
);
out;

Pokud se v Overpass turbo překlikneme (pravý horní roh) do zobrazení výstupních dat (Data) namísto mapy (Map), zjistíme, že data jsou vracena ve formátu XML. Pokud si přejete jiný návratový formát, můžete jej specifikovat jako nastavení dotazu. V Overpass turbo navíc existuje možnost exportovat data i ve formátu nespecifikovaném v dotazu (vrchní lišta -> Export).

// format vystupnich dat
[out:json]

// ohranicujici obdelnik casti Stareho Mesta prazskeho
[bbox:50.085, 14.41, 50.09, 14.42];

// vrat vsechny sochy, ktere se nenachazeji na mostech
(
  node["memorial"="statue"];
  -
  node["location"="bridge"];
);
out;

V případě generování CSV je zapotřebí specifikovat jeho podobu. Syntaxe jest [out:csv (*sloupce; bool hlavicka; oddelovac)].

// prejeme si vystup ve formatu CSV
// CSV bude obsahovat id prvku, jeho typ, souradnice a znacku jmeno
// specialni typy predchazi ::
[out:csv(::id, ::type, ::lat, ::lon, name; true; ",")]

// ohranicujici obdelnik casti Stareho Mesta prazskeho
[bbox:50.085, 14.41, 50.09, 14.42];

// vrat vsechny sochy, ktere se nenachazeji na mostech
(
  node["memorial"="statue"];
  -
  node["location"="bridge"];
);
out;

Výstupy veškerých dotazů se ve skutečnosti zapysují do tzv. sad (set). Pokud název sady nespecifikujeme (jako dosud), zapisují se do výchozí sady _. Příkladu, v němž jsme se dotazovali na uzly pojmenované po svatých, tak ve skutečnosti vypadá následujícím způsobem.

// ohranicujici obdelnik casti Stareho Mesta prazskeho
[bbox:50.085, 14.41, 50.09, 14.42];

// vrat vsechny uzly, ktere jsou pojmenovany podle svatych
node["name" ~ "svat", i]->._;
._ out;

Nemusíme však pracovat pouze s výchozí sadou. Pokud sady náležitě pojmenujeme, bude se nám s nimi pracovati snáze. Příklad s Braunovými sochami svatých tak lze přepsati následujícím způsobem.

// ohranicujici obdelnik casti Stareho Mesta prazskeho
[bbox:50.085, 14.41, 50.09, 14.42];

// vrat vsechny uzly, ktere jsou pojmenovany podle svatych
node["name" ~ "svat", i]->.ikonografie;
node.ikonografie["artist_name" ~ "braun", i]->.braunovy_ikony;

.braunovy_ikony out;

Výše popsaný příklad užití around pro prostorové filtrování lze využít také na jakékoli sadě (včetně nespecifikované-výchozí). S poly tomu tak bohužel není.

// ohranicujici obdelnik casti Stareho Mesta prazskeho
[bbox:50.085, 14.41, 50.09, 14.42];

// pocatecni bod bude stanice Staromestska
node["name"="Staroměstská"]->.zastavka;

// vyber kavarny v okruhu 300 metru od zastavky, kde budu vystupovat
node(around.zastavka:300)["amenity"="cafe"];

out;
Cesty

Abychom získali cesty namísto uzlů, zkrátka vyměníme příkaz node za příkaz way. Protože však cesty neobsahují žádnou vlastní geometrii, nepůjde taková data zobrazit v mapě, ačkoli vidíme (v Overpass turbo záložka Data) jejich značky a identifikátory jejich referenčních uzlů.

// ohranicujici obdelnik casti Stareho Mesta prazskeho
[bbox:50.085, 14.41, 50.09, 14.42];

way["name"];

out;

Abychom získali i geometrii cest (-> uzlů), použijeme příkaz >. Tento příkaz znamená "rekurzi směrem dolů" a vyhledává členské prvky vstupní sady. Členskými prvky cest jsou uzly (uzly samy nemají žádné členské prvky).

// ohranicujici obdelnik casti Stareho Mesta prazskeho
[bbox:50.085, 14.41, 50.09, 14.42];

// vytvorme kolekci cest a jejich uzlu, abychom neziskavali informace jen o uzlech
(
  way["name"];
  >;
);

out;

QGIS QuickOSM

QuickOSM je zásuvný modul do QGISu, který můžeme doinstalovat běžným způsobem (Zásuvný moduly -> Správa a instalace zásuvných modulů).

Po spuštění pluginu se objeví dialog, který umožňuje vytvořit dotaz interaktivně.

Příklad pro výběr dálnic na území ČR:

Zásuvný modul používá pro dotazování a získání dat Overpass API. V záložce Query se dokonce můžete podívati na vygenerovaný kód pro Overpass API a upraviti jej.

OSM exporty

Lze také stáhnout již exportovaná data a použít je přímo ve vašem oblíbeném GISu. Nejznámnějším poskytovalem je server GeoFabrik: https://download.geofabrik.de/.

Nejprve vyberte zájmovou oblast: světadíl a zemi. Příklad pro Českou republiku: https://download.geofabrik.de/europe/czech-republic.html

  • Data lze státhnout v nativním formátu OSM při zvolené kompresi (PBF, BZ2).
  • Kromě tohoto formátu jsou dostupná i předzpracovaná a tématizovaná data ve formátu Esri Shapefile (v porovnání s formátem OSM neobsahují veškeré informace, viz popis dat).

Poznámka

Předstažená data najdete na GIS.labu v adresáři Repository/155FGIS/02.

Příklad vizualizace silnic v prostředí QGIS:

Úkol

Vyzkoušejte do prostředí QGIS načíst OpenStreetMap data ve formátu OSM a Esri Shapefile. Porovnejte jejich rozdílnou strukturu.