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.
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.
V Overpass turbo navíc existuje možnost využíti mapového okna jako ohraničujícího obdélníku.
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;
Návratová hodnota
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šeout ids
: typ objektu, IDout 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čkyout tags
: typ objektu, ID; značkyout meta
: typ objektu, ID; souřadnice uzlů; ID členských bodů (pro cesty); ID, typ a role členů (pro vztahy); značky; historie změnout 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.