• OP ŽP - chráněná území
    • Propojit a porovnat standardní data s daty na úrovni CHKO/NP
    • Najít obce v jednotlivých CHKO a NP
  • Export

OP ŽP - chráněná území

dt <- read_parquet(here::here("data-processed", 
                              "misto_fix-02-gnames.parquet"))
dtl <- read_parquet(here::here("data-processed", 
                               "misto_fix-02-gnames_long-geo.parquet"))

ops <- read_parquet(here::here("data-processed", "op-codes.parquet"))
prj_meta <- read_parquet(here::here("data-processed", "prj-esif-meta.parquet"))

dt_chkonp <- read_parquet(here::here("data-processed", "prj_chkonp.parquet"))

prj_no_obec <- read_parquet(here::here("data-processed", "prj_id_noobec.parquet"))
dt_geostructure_bylvl <- read_parquet(here::here("data-processed", "dt_geostructure_by-lvl.parquet"))
dt_geostructure_byprj <- read_parquet(here::here("data-processed", "dt_geostructure_by-prj.parquet"))
source(here::here("read_metadata.R"))
zuj_geo <- read_rds(here::here("data-processed", "geo_zuj-all.rds"))
chu_geo <- CzechData::load_Data50("ChraneneUzemi") %>%
  group_by(KODCHU, NAZEV, KATEGCHU) %>% 
  summarise(pocet = n()) %>% 
  st_cast("MULTIPOLYGON") %>% 
  st_as_sf() %>% 
  ungroup()
## ℹ Downloading roughly 16 MB, this can take a while.
## ✓ Data downloaded and unpacked.
## `summarise()` regrouping output by 'KODCHU', 'NAZEV' (override with `.groups` argument)
# mapview::mapview(chu_geo, zcol = "NAZEV")
prj_noplace <- setdiff(dt$prj_id, dtl$prj_id)
dt_chkonp$prj_id %in% dt$prj_id %>% table()
## .
## FALSE  TRUE 
##    70   663
dt_chkonp %>% 
  # jen projekty v našich datech
  filter(!prj_id %in% dt$prj_id) %>% 
  # jen programu 1-9
  filter(str_detect(prj_id, "CZ\\.0[1-8]")) %>% 
  distinct(prj_id)
ABCDEFGHIJ0123456789
prj_id
<chr>
CZ.01.2.07/0.0/0.0/19_256/0022704
CZ.01.3.10/0.0/0.0/19_251/0023019
CZ.05.3.29/0.0/0.0/19_122/0012963
CZ.05.3.29/0.0/0.0/19_122/0013075
CZ.05.3.29/0.0/0.0/19_122/0013207
CZ.05.4.27/0.0/0.0/18_115/0012830
CZ.05.4.27/0.0/0.0/18_115/0013592
CZ.05.4.27/0.0/0.0/20_138/0013181
CZ.05.4.27/0.0/0.0/20_138/0013184
CZ.05.4.27/0.0/0.0/20_138/0013188

Cca 39 projektů označených CHKO/NP nemáme v datech - jsou všechny z nedávných (a snad tedy stále otevřených) výzev, tj. projekty, které skutečně nově přibyly. (Celkem těchto projektů je 64, ty zbylé jsou v OPR a PRV).

prj_noplace %in% dt_chkonp$prj_id %>% table()
## .
## FALSE  TRUE 
##     1    26
dt %>% 
  filter(prj_id %in% prj_noplace) %>% 
  distinct(prj_id, op_id) %>% 
  count(op_id)
ABCDEFGHIJ0123456789
op_id
<chr>
n
<int>
OP Z1
OP ZP26
dt_chkonp %>%
  left_join(prj_meta) %>% 
  distinct(prj_id, op_id) %>% 
  mutate(noobec = prj_id %in% prj_no_obec$prj_id, 
         noplace = prj_id %in% prj_noplace) %>% 
  count(op_id, noobec, noplace) %>% 
  spread(noobec, n)
## Joining, by = "prj_id"
ABCDEFGHIJ0123456789
op_id
<chr>
noplace
<lgl>
FALSE
<int>
TRUE
<int>
IROPFALSE21
OP PIKFALSE29NA
OP VVVFALSE81
OP ZPFALSE39429
OP ZPTRUE26NA
NAFALSE64NA

Takže data o CHKO/NP nám pomůžou rozřešit projekty s chybějící lokalizací a pak ještě cca 30 projektů bez informace o obci.

dt_chkonp %>%
  left_join(prj_meta) %>% 
  distinct(prj_id, op_id) %>% 
  mutate(noobec = prj_id %in% prj_no_obec$prj_id, 
         noplace = prj_id %in% prj_noplace) %>% 
  filter(noobec) %>% 
  distinct(prj_id, op_id)
## Joining, by = "prj_id"
ABCDEFGHIJ0123456789
prj_id
<chr>
op_id
<chr>
CZ.02.1.01/0.0/0.0/15_003/0000481OP VVV
CZ.05.1.24/0.0/0.0/16_034/0002340OP ZP
CZ.05.1.24/0.0/0.0/16_035/0002115OP ZP
CZ.05.2.32/0.0/0.0/15_008/0000338OP ZP
CZ.05.2.32/0.0/0.0/15_017/0001433OP ZP
CZ.05.4.27/0.0/0.0/15_009/0002599OP ZP
CZ.05.4.27/0.0/0.0/15_009/0004187OP ZP
CZ.05.4.27/0.0/0.0/16_027/0002339OP ZP
CZ.05.4.27/0.0/0.0/16_048/0003332OP ZP
CZ.05.4.27/0.0/0.0/17_078/0005173OP ZP

Podíváme se na ně do hlavního datasetu:

dtl %>% 
  filter(typ == "id") %>% 
  distinct(prj_id, prj_nazev, p_nazev, level) %>% 
  filter(prj_id %in% prj_no_obec$prj_id & prj_id %in% dt_chkonp$prj_id) %>% 
  left_join(dt_geostructure_bylvl)
## Joining, by = c("prj_id", "level")
ABCDEFGHIJ0123456789
prj_id
<chr>
CZ.06.1.42/0.0/0.0/15_002/0000005
CZ.02.1.01/0.0/0.0/15_003/0000481
CZ.02.1.01/0.0/0.0/15_003/0000481
CZ.05.4.27/0.0/0.0/17_087/0009263
CZ.05.4.27/0.0/0.0/17_087/0009263
CZ.05.4.27/0.0/0.0/17_087/0010968
CZ.05.4.27/0.0/0.0/17_087/0010968
CZ.05.4.27/0.0/0.0/17_088/0011273
CZ.05.2.32/0.0/0.0/15_008/0000338
CZ.05.2.32/0.0/0.0/15_008/0000338

Jaká je struktura míst realizace u těch zbylých?

dtl %>% 
  filter(prj_id %in% dt_chkonp$prj_id) %>% 
  group_by(prj_id) %>% 
  mutate(toplevel = min(as.numeric(level))) %>% 
  group_by(op_id, prj_id, level, toplevel, p_nazev, prj_nazev) %>% 
  summarise(n_units = length(unique(value)))
## `summarise()` regrouping output by 'op_id', 'prj_id', 'level', 'toplevel', 'p_nazev' (override with `.groups` argument)
ABCDEFGHIJ0123456789
op_id
<chr>
prj_id
<chr>
level
<ord>
toplevel
<dbl>
IROPCZ.06.1.42/0.0/0.0/15_002/0000005orp3
IROPCZ.06.3.72/0.0/0.0/15_001/0000264zuj1
IROPCZ.06.3.72/0.0/0.0/15_001/0000264obec1
IROPCZ.06.3.72/0.0/0.0/15_001/0000264orp1
IROPCZ.06.3.72/0.0/0.0/15_001/0000264okres1
IROPCZ.06.3.72/0.0/0.0/15_001/0000264kraj1
IROPCZ.06.3.72/0.0/0.0/15_001/0004704zuj1
IROPCZ.06.3.72/0.0/0.0/15_001/0004704obec1
IROPCZ.06.3.72/0.0/0.0/15_001/0004704orp1
IROPCZ.06.3.72/0.0/0.0/15_001/0004704okres1

To vypadá dost důvěryhodně, minimálně tam, kde na tom sejde - u IROPu a OP ŽP. Počty obcí a dalších území na projektech působí, že není potřeba je dopočítávat z území CHKO/NP ani že jsou tam uměle nastrkané všechny obce překrývající se s chráněným územím.

Propojit a porovnat standardní data s daty na úrovni CHKO/NP

Kolik je jakých CHKO/NP?

chu_geo %>% 
  st_set_geometry(NULL) %>% 
  count(KATEGCHU)
ABCDEFGHIJ0123456789
KATEGCHU
<chr>
n
<int>
CHKO26
NP4

Najít v datech všechny bez místa

dt %>% 
  filter(prj_id %in% prj_noplace) %>% 
  select(prj_id, prj_nazev, p_nazev, p_sidlo_nazev, prj_anotace) 
ABCDEFGHIJ0123456789
prj_id
<chr>
CZ.03.2.65/0.0/0.0/16_047/0009355
CZ.05.4.27/0.0/0.0/17_088/0008643
CZ.05.4.27/0.0/0.0/17_088/0010521
CZ.05.4.27/0.0/0.0/15_009/0001444
CZ.05.4.27/0.0/0.0/15_009/0001444
CZ.05.4.27/0.0/0.0/15_009/0001444
CZ.05.4.27/0.0/0.0/15_009/0001444
CZ.05.4.27/0.0/0.0/15_009/0001444
CZ.05.4.27/0.0/0.0/15_009/0001444
CZ.05.4.27/0.0/0.0/15_009/0001444

Kolik je u každého z nich řádků?

dt %>% 
  filter(prj_id %in% prj_noplace) %>% 
  select(op_id, prj_id, prj_nazev, p_nazev, p_sidlo_nazev, prj_anotace) %>% 
  count(prj_id, op_id, sort = T) %>% 
  arrange(desc(n), prj_id)
ABCDEFGHIJ0123456789
prj_id
<chr>
op_id
<chr>
n
<int>
CZ.05.4.27/0.0/0.0/15_009/0001444OP ZP30
CZ.05.4.27/0.0/0.0/17_078/0008605OP ZP30
CZ.05.4.27/0.0/0.0/15_009/0001448OP ZP26
CZ.05.4.27/0.0/0.0/19_120/0010358OP ZP20
CZ.05.4.27/0.0/0.0/17_078/0008178OP ZP2
CZ.03.2.65/0.0/0.0/16_047/0009355OP Z1
CZ.05.3.29/0.0/0.0/19_118/0010220OP ZP1
CZ.05.4.27/0.0/0.0/15_010/0000089OP ZP1
CZ.05.4.27/0.0/0.0/17_058/0006131OP ZP1
CZ.05.4.27/0.0/0.0/17_078/0005408OP ZP1

A kolik řádků je u stejných projektů ve vyjetině s rozpadem na CHKO/NP

dt_chkonp %>% 
  filter(prj_id %in% prj_noplace) %>% 
  left_join(prj_meta) %>% 
  count(prj_id, op_id, sort = T) %>% 
  arrange(desc(n), prj_id)
## Joining, by = "prj_id"
ABCDEFGHIJ0123456789
prj_id
<chr>
op_id
<chr>
n
<int>
CZ.05.4.27/0.0/0.0/15_009/0001444OP ZP30
CZ.05.4.27/0.0/0.0/17_078/0008605OP ZP30
CZ.05.4.27/0.0/0.0/15_009/0001448OP ZP26
CZ.05.4.27/0.0/0.0/19_120/0010358OP ZP20
CZ.05.4.27/0.0/0.0/17_078/0008178OP ZP2
CZ.05.3.29/0.0/0.0/19_118/0010220OP ZP1
CZ.05.4.27/0.0/0.0/15_010/0000089OP ZP1
CZ.05.4.27/0.0/0.0/17_058/0006131OP ZP1
CZ.05.4.27/0.0/0.0/17_078/0005408OP ZP1
CZ.05.4.27/0.0/0.0/17_078/0009044OP ZP1

Takže je to to samé až na projekt OP Z, který v datech s rozpadem CHKO/NP není.

dt_with_chkonp <- dt %>% 
  filter(prj_id %in% prj_noplace, op_id == "OP ZP") %>% 
  distinct(prj_id) %>% 
  left_join(dt_chkonp)
## Joining, by = "prj_id"
dt_with_chkonp %>% 
  count(prj_nazev, prj_id, sort = T)
ABCDEFGHIJ0123456789
prj_nazev
<chr>
Monitoring a mapování vybraných druhů rostlin a živočichů a inventarizace maloplošných zvláště chráněných území v národně významných územích v České republice
Sjednocený informační systém ochrany přírody ČR - nástroj podpory hodnocení stavu chráněných území a chráněných druhů
Zajištění plánovací dokumentace pro vybrané lokality národního významu v České republice
Plán ÚSES v CHKO
Krkonošsko-jizerskohorská populace tetřívka obecného
Aktualizace studie krajinného rázu Krkonošského národního parku a jeho ochranného pásma
Analýza stavu a návrhy opatření pro zajištění příznivého stavu vodních toků na území KRNAP a jeho ochranného pásma
Asanace lesních cest v návaznosti na plnění Plánu péče o Krkonošský národní park a jeho ochranné pásmo
Dlouhodobé sledování na trvalých plochách v CHKO Křivoklátsko ve vztahu k působení zvěře
Dům přírody Pálavy

Najít obce v jednotlivých CHKO a NP

obceschu_file <- here::here("data-processed", "zuj-s-chu.rds")

if(file.exists(obceschu_file)) {
  zuj_s_chu <- read_rds(obceschu_file)
} else {
  
  handlers(handler_progress(format = "[:bar] :percent ETA: :eta",
                            complete = "◼",
                            incomplete = " ",
                            current = "▸"))
  
  chu_krovak <- chu_geo %>% 
    st_transform(5514)
  
  plan(multiprocess)
  with_progress(
    {
      p <- progressor(along = zuj_geo$kod)
      zuj_v_chu <- zuj_geo %>% 
        select(kod, nazev) %>% 
        mutate(has_chu = future_map(geometry, 
                                    function(x) {
                                      p(sprintf("x=%s", x))
                                      st_intersects(x, chu_krovak)
                                    }))
    }
  )
  
  zuj_s_chu <- zuj_v_chu %>% 
    mutate(chu_num = map(has_chu, `[[`, 1)) %>%
    unnest(chu_num) %>% 
    left_join(chu_geo %>% 
                st_set_geometry(NULL) %>% 
                select(-pocet) %>% 
                mutate(chu_num = row_number()))
  write_rds(zuj_s_chu, obceschu_file)
}
zuj_s_chu %>% 
  st_simplify(preserveTopology = TRUE, dTolerance = 100) %>% 
  ggplot(aes(fill = paste(NAZEV, str_sub(KATEGCHU, 1, 2)))) +
  geom_sf(colour = NA) +
  theme(legend.position = "bottom") +
  labs(fill = "Chráněné území")

mapview::mapview(zuj_s_chu, zcol = "NAZEV") %>%
  leafem::addFeatures(chu_geo)
zuj_s_chu %>% 
  st_set_geometry(NULL) %>% 
  count(NAZEV, KATEGCHU)
ABCDEFGHIJ0123456789
NAZEV
<chr>
KATEGCHU
<chr>
n
<int>
BeskydyCHKO67
Bílé KarpatyCHKO67
BlaníkCHKO9
Blanský lesCHKO20
BrdyCHKO37
BroumovskoCHKO33
České středohoříCHKO120
České ŠvýcarskoNP10
Český krasCHKO37
Český lesCHKO28
dt_chkonp %>% 
  count(chkonp_nazev)
ABCDEFGHIJ0123456789
chkonp_nazev
<chr>
n
<int>
Beskydy44
Bílé Karpaty72
Blaník8
Blanský les12
Brdy7
Broumovsko65
České středohoří30
Český kras12
Český les13
Český ráj13
zuj_s_chu_to_join <- zuj_s_chu %>% 
  st_set_geometry(NULL) %>% 
  select(zuj_id = kod, zuj_nazev = nazev, 
         chkonp_nazev = NAZEV, chkonp_typ = KATEGCHU) %>% 
  mutate(chkonp_nazev = if_else(chkonp_typ == "NP" & 
                                  chkonp_nazev %in% c("Šumava", "České Švýcarsko", "Podyjí"),
                                paste("NP", chkonp_nazev), chkonp_nazev))

dt_with_chuobce <- dt_with_chkonp %>% 
  mutate(chkonp_nazev = recode(chkonp_nazev,
                               `Kokořínsko` = "Kokořínsko - Máchův kraj")) %>% 
  left_join(zuj_s_chu_to_join) %>% 
  mutate(chkonp_idtext = chkonp_nazev,
         chkonp_nazev = str_remove(chkonp_nazev, "^NP "))
## Joining, by = "chkonp_nazev"
dt_with_chuobce %>% 
  group_by(chkonp_nazev, chkonp_typ) %>% 
  count()
ABCDEFGHIJ0123456789
chkonp_nazev
<chr>
chkonp_typ
<chr>
n
<int>
BeskydyCHKO469
Bílé KarpatyCHKO402
BlaníkCHKO36
Blanský lesCHKO80
BrdyCHKO111
BroumovskoCHKO165
České středohoříCHKO480
České ŠvýcarskoNP40
Český krasCHKO148
Český lesCHKO112

Export

dir.create(here::here("data-processed", "dtl_resolved_placeless"))
## Warning in dir.create(here::here("data-processed", "dtl_resolved_placeless")): '/Users/petr/github/mmr-esif-clean/data-processed/dtl_resolved_placeless' already exists
dt_with_chuobce_reshaped <- dt_with_chuobce %>% 
  mutate(level = if_else(zuj_id %in% ids_short$obec, "obec", "zuj"), 
         level_orig = "chkonp") %>% 
  rename_with(~str_remove(., "zuj_")) %>% 
  rename(id_orig = chkonp_idtext, value = id) %>% 
  mutate(obec_puvod = "doplnění obce nebo ZÚJ podle chráněných území",
         rozpad_typ = "nic",
         level = factor(level, levels = geolevels, ordered = T),
         rozpad_duvod = NA_character_,
         id_orig = NA_character_,
         level_orig = "chkonp") %>% 
  left_join(prj_meta %>% select(prj_id, op_id)) %>% 
  group_by(op_id) %>% 
  mutate(chunk = floor(row_number()/5e5) + 1,
         chunk = as.integer(chunk)) %>% 
  group_by(prj_id) %>% 
  mutate(radek = row_number()) %>% 
  group_by(obec_puvod, op_id, chunk, rozpad_typ)
## Joining, by = "prj_id"
write_parquet(dt_with_chuobce_reshaped %>% 
                select(prj_id, radek, op_id, level, geo_id = value, level_orig,
                       geo_id_orig = id_orig,
                       rozpad_typ, rozpad_duvod, obec_puvod, chunk),
              here::here("data-processed", "dtl_resolved_placeless", "all.parquet"))
write_parquet(dt_with_chuobce_reshaped, 
              here::here("data-processed", "dt_noplace_filled-chudetail.parquet"))