Dne 1. 4. 2019 ČÚZK otevřel dvě zásadní datové sady Data50 a Data200. Rozhodl jsem se tedy tyto zdroje zahrnout do balíku CzechData. Začátkem je vrstva Data50 (popis zde), neb je detailnější a tím pádem zajímavější. Datová sada Data200 bude doplněna do balíku v budoucnu.

Práci s těmito datovými sadami si ukážeme na jednoduchých ukázkách.

Začátkem je samozřejmě načtení nezbytných balíků. Balík DT potřebujeme pouze pro hezkou vizualizaci tabulky v HTML, jinak není potřebný.

library(tidyverse)
library(sf)
library(CzechData)
library(leaflet)
library(glue)
library(DT)

Základem je zjistit, jaké vrstvy jsou vlastně dostupné. V rámci toho můžeme zjistit, do jaké kategorie vrstva spadá a jaká je velikost souboru pro stažení. Jednotlivé vrstvy totiž nejsou dostupné samostatně, ale pouze v zipech po kategoriích. Mimo tyto údaje je dostupná ještě url pro stažení, ale tu zde nezobrazujeme.

load_Data50_info() %>% 
  select(vrstva, shp_nazev, kategorie, velikost) %>% 
  datatable(options = list(scrollX = TRUE), rownames = FALSE)

Z Data50 si zobrazíme všechny kostely v okresech Brno-město a Brno-venkov. Vrstvu okresů získáme z RÚIANU. Upozorním, že jak RÚIAN tak i příslušný zip soubor obsahující vrstvu kostelů se stáhnou do dočasné složky vytvořené R a jsou dostupné i opakovaně až do restartu session R.

churches <- load_Data50(layer = "Kostel", WGS84 = TRUE)

JMK <- load_RUIAN_state(layer = "OKRESY_P", WGS84 = TRUE) %>% 
  filter(nazev %in% c("Brno-město", "Brno-venkov"))

churches_JMK <- churches %>% 
  st_intersection(JMK)

Takže pokud potom zkusíme načíst vrstvu hřbitovů, tak nedochází k opakovanému stažení dat, ale pouze k načtení z dočasného zip souboru.

cemeteries <- load_Data50(layer = "Hrbitov")

V kódu výše si můžete všimnout, že obě vrstvy (kostely i okresy) jsme přímo konvertovali do souřadnicového systému WGS-84, protože je následně budeme vizualizovat skrze leaflet. Funkce st_intersection() sice potom lehce protestuje skrze warning, ale v tomto případě to výsledek neovlivní. Vrstvu hřibitovů jsme ponechali v pro česká data výchozím souřadnicovém systému S-JSTK. Alternativou je ponechat data v systému S-JSTK a konvertovat je později funkcí sf::st_transform() s EPSG kódem 4326 před předáním dat do vizualizace.

Než vytvoříme vizualizaci pomocí leafletu, vytvoříme si ještě koretní citaci. Podmínky použití vrstvy Data50 (zde) specifikují poměrně přesně citaci, kterou je třeba použít. Balík CzechData obsahuje funkci generate_Data50_citation(), která nám tuto citaci připraví. Zde ji spojíme s citací OpenStreetMap, protože tuto vrstvu použijeme jako podklad.

copyright_opsm <- "© OpenStreetMap contributors, CC-BY-SA"
copyright_cuzk <- generate_Data50_citation()

copyright <- glue("{copyright_opsm} | \n {copyright_cuzk}")

Vrstva kostelů bohužel neobsahuje žadné atributy, takže je možné je pouze prostorově vizualizovat. S ohledem na to, že Data50 má měřítko 1:50 000, je nutné omezit maximální úroveň přiblížení (zoom), aby data dávala smysl.

leaflet(data = churches_JMK, width = "100%", 
        options = leafletOptions(minZoom = 6, maxZoom = 14)) %>%
  addTiles(attribution = copyright) %>%
  addMarkers() %>% 
  addPolygons(data = JMK, color = "black")

Uložení dat z vrstvy Data50

S ohledem na velikost některých kategorií (viz tabulky výše a třeba položka terenniRelief) je vhodné některé vrstvy uložit pro opakované použití. Funkce save_Data50() dělá právě toto. Lze zvolit mezi extrakcí specifické vrstvy (parametr layer) nebo kategorií vrstev (parametr type). Dle toho funkce vrací buď odkaz na složku nebo sadu souborů. Do určené složky se uloží i původní zazipovaný soubor. Pro specifikaci umístění použijeme balík here, pro popis balíku doporučuju tenhle článek. Pokud funci save_Data50() použijeme opakovaně, tak pakliže již existuje v určené složce daný zip soubor, pak nedochází k opakovanému stahování.

library(here)
folder <- save_Data50(here("data"), type = "popis")

Takto si lze “odložit” datové sady pro následné použití.