3 Ievades ģeodati

Nozīmīgs solis sugu izplatības modelēšanā ir ģeogrāfiskajai telpai piesaistītu (ģeoreferencētu) vidi raksturojošu un ekoloģiski pamatotu mainīgo jeb ekoģeogrāfisko mainīgo (EGV) sagatavošana. Visbiežāk eksistējošie ģeodati (ģeoreferencēti vides raksturojumi) paši par sevi nespēj raksturot sugu ekoloģiskās vajadzības, gandrīz nekad to noformējums precīzi neatbilst analīzes uzstādījumiem. Tādēļ ģeodatu ir nepieciešams dažādi pārveidot, strukturēt un kombinēt.

Šajā nodaļā ir raksturoti izmantotie ģeodati un to pirmās apstrādes soļi (harmonizēšana EGV sagatavošanai) raksturota apakšnodaļā Ievades jēldati, un augstāka līmeņa šo datu apstrāde, kas vēl joprojām uzskatāma par soli pirms EGV sagatavošanas, raksturota apakšnodaļā Ievades produkti.

3.1 Ievades jēldati

Izmantotie ģeodatu avoti, to raksturojums un harmonizēšanas procedūru apraksts.

3.1.1 Valsts meža dienesta Meža valsts reģistrs

Meža nogabalus raksturojošos rādītājus un telpiskos datus apkopojošā Valsts meža dienesta Meža valsts reģistra datubāzes (ESRI failu ģeodatubāze) 2024. gada 07. jānvāra versija ir 2024. gada janvārī saņemta Latvijas Universitātē studiju un pētniecības procesu nodrošināšanai. Saņemtās datubāzes versijas struktūra sakrīt ar Meža valsts reģistra Meža inventarizācijas failu struktūru, bet lauku nosaukumos ir lietoti mazie burti.

Pēc lejupielādes nodrošinātas ģeometrijas, tās pārbaudītas un saglabātas geoparquet formātā.

Code
# libs
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(gdalUtilities)) {install.packages("gdalUtilities"); require(gdalUtilities)}

# datubāze
nog=read_sf("./IevadesDati/MVR/VMD.gdb/",layer="Nogabali_pilna_datubaze")

# ģeometriju nodrošināšana
ensure_multipolygons <- function(X) {
  tmp1 <- tempfile(fileext = ".gpkg")
  tmp2 <- tempfile(fileext = ".gpkg")
  st_write(X, tmp1)
  ogr2ogr(tmp1, tmp2, f = "GPKG", nlt = "MULTIPOLYGON")
  Y <- st_read(tmp2)
  st_sf(st_drop_geometry(X), geom = st_geometry(Y))
}
nogabali <- ensure_multipolygons(nog)

# ģeometriju pārbaudes 
nogabali2 = nogabali[!st_is_empty(nogabali),,drop=FALSE] # 108 tukšas ģeometrijas
validity=st_is_valid(nogabali2) 
table(validity) # 1733 invalid ģeometrijas
nogabali3=st_make_valid(nogabali2)

# saglabāšana
sfarrow::st_write_parquet(nogabali3, "./IevadesDati/MVR/nogabali.parquet")


3.1.2 Lauku Atbalsta Dienesta lauku informācija

Lauku Atbalsta Dienests uztur regulāri aktualizētu informāciju atvērto datu portālā. Tajā ir pieejams arī arhīvs (kopš 2015. gada), izmantojamās datu kopas satur atslēgvārdu “deklarētās platības”. Šī projekta ietvaros izmantots WFS pieslēgums datu lejupielādei (2023-11-14).

Pēc lejupielādes nodrošinātas ģeometrijas, tās pārbaudītas, dzēšot tukšās un validējot pārējās, un saglabātas geoparquet formātā.

Code
# libs
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(gdalUtilities)) {install.packages("gdalUtilities"); require(gdalUtilities)}
if(!require(httr)) {install.packages("httr"); require(httr)}
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(ows4R)) {install.packages("ows4R"); require(ows4R)}

# lejupielāde
wfs_bwk <- "https://karte.lad.gov.lv/arcgis/services/lauki/MapServer/WFSServer"
url <- parse_url(wfs_bwk)
url$query <- list(service = "wfs",
                  #version = "2.0.0", # fakultatīvi
                  request = "GetCapabilities"
)
vaicajums <- build_url(url)

bwk_client <- WFSClient$new(wfs_bwk, 
                            serviceVersion = "2.0.0")
bwk_client$getFeatureTypes() %>%
  map_chr(function(x){x$getTitle()})

dati <- read_sf(vaicajums)

# multipoligoni
ensure_multipolygons <- function(X) {
  tmp1 <- tempfile(fileext = ".gpkg")
  tmp2 <- tempfile(fileext = ".gpkg")
  st_write(X, tmp1)
  ogr2ogr(tmp1, tmp2, f = "GPKG", nlt = "MULTIPOLYGON")
  Y <- st_read(tmp2)
  st_sf(st_drop_geometry(X), geom = st_geometry(Y))
}
dati2 <- ensure_multipolygons(dati)

# pārbaudes
dati3 = dati2[!st_is_empty(dati2),,drop=FALSE] # OK
validity=st_is_valid(dati3) 
table(validity) # OK

# saglabāšana
sfarrow::st_write_parquet(dati3, "./IevadesDati/LAD/LAD_lauki.parquet")


3.1.3 LĢIA topogrāfiskā karte

Latvijas Ģeotelpiskās informācijas aģentūras topogrāfiskās kartes M:10000 vekotrodatu ģeodatubāze studiju un pētniecības procesu nodrošināšanai Latvijas Universitātē saņemta 2016. gada jūlijā pēc licences līguma noslēgšanas. Tās aktālizēta (tas ir nepārtraukts process) versija ir pieejama publiskai apskatei, bet vektordatu pieejamība ir ierobežota.

Šajā projektā izmantoti sekojoši slāņi:

  • bride_L, kurā raksturoti 3928 tilti kā linijveida objekti;

  • bridge_P, kurā raksturoti 4551 tilti kā punktveida objekti

  • hidro_A, kurā raksturoti 264439 ūdensobjektu plankumi;

  • hidro_L, kurā raksturots grāvju tīkls un mazās upes;

  • landus_A, kurā raksturots zemes segums un lietojums ar 1291781 laukumveida ģeometriju;

  • road_A, kurā raksturoti 32094 ceļi, kas atzīmēti ar laukumu;

  • road_L, kurā raksturoti dažāda platuma, tajā skaitā relatīvi šauri ceļi un takas;

  • swamp_A, kurā raksturoti augstie purvi ar 48105 laukumveida objektu;

  • flora_L, kurā raksturoti līnijveida koku un krūmu objekti,

kuri pārveidoti par geoparquet. Failu formāta maiņas ietvaros pārbaudītas ģeometrijas (tukšās, to validitāte, kas nepieciešamības gadījumā labota).

Code
# libs
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}


# flora_L 
flora_L=st_read("./IevadesDati/topo/Topo10_v3_12_07_2016.gdb/",layer="flora_L")
flora2 = flora_L[!st_is_empty(flora_L),,drop=FALSE] # OK
validity=st_is_valid(flora2) 
table(validity) # 12 invalid geometrijas
sfarrow::st_write_parquet(flora2, "./IevadesDati/topo/Topo_floraL.parquet")


# hidro A
hidro_A=st_read("./IevadesDati/topo/Topo10_v3_12_07_2016.gdb/",layer="hidro_A")
hidro2 = hidro_A[!st_is_empty(hidro_A),,drop=FALSE] # OK
validity=st_is_valid(hidro2) 
table(validity) # 12 invalid geometrijas
hidro3=st_make_valid(hidro2)
sfarrow::st_write_parquet(hidro3, "./IevadesDati/topo/Topo_hidroA.parquet")

# hidro L
hidro_L=st_read("./IevadesDati/topo/Topo10_v3_12_07_2016.gdb/",layer="hidro_L")
table(hidro_L$FNAME,useNA="always")
hidro_Lx=hidro_L %>% 
  filter(FNAME=="Ūdenstece līdz 3m") # grāvji
hidro_Lx2 = hidro_Lx[!st_is_empty(hidro_Lx),,drop=FALSE] # OK
validity=st_is_valid(hidro_Lx) 
table(validity) # OK
sfarrow::st_write_parquet(hidro_Lx, "./IevadesDati/topo/Topo_hidroL.parquet")

# road A
road_A=st_read("./IevadesDati/topo/Topo10_v3_12_07_2016.gdb/",layer="road_A")
road2 = road_A[!st_is_empty(road_A),,drop=FALSE] # OK
validity=st_is_valid(road2) 
table(validity) # 28 invalid geometrijas
road3=st_make_valid(road2)
sfarrow::st_write_parquet(road3, "./IevadesDati/topo/Topo_roadA.parquet")

# road L
road_L=st_read("./IevadesDati/topo/Topo10_v3_12_07_2016.gdb/",layer="road_L")
table(road_L$FNAME,useNA="always")
road_Lx=road_L %>% 
  filter(FNAME!="Gājēju celiņš līdz 3m") %>% # ne pavisam sīkie
  filter(FNAME!="Gājēju celiņš mērogā") %>% 
  filter(FNAME!="Taka")
roadL2 = road_Lx[!st_is_empty(road_Lx),,drop=FALSE] # OK
validity=st_is_valid(roadL2) 
table(validity) # OK
sfarrow::st_write_parquet(roadL2, "./IevadesDati/topo/Topo_roadL.parquet")

# swamp A
swamp_A=st_read("./IevadesDati/topo/Topo10_v3_12_07_2016.gdb/",layer="swamp_A")
swamp2 = swamp_A[!st_is_empty(swamp_A),,drop=FALSE] # OK
validity=st_is_valid(swamp2) 
table(validity) # 17 invalid geometrijas
swamp3=st_make_valid(swamp2)
sfarrow::st_write_parquet(swamp3, "./IevadesDati/topo/Topo_swampA.parquet")

# bridge_L
bridge_L=st_read("./IevadesDati/topo/Topo10_v3_12_07_2016.gdb/",layer="bridge_L")
bridgeL2 = bridge_L[!st_is_empty(bridge_L),,drop=FALSE] # OK
validity=st_is_valid(bridgeL2) 
table(validity) # OK
sfarrow::st_write_parquet(bridgeL2, "./IevadesDati/topo/Topo_bridgeL.parquet")

# bridge_P
bridge_P=st_read("./IevadesDati/topo/Topo10_v3_12_07_2016.gdb/",layer="bridge_P")
bridgeP2 = bridge_P[!st_is_empty(bridge_P),,drop=FALSE] # OK
validity=st_is_valid(bridgeP2) 
table(validity) # OK
sfarrow::st_write_parquet(bridgeP2, "./IevadesDati/topo/Topo_bridgeP.parquet")

# landus A
landus_A=st_read("./IevadesDati/topo/Topo10_v3_12_07_2016.gdb/",layer="landus_A")
landus2 = landus_A[!st_is_empty(landus_A),,drop=FALSE] # OK
validity=st_is_valid(landus2) 
table(validity) # 5734 invalid geometrijas
landus3=st_make_valid(landus2)
sfarrow::st_write_parquet(landus3, "./IevadesDati/topo/Topo_landusA.parquet")


3.1.4 Meliorācijas Kadastra Informācijas Sistēmas datubāze

Meliorācijas Kadastra Informācijas Sistēmas datubāze 2018. gada jūnijā pēc pieprasījuma no Latvijas Universitātes studiju un pētniecības procesu nodrošināšanai saņemta no Zemkopības ministrijas nekustamo īpašumu daļas. Tās saturs pieejams publiskai apskatei.

Sākotnēji papildus apstrāde šiem datiem nav veikta. Tie izmantoti Ievades produkti sagatavošanai - gan Reljefa produkti, gan Ainava sagatavošanai.

3.1.5 LVM atvērtie dati

AS “Latvijas valsts meži” meža infrastruktūras ģeotelpiskie dati un to apraksts. No šīs datu kopas projektā izmantoti:

  • ceļi:

    • meža ceļi;

    • attīstāmie meža ceļi;

    • apgriešanās laukumi;

    • izmainīšanās vietas;

    • nobrauktuves;

  • meliorācijas sistēmas:

    • grāvji;

    • meliorācijas sistēmas;

    • atjaunojamie meliorācijas objekti.

Sākotnēji papildus apstrāde šiem datiem nav veikta. Tie izmantoti Ievades produkti (specifiskāk, Ainava) sagatavošanai.

3.1.6 Corine Land Cover

Corine Land Cover ir publiski pieejami ģeodati, kas raksturo zemes seguma un lietojuma veidu (LULC) visā aptverot visu Eiropu ilgā laika periodā ar kopumā nemainīgu (salīdzināmu) metodiku (https://land.copernicus.eu/content/corine-land-cover-nomenclature-guidelines/docs/pdf/CLC2018_Nomenclature_illustrated_guide_20190510.pdf), sniedzot rezultātus atsevišķiem gadiem - 1990., 2000., 2006., 2012., 2018. (https://land.copernicus.eu/en/products/corine-land-cover). Lai gan datu kopa ir rupjas izšķirtspēja - kartējamā vienība ir 25 ha laukumi, kas ir vismaz 100 m plati, tā sniedz pietiekošu informāciju vispārīgam lietojumam, piemēram, novērojumu atlasei plašās ainavas klasēs (vairāk nodaļā Novērojumu atlase). Šajā projektā izmantoti 2018. gada dati.

Lejupielādētā datu kopa transformēta Latvijas koordinātu sistēmā (EPSG:3059), turpmākā darba atvieglošanai un paātrināšanai failu formāts mainīts uz geoparquet. Failu formāta maiņas ietvaros pārbaudītas ģeometrijas (tukšās, validitāte).

Code
# libs
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}

# lejupielādētie dati
clcLV=st_read("./IevadesDati/CLC/clcLV.gpkg",layer="clcLV")

# tukšās ģeometrijas
clcLV2 = clcLV[!st_is_empty(clcLV),,drop=FALSE] # OK

# ģeometriju validēšana
validity=st_is_valid(clcLV2) 
table(validity) # 3 non-valid
clcLV3=st_make_valid(clcLV2)

# koordinātu sistēma
clcLV3=st_transform(clcLV3,crs=3059)

# saglabāšana
sfarrow::st_write_parquet(clcLV3, "./IevadesDati/CLC/CLC_LV_2018.parquet")


3.1.7 Sentinel-2

Eiropas Kosmosa Aģentūras (ESA) Copernicus programmas Sentinel-2 misija ir divu (trīs kopš 2024-09-05) identisku satelītu, kas riņo tajā pašā orbītā, konstellācija. Pirmais satelīts - Sentinel-2A savu orbītu ieņēma un izgāja kalibrācijas testus 2015-06-23, otrais (Sentinel-2B) - 2017-03-07, pirmie attēli bija pieejami jau iepriekš. Katrs satelīts uzņem augstas izšķirtspējas (no 10 m (pie ekvatora) pikseļa izšķirtspējas) attēlus 13 spektrālajos kanālos ar atgriešanās laiku līdz 5 dienām (tuvāk poliem - biežāk) (https://www.esa.int/Applications/Observing_the_Earth/Copernicus/Sentinel-2). Šīs misijas dati ir brīvi pieejami, tajā skaitā Google Earth Engine platformā (Gorelick et al., 2017) dažādas liela apjoma priekšapstrādes un analīžu veikšanai. Šī projekta ietvaros izmantots harmonizētais otrā līmeņa (Level-2A; https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2_SR_HARMONIZED#description) produkts, pielietojot mākoņu masku, kura iekļauj ne tikai mākoņu, bet arī to ēnu filtrēšanu, lai katrai pēc filtrēšanas (mākoņu un sezonas - no aprīļa līdz oktobrim un no 2017. līdz 2023. gadam) pieejamajai satelītainais aprēķinātu normalizēto starpības veģetācijas indeksu (NDVI, ) un normalizēto starpības ūdens indeksu (NDWI, ) kā arī dažādas to metrikas. Datu sagatavošanai izmantojams replicēšanas skripts. Lai izmantotu šo skriptu, ir nepieciešams GEE konts un projekts un pietiekošs apjoms vietas Google Drive diskā. Izpildot komandrindas tiks piedāvāta lejuplāde sekojošiem failiem:

  • NDVI_p25 - aprīļa līdz oktobra ik pikseļa NDVI 25. procentiles vērtību katram gadam no 2017. līdz 2023. mediāna;

  • NDVI_p75 - aprīļa līdz oktobra ik pikseļa NDVI 75. procentiles vērtību katram gadam no 2017. līdz 2023. mediāna;

  • NDVI_median - aprīļa līdz oktobra ik pikseļa NDVI mediānas vērtību katram gadam no 2017. līdz 2023. mediāna;

  • NDVI_2023_median - 2023. gada aprīļa līdz oktobra ik pikseļa NDVI vērtību mediāna;

  • NDVI_IQR - aprīļa līdz oktobra ik pikseļa NDVI starpkvartiļu apgabala vērtību katram gadam no 2017. līdz 2023. mediāna;

  • NDWI_p25 - aprīļa līdz oktobra ik pikseļa NDWI 25. procentiles vērtību katram gadam no 2017. līdz 2023. mediāna;

  • NDWI_p75 - aprīļa līdz oktobra ik pikseļa NDWI 75. procentiles vērtību katram gadam no 2017. līdz 2023. mediāna;

  • NDWI_median - aprīļa līdz oktobra ik pikseļa NDWI mediānas vērtību katram gadam no 2017. līdz 2023. mediāna;

  • NDWI_2023_median - 2023. gada aprīļa līdz oktobra ik pikseļa NDWI vērtību mediāna;

  • NDWI_IQR - aprīļa līdz oktobra ik pikseļa NDWI starpkvartiļu apgabala vērtību katram gadam no 2017. līdz 2023. mediāna.

Pēc komandrindu izpildes un rezultātu sagatavošanas Google Drive diskā, ir redzams, ka katrs visu Latviju aptverošais slānis ir sadalīts vairākās lapās. Tas ir tādēļ, ka slāņi kodēti kā Float un pirms komprecijas GeoTIFF pārsniedz 4 GB izmēru. Visas šīs lapas ir nepieciešams lejuplādēt, sekojošās R komandrindas tās apvieno, nodrošinot koordinātu sistēmas un pikseļu atbilstību references rastram.

Code
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(terra)) {install.packages("terra"); require(terra)}

# reference
paraugs=rast("./Templates/TemplateRasters/LV10m_10km.tif")

# saraksts ar lejupielādētajiem failiem, pieņemot, ka tie atrodas direktorijas 
# "S2indices" apakšdirektorijā "RAW"
faili=data.frame(fails=list.files("./IevadesDati/S2indices/RAW/"))
faili$celi_sakums=paste0("./IevadesDati/S2indices/RAW/",faili$fails)

# Korekti projektētu mozaīku sagatavošana
# failu nosaukumi un ceļš saglabāšanai
faili=faili %>% 
  separate(fails,into=c("nosaukums","vidus","beigas"),sep="-",remove = FALSE) %>% 
  mutate(mosaic_name=paste0(nosaukums,".tif"),
         masaic_cels=paste0("./IevadesDati/S2indices/mozaikas/",mosaic_name))

# unikālie failu nosaukumi cikla vadībai
unikalie=levels(factor(faili$nosaukums))

# cikls uzdevuma veikšanai
for(i in seq_along(unikalie)){
  unikalais=faili %>% filter(nosaukums==unikalie[i])
  beigu_cels=unique(unikalais$masaic_cels)
  
  # ik slānis sastāv no divām lapām
  viens=rast(unikalais$celi_sakums[1])
  divi=rast(unikalais$celi_sakums[2])
  
  viens2=terra::project(viens,paraugs)
  divi2=terra::project(divi,paraugs)
  
  mozaika=terra::merge(viens2,divi2)
  maskets=mask(mozaika,paraugs,filename=beigu_cels,overwrite=TRUE)
}


3.1.8 Dynamic World

Dynamic World (DW) ir relatīvi nesens Zemes novērošanas sistēmu produkts, kurš klasificē zemes segumu un lietojumu (LULC) deviņās kategorijās (0=water, 1=trees, 2=grass, 3=flooded_vegetation, 4=crops, 5=shrub_and_scrub, 6=built, 7=bare, 8=snow_and_ice), katram ESA Copernicus Sentinel-2 attēlam ar identificēto mākoņainību \(\le35%\), pieļaujot filtrēšanu un dažādu agregāciju veidošanu (Brown et al., 2022) (nedaudz vairāk nodaļā Dynamic World izpēte).

DW ievades informācija - rastra slānis katrai sezonai katrā gadā - sagtavots Google Earth Engine platformā (Gorelick et al., 2017), izmantojot replicēšanas skriptu. Lai izmantotu šo skriptu, ir nepieciešams GEE konts un projekts un pietiekošs apjoms vietas Google Drive diskā. Izpildot komandrindas tiks piedāvāta lejuplāde failam, kas aptver laika periodu no vērtības 7. rindā līdz vērtībai 8. rindā (faila nosaukums norādāms 32. rindā, tā apraksts - 33. rindā un direktorija Google diskā - 31. rindā vai tas viss norādāms apstiprinot saglabāšanau) - šis skripts nav optimizēts visu sezonālo griezumu visiem gadiem sagatavošanai, lai reproducētu vai paplašinātu šo izpēti, tās nepieciešams manuāli izmainīt.

Pēc komandrindu izpildes un rezultātu sagatavošanas Google Drive diskā, ir redzams, ka katrs visu Latviju aptverošais slānis ir sadalīts vairākās lapās. Tas ir tādēļ, ka, lai nodrošinātu nulles patieso vērtību (klase “water”, nevis fons), slāņi kodēti kā Float, nevis veselie skaitļi. Visas šīs lapas ir nepieciešams lejuplādēt, sekojošās R komandrindas tās apvieno, nodrošinot koordinātu sistēmas un pikseļu atbilstību references rastram.

Code
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(terra)) {install.packages("terra"); require(terra)}

# reference
paraugs=rast("./Templates/TemplateRasters/LV10m_10km.tif")

# saraksts ar lejupielādētajiem failiem, pieņemot, ka tie atrodas direktorijā 
# "DWE_float"
faili=data.frame(faili=list.files("./IevadesDati/DynamicWorld/DynamicWorld_Eksperimentam/DWE_float/"))
faili$celi_sakums=paste0("./IevadesDati/DynamicWorld/DynamicWorld_Eksperimentam/DWE_float/",faili$faili)

# Korekti projektētu mozaīku sagatavošana
# failu nosaukumi un ceļš saglabāšanai
faili=faili %>% 
  separate(faili,into=c("DW","gads","periods","parejais"),sep="_",remove = FALSE) %>% 
  mutate(unikalais=paste0(DW,"_",gads,"_",periods),
         mosaic_name=paste0(unikalais,".tif"),
         masaic_cels=paste0("./IevadesDati/DynamicWorld/DynamicWorld_Eksperimentam/DWE_mosaic/",mosaic_name))

# unikālie failu nosaukumi cikla vadībai
unikalie=levels(factor(faili$unikalais))

# cikls uzdevuma veikšanai
for(i in seq_along(unikalie)){
  unikalais=faili %>% filter(unikalais==unikalie[i])
  beigu_cels=unique(unikalais$masaic_cels)
  
  # ik slānis sastāv no divām lapām
  viens=rast(unikalais$celi_sakums[1])
  divi=rast(unikalais$celi_sakums[2])
  
  viens2=project(viens,paraugs)
  divi2=project(divi,paraugs)
  
  mozaika=mosaic(viens2,divi2,fun="first")
  maskets=mask(mozaika,paraugs,filename=beigu_cels,overwrite=TRUE)
}


3.1.9 The Global Forest Watch

The Global Forest Watch (GFW) ir plaši pazīstam produkts, kurš raksturo koku vainagu segumu 2000. gadā, tā ikgadējo pieaugumu no 2001. gada līdz 2012. gadam un zudumu katrā gadā kopš 2001. gada līdz aktuālajai versijai, kas ik gadu tiek papildināta (Hansen et al., 2013). Dati ir pieejami gan projekta mājaslapā, gan GEE, kurā tie ir izstrādāti. Šajā projektā izmantota v1.11, kurā pēdējais koku izzušanas datēšanas gads ir 2023, to sagatavojot lejupielādei GEE platformā ar šo replicēšanas skriptu. Lai izmantotu šo skriptu, ir nepieciešams GEE konts un projekts un pietiekošs apjoms vietas Google Drive diskā. Izpildot komandrindas tiks piedāvāta lejuplāde failam, kuru nepieciešams saglabāt Google diskā.

Pēc komandrindu izpildes un rezultātu sagatavošanas Google Drive diskā, darba cietajā diskā ir lejupielādējams viens fails un tas pielāgojams references rastram.

Code
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(terra)) {install.packages("terra"); require(terra)}

# reference
paraugs=rast("./Templates/TemplateRasters/LV10m_10km.tif")

# TreeCoverLoss
treecoverloss=rast("./IevadesDati/koki/RAW/TreeCoverLoss.tif")

# Fona aivietošana ar iztrūkstošajām vērtībām
tcl=ifel(treecoverloss<1,NA,treecoverloss)

# projektēšana un maskēšana ar faila saglabāšanu
tcl2=terra::project(tcl,paraugs)
tcl3=mask(tcl2,paraugs,filename="./IevadesDati/koki/TreeCoverLossYear.tif",overwrite=TRUE)


3.1.10 Palsar Forests

Palsar Forests resurss ir balstīts PALSAR-2 sintētiskās aprertūras radara (SAR) atstarojumu klasifikācijā meža un nemeža zemēs ar 25 m pikseļa izšķirtspēju. Par mežu tiek klasificētas vismaz 0.5 ha plašas ar kokiem klātas teritorijas, kurās koku (vismaz 5 m augstu) seguma ir vismaz 10% (Shimada et al., 2013). Dati ir pieejami GEE. Šajā projektā izmantota 4-klašu versija (1=Dense Forest, 2=Non-dense Forest, 3=Non-Forest, 4=Water), kurā pēdējais koku seguma datēšanas gads ir 2020, to sagatavojot lejupielādei GEE platformā ar šo replicēšanas skriptu. Lai izmantotu šo skriptu, ir nepieciešams GEE konts un projekts un pietiekošs apjoms vietas Google Drive diskā. Izpildot komandrindas tiks piedāvāta lejuplāde failam, kuru nepieciešams saglabāt Google diskā.

Pēc komandrindu izpildes un rezultātu sagatavošanas Google Drive diskā, ir lejupielādējami četri faili. Tos nepieciešams projektēt atbilstībai references rastram un apvienot. Šajā resursā koki ir kodēti divās grupās: 1=Dense Forest un 2=Non-dense Forest, kuras nepieciešams apvienot un pārējo pārvērst par iztrūkstošajām vērtībām.

Lai gan šī resursa dati raksturo situāciju 2020. nevis 2023. gadā, tie ir izmantoti, jo koku vainagu seguma izzušanu raksturošanai ir pieejami The Global Forest Watch dati, bet vainagu parādīšanās nav tik strauja, lai būtu nozīmīgas izmaiņas trīs gadu laikā, un šis gads atrodas pa vidu ar novērojumiem aptvertajam laika periodam (2017.-2023. gadi).

Code
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(terra)) {install.packages("terra"); require(terra)}

# reference
paraugs=rast("./Templates/TemplateRasters/LV10m_10km.tif")

# Palsar Trees
fnf1=rast("./IevadesDati/koki/RAW/ForestNonForest-0000023296-0000023296.tif")
fnf2=rast("./IevadesDati/koki/RAW/ForestNonForest-0000023296-0000000000.tif")
fnf3=rast("./IevadesDati/koki/RAW/ForestNonForest-0000000000-0000023296.tif")
fnf4=rast("./IevadesDati/koki/RAW/ForestNonForest-0000000000-0000000000.tif")

# projektēšana
fnf1p=terra::project(fnf1,paraugs)
fnf2p=terra::project(fnf2,paraugs)
fnf3p=terra::project(fnf3,paraugs)
fnf4p=terra::project(fnf4,paraugs)

# Apvienošana
fnfA=terra::merge(fnf1p,fnf2p)
fnfB=terra::merge(fnfA,fnf3p)
fnfC=terra::merge(fnfB,fnf4p)

# Reklasificēšana
fnf_X=ifel(fnfC<=2&fnfC>=1,1,NA)

# Maskēšana un saglabāšana
fnf_XX=mask(fnf_X,paraugs,filename="./IevadesDati/koki/Palsar_Forests.tif",overwrite=TRUE)


3.1.11 ERA5 Land

ERA5-Land ir sauszemei veikta klimata (laika apstākļu) pazīmju reanalīze sauszemei 0.1° izšķirtspējā un aptver laika periodu kopš 1950. gada janvāra līdz mūsdienām (datu kopa tiek nepārtraukti papildināta) ar stundas temporālo izšķirtspēju (Sabater, n.d.). Oriģināldati lejupielādei ir pieejami ESA Copernicus Clima Data Store (https://cds.climate.copernicus.eu/datasets/reanalysis-era5-land?tab=download), tie pieejami arī Google Earth Engine platformā (Gorelick et al., 2017)dienas un mēneša līmeņu agregāti. Šie agregāti izmantoti sugu izplatības modelēšanai nepieciešamo pazīmju jēladatu sagatavošanai - izmantotās komandu rindas. Piedāvātais skripts aprēķina vairākas pazīmes un piedāvā to lejupielādi Google Drive direktorijā. Lai izmantotu šo skriptu, ir nepieciešams GEE konts un projekts un pietiekošs apjoms vietas Google Drive diskā. Skripta izpildīšana lejupielādei piedāvās sekojošus failus:

  • FebPrec, kas raksturo ik pikseļa mediānu starp ik februāra (gada aukstākais mēnesis Latvijā) kopējo nokrišņu summām ik gadā no 2015. līdz 2023.;

  • FebTempSum, kas raksturo ik pikseļa mediānu starp ik februāra (gada aukstākais mēnesis Latvijā) ikdienas vidējo gaisa temperatūru (2 m virs zemes) summām ik gadā no 2015. līdz 2023.;

  • JulPrec, kas raksturo ik pikseļa mediānu starp ik jūlija (gada siltākais mēnesis Latvijā) kopējo nokrišņu summām ik gadā no 2015. līdz 2023.;

  • PosTempDays, kas raksturo ik pikseļa mediānu starp dienu, kuru vidējā gaisa temperatūra (2 m virs zemes) ir vismaz 275°K (~0°C), skaitu ik gadā no 2015. līdz 2023.;

  • VegTempSums, kas raksturo ik pikseļa mediānu starp ik dienas, kuras vidējā gaisa temperatūra (2 m virs zemes) ir vismaz 279°K (~5°C), summu ik gadā no 2015. līdz 2023.;

  • YearPrecSum, kas raksturo ik pikseļa mediānu starp ik mēneša kopējo nokrišņu daudzuma summām ik gadā no 2015. līdz 2023..

Tā kā klimata datu kodējums ir Float, tie tiek sagatavoti kā no četrām lapām (katram slānim) sastāvoši GeoTIFF faili, kurua nepieciešams lejupielādēt darba cietajā diskā. Sekojošās komandu rindas nodrošina šo lapu apvienošanu un projektēšu atbilstībai references rastram.

Code
# libs
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(exactextractr)){install.packages("exactextractr");require(exactextractr)}

# reference
template=rast("./Templates/TemplateRasters/LV10m_10km.tif")

# DW export no GEE 
faili=data.frame(fails=list.files("./IevadesDati/klimats/RAW/"))
faili$celi_sakums=paste0("./IevadesDati/klimats/RAW/",faili$fails)

# Sagatavošana
faili=faili %>% 
  separate(fails,into=c("nosaukums","vidus","beigas"),sep="-",remove = FALSE) %>% 
  mutate(mosaic_name=paste0(nosaukums,".tif"),
         masaic_cels=paste0("./IevadesDati/klimats/mozaikas/",mosaic_name))

unikalie=levels(factor(faili$nosaukums))
for(i in seq_along(unikalie)){
  unikalais=faili %>% filter(nosaukums==unikalie[i])
  beigu_cels=unique(unikalais$masaic_cels)
  # katrs slānis sastāv no četrām lapām
  viens=rast(unikalais$celi_sakums[1])
  divi=rast(unikalais$celi_sakums[2])
  tris=rast(unikalais$celi_sakums[3])
  cetri=rast(unikalais$celi_sakums[4])
  
  viens2=terra::project(viens,paraugs)
  divi2=terra::project(divi,paraugs)
  tris2=terra::project(tris,paraugs)
  cetri2=terra::project(cetri,paraugs)
  
  mozaika=terra::merge(viens2,divi2,tris2,cetri2)
  maskets=mask(mozaika,paraugs,filename=beigu_cels,overwrite=TRUE)
}


3.1.12 Augsnes auglīgums

Latvijas Universitātē GeoTIFF fails (EPSG:3857, 100 m) ar organiskā oglekļa līmeni augsnes virsējā slāni saņemts 2024. gada februārī no Eiropas vienotā pētījumu centra (European Joint Research Center). Šis slānis tālāk projektēts atbilstībai references rastram un izmantots EGV sagatavošanā.

Code
if(!require(terra)) {install.packages("terra"); require(terra)}

# reference
template=rast("./Templates/TemplateRasters/LV10m_10km.tif")

# slanis
oc=rast("./IevadesDati/Augsnes/noIvo/LV_OC.tif")

# projektēšana
oc2=project(oc,template_100m,use_gdal=TRUE,method="bilinear")
writeRaster(oc2,"./IevadesDati/Augsnes/noIvo/OrganicCarbon.tif")


3.1.13 Digitālie reljefa modeļi

Līdz ar Latvijas teritorijas vienlaidus aerolāzerskenēšanas datu publiskošanu (https://www.lgia.gov.lv/lv/digitalie-augstuma-modeli-0) ir izstrādāti dažādi augstas izšķirtspējas (1 m un augstāka) digitālie virsmas modeļi (DSM) un digitālie reljefa modeļi (DEM). Tā kā ievades dati visos gadījumos ir vieni un tie paši, gandrīz visā valsts teritorijā šo (atbilstošo) modeļu vērtības ir vienādas. Tomēr, ne visai valsts teritorijai ir pieejami aerolāzerskenēšanas dati (1), starp modeļiem ir novērojamas atšķirības aizpildījumā (vērtību pieejamībā) ārpus iekšzemes ūdeņiem (2) un pašu ūdensobjektu aizpildījums (3), tomēr, attiecībā uz ar datiem nosegtajām vietām uz sauszemes, vērtības ir gandrīz identiskas (Pīrsona korelācijas koeficienti starp LU ĢZZF, LVMI Silava un LĢIA izstrādātajiem DEM ir lielāki par 0.999999).

Kā pamata DEM izmantots LU projektā “Ilgtspējīgas augsnes resursu pārvaldības uzlabošana lauksaimniecībā” sagatavotais vidējais aritmētiskais starp LU ĢZZF un LVMI Silava izstrādātajiem DEM. Šī DEM izšķirtspēja ir 1 m, kas nav nepieciešama sugu izplatības modelēšanas ievades datiem, tādēļ slānis projektēts atbilstībai references 10 m rastram.

Salīdzinot projektēto DEM ar referenci, ir skaidri izdalāmas vietas, kurās nav datu. Tas risināts, izmantojot Māra Nartiša (LU ĢZZF) 2018. gadā izstrādāto visu Latvijas teritoriju bez pārrāvumiem aptverošais DEM ar 10 m izšķirtspēju. Lai novērstu asu malu veidošanās aizpildījuma vietās (izlīdzinātu pārejas), veidots vidējais aritmētiskais slānis, kurš aptver visu Latvijas teritoriju un sakrīt ar references rastru.

No šī rastra izveidots arī nogāžu slīpuma slānis, kurš projektēts atbilstoši referencei. Slīpums izteikts grādos un rēķināts ar 8-kaimiņu pieeju. Tāpat arī aspekts jev nogāzes virziens.

Code
# libs
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(exactextractr)){install.packages("exactextractr");require(exactextractr)}

# reference
template=rast("./Templates/TemplateRasters/LV10m_10km.tif")

# LiDAR DEM uz 10 m 

lapas_1m=data.frame(faili=list.files("./IevadesDati/reljefs/meanDEM_1mOLD/",pattern="*.tif$"))
lapas_1m$numurs=substr(lapas_1m$faili,10,13)
lapas_1m$cels1=paste0("./IevadesDati/reljefs/meanDEM_1mOLD/",lapas_1m$faili)
lapas_1m$cels2=paste0("./IevadesDati/reljefs/meanDEM_10mOLD/",lapas_1m$faili)

kvadrati=st_read(dsn="GIS_Latvija10.2.gdb",layer="tks93_50000")
kvadrati$name=as.character(kvadrati$num50tk)

moz2=rast("./IevadesDati/reljefs/Nartiss_visa_Latvija/dem10_20_kopa.tif")

for(i in 1:length(kvadrati$name)){
  kvadrats=kvadrati[i,]
  nosaukums=kvadrats$name
  telpa=terra::ext(kvadrats)
  
  paraugs=crop(template,telpa)
  nart=crop(moz2,telpa)
  nart2=project(nart,paraugs,mask=TRUE)
  
  dem1m=lapas_1m[lapas_1m$numurs==kvadrats$name,]
  if(nrow(dem1m)>0){
    sakumcels=dem1m$cels1
    dem=rast(sakumcels)
    reproj=project(dem,paraugs,mask=TRUE,method="bilinear",use_gdal=TRUE)
    videjais <- ifel(is.na(nart2),nart2,ifel(is.na(reproj),nart2,
                                             app(c(nart2,reproj), mean)))
    writeRaster(videjais,overwrite=TRUE,
                filename=paste0("./IevadesDati/reljefs/meanDEM_10m/","vidDEM_",
                                nosaukums,".tif"))
  }
  else{
    writeRaster(nart2,overwrite=TRUE,
                filename=paste0("./IevadesDati/reljefs/meanDEM_10m/","vidDEM_",
                                nosaukums,".tif"))
  }
}

# vrt un mozaika
lapas_10=data.frame(faili=list.files("./IevadesDati/reljefs/meanDEM_10m/",pattern="*.tif$"))
lapas_10$celi1=paste0("./IevadesDati/reljefs/meanDEM_10m/",lapas_10$faili)
mozaikai=vrt(lapas_10$celi1,overwrite=TRUE,
             filename="./IevadesDati/reljefs/vrtDEM_10m.tif")
mozaika=rast("./IevadesDati/reljefs/vrtDEM_10m.tif")
writeRaster(mozaika,"./IevadesDati/reljefs/mozDEM_10m.tif")


## slope
reljefs=rast("./IevadesDati/reljefs/mozDEM_10m.tif")
slipumi=terrain(reljefs, v="slope", neighbors=8, unit="degrees", 
                filename="./Rastri_10m/Slope_10m.tif", overwrite=TRUE)  


## aspect 
reljefs=rast("./IevadesDati/reljefs/mozDEM_10m.tif")
virzieni=terrain(reljefs, v="aspect", neighbors=8, unit="degrees", 
                 filename="./Rastri_10m/Aspect_10m.tif", overwrite=TRUE)


3.1.14 Atkritumu poligoni, glabātavas un šķirošanas laukumi

Daļas putnu sugu sastopamības ir netieši saistīta ar cilvēku radīto atkritumu koncentrāciju vietām. Sevišķi tas attiecas uz plēsīgajiem putniem, kuru potenciālie barības objekti (upuri) tās izmanto par savām barošanās vietām un tajās koncentrējas lielā skaitā visa gada garumā. Tas var būt sevišķi svarīgi ziemojošajām sugām laikā, kad tipisko barības objektu pieejamība ir apgrūtināta, piemēram, sērsnas dēļ.

Informācija par atkritumu poligoniem apkopota no VARAM un Latvijas Vides, ģeoloģijas un meteoroloģijas centra “Pārskats par atkritumu poligoniem Latvijā 2023. gadā” uzskaitītajiem poligoniem, to adresēm. Ekoģeogrāfisko mainīgo sagatavošanai nepieciešamās koordinātes meklētas kombinējot https://www.google.com/maps un https://balticmaps.eu/ resursus. Iepriekš minētajos resursos minētajiem, pievienots objekts adresē “Dardedzes C, Mārupes pag., Mārupes nov., Latvija, LV-2166”.

Papildus tam, izmantota Valsts vides dienesta informācija par dalīto atkritumu un depozīta iepakojuma nodošanas vietām, to eksportējot Excel failā.

Abas datu kopas apvienotas vienā failā un pievienotas šim materiālam.

3.1.15 Latvijas Ekskluzīvās Ekonomiskās Zonas ūdeņi

Latvijas Ekskluzīvās Ekonomiskās Zonas ūdeņu teritorija iegūta no HELCOM karšu un datu servisa. Pēc lejupielādes šis līniju fails analogi savienots ar tajā pašā resursā iegūtu krasta līnijas failu.

3.1.16 Dabas aizsardzības pārvaldes atvērtie dati

Informācija no Dabas aizsardzības pārvaldes atvērto datu portāla (lejupielāde 2025-02-06; atjaunošana datēta ar 2024-12-27):

3.2 Ievades produkti

Atsevišķos gadījumos ievades datiem veikta relatīvi apjomīga apstrāde (sagatavojot ievades produktus), kas nepieciešama turpmākajam darbam - ekoģeogrāfisko mainīgu sagatavošanai un novērojumu filtrēšanai. Šie produkti un to izstrādes gaita raksturota atbilstošajās apakšnodaļās.

Ievades produkti veidoti kā rastri atbilstoši standartizācijas failiem. Visvairāk rastra (ievades līmeņa) produktu radīts 10 m izšķirstpējā, bet daļa arī saistīta ar citām izšķirtspējām vai jau agregācijām vektordatos. Visi references rastri ir savā starpā saistīti pēc pikseļu izvietojuma.

Ievades jēldatu rasterizēšana veikta, lai risinātu topoloģiskos, topogrāfiskos un savstarpējā novietojuma izaicinājumus, kas raksturīgi atšķirīgos un dažādos mērogos izstrādātiem un uzturētiem vektordatiem. Rasterizēšana ļauj ne tikai telpiski harmonizēt šos datus, tā arī atvieglo to apstrādi, gan attiecībā uz ainavas objektu sasvstarpējo novietojumu, gan apstrādei nepieciešamajiem resursiem (instrukciju sarežģītība, to procesēšanas kopējais laiks un procesor-stundu izmaksas). Sekojošajās apakšnodaļās raksturoti izaicinājumi, to risināšanai pieņemtie lēmumi un ar komandu rindām ieviestie risinājumi.

3.2.1 Reljefa produkti

Lai izstrādātu daļu ar reljefu saistīto EGV, piemēram, topogrāfisko mitruma indeksu (TWI) un beznoteces depresijas, ir nepieciešams risināt ūdens plūsmu vidē. Tā ir vairāku soļu procedūra, kas ir loģiska un uzticama kalnu apvidos un vidē ar maz ietekmētu hidroloģiju. Tātad, Latvijas apstākļos tas ir izaicinoši. Šos izaicinājumus var risināt dažādi, piemēram, ja būtu pieejama uzticama (precīza) informācija par upju un grāvju precīzām atrašanās vietām, to varētu iestrādāt reljefā. Diemžēl, pietiekoši precīzas informācijas nav. Tādēļ izaicinājumu risināšanai izmantota informācija par transporta būvēm no Meliorācijas Kadastra Informācijas Sistēmas datubāze un tiltiem no LĢIA topogrāfiskā karte - 30 m buferī ap šīm vietām iestrādāta minimālā augstuma virs jūras līmeņa informācija tālāk izmantojamajā DEM.

Code
# libs
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(exactextractr)){install.packages("exactextractr");require(exactextractr)}

# reference
template=rast("./Templates/TemplateRasters/LV10m_10km.tif")

# reljefs
reljefs=rast("./IevadesDati/reljefs/mozDEM_10m.tif")

# caurtekas
caurtekas=st_read(dsn="./IevadesDati/MKIS/MKIS_20180612.gdb/",layer="TransportStructures")
caurtekas_buffer=st_buffer(caurtekas,dist=30)

# tilti 
tiltiL=st_read(dsn="./IevadesDati/topo/Topo10_v3_12_07_2016.gdb/",layer="bridge_L")
tiltiL_buffer=st_buffer(tiltiL,dist=30)
tiltiP=st_read(dsn="./IevadesDati/topo/Topo10_v3_12_07_2016.gdb/",layer="bridge_P")
tiltiP_buffer=st_buffer(tiltiP,dist=30)

# visi buferi 
caurtekas_buffer=caurtekas_buffer[,"Shape"]
tiltiL_buffer=tiltiL_buffer[,"Shape"]
tiltiP_buffer=tiltiP_buffer[,"Shape"]
visi_buferi=rbind(caurtekas_buffer,tiltiL_buffer,tiltiP_buffer)

# caurumosana
visi_buferi$vertiba=exactextractr::exact_extract(reljefs,visi_buferi,"min")

templis=raster::raster(template)
caurumi=fasterize::fasterize(visi_buferi,templis,field="vertiba")
caurumi2=rast(caurumi)
caurumains=app(c(reljefs,caurumi2),fun="min",na.rm=TRUE,
               overwrite=TRUE,
               filename="./IevadesDati/reljefs/caurtDEM_10m.tif")


Ar šo DEM tālāk veikta ģeoprocesēšana reljefa depresiju atrašanai un topogrāfiskā mitruma indeksa (TWI) noteikšanai. Sākumā aprēķinātas reljefa depresijas, pieņemot, kas visas noteces, par kurām būtu jāzina, ir zināmas un ņemtas vērā (koriģētas DEM vērtības - iepriekšējais koda apgabals). Tad, sagatavots topogrāfiskā mitruma indekss un atkārtota beznoteces depresiju meklēšana:

  1. topogrāfiskā mitruma indeksa aprēķināšanai, pārskatītas reljefa beznoteces depresijas, pieļaujot līdz desmit šūnu pārrāvumiem mazākās pretestības vietās, pārējās aizpildītas;

  2. sagatavoti precizēti beznoteces depresiju un to dziļuma slāņi pēc plūsmas pārrāvumu iestrādāšanas;

  3. papildus drošībai, pirmā soļa rezultātam atkārtota reljefa depresiju meklēšana un aizpildīšana (Wang and Liu, 2006);

  4. trešā soļa rezultāts izmantots specifiskā sateces baseina noteikšanai, izmantojot d-infinity plūsmas dalīšanos;

  5. kombinējot specifiskā sateces baseina slāni ar nogāžu slīpumu slāni, aprēķināts topogrāfiskā mitruma indekss. To grafiski izvērtējot ir konstatētas atsevišķas ekstrēmas vērtības, kuras ierobežotas līdz 20.

Code
# libs
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(exactextractr)){install.packages("exactextractr");require(exactextractr)}
if(!require(whitebox)){install.packages("whitebox");require(whitebox)}

# reference
template=rast("./Templates/TemplateRasters/LV10m_10km.tif")

# DEM
caurumainis=rast("./IevadesDati/reljefs/caurtDEM_10m.tif")

# Sinks
wbt_sink(input = "./IevadesDati/reljefs/caurtDEM_10m.tif",
         output = "./IevadesDati/reljefs/Sink_10m.tif",
         verbose_mode = FALSE,zero_background = TRUE)
sinks=rast("./IevadesDati/reljefs/Sink_10m.tif")
sinks2 <- ifel(sinks >= 1, 1, sinks,
               filename="./IevadesDati/reljefs/SinkYN_10m.tif")

# Depth-in-Sink
wbt_depth_in_sink(dem="./IevadesDati/reljefs/caurtDEM_10m.tif",
                  output="./IevadesDati/reljefs/DiS_10m.tif",
                  zero_background = TRUE)
dis=rast("./IevadesDati/reljefs/DiS_10m.tif")



# TWI
## breaching
wbt_breach_depressions_least_cost(
  dem = "./IevadesDati/reljefs/caurtDEM_10m.tif",
  output = "./IevadesDati/reljefs/caurtDEM_breachedF.tif",
  dist = 10,
  fill = TRUE)

## breached sinks un depth in sinks
wbt_breach_depressions_least_cost(
  dem = "./IevadesDati/reljefs/caurtDEM_10m.tif",
  output = "./IevadesDati/reljefs/caurtDEM_breachedNF.tif",
  dist = 10,
  fill = FALSE)
wbt_depth_in_sink(dem="./IevadesDati/reljefs/caurtDEM_breachedNF.tif",
                  output="./IevadesDati/reljefs/DiS_breached_10m.tif",
                  zero_background = TRUE)
wbt_sink(input = "./IevadesDati/reljefs/caurtDEM_breachedNF.tif",
         output = "./IevadesDati/reljefs/Sink_breached_10m.tif",
         verbose_mode = FALSE,zero_background = TRUE)
sinks=rast("./IevadesDati/reljefs/Sink_breached_10m.tif")
plot(sinks)
sinks2 <- ifel(sinks >= 1, 1, sinks,
               filename="./IevadesDati/reljefs/SinkYN_breached_10m.tif")

### filling
wbt_fill_depressions_wang_and_liu(
  dem = "./IevadesDati/reljefs/caurtDEM_breachedF.tif",
  output = "./IevadesDati/reljefs/caurtDEM_BreachFill.tif"
)

### (d inf) flow direction
wbt_d_inf_flow_accumulation(input = "./IevadesDati/reljefs/caurtDEM_BreachFill.tif",
                            output = "./IevadesDati/reljefs/caurtDEM_DInfAccu_SCA.tif",
                            out_type = "Specific Contributing Area")

### twi
wbt_wetness_index(sca = "./IevadesDati/reljefs/caurtDEM_DInfAccu_SCA.tif",
                  slope = "./IevadesDati/reljefs/Slope_10m.tif",
                  output = "./IevadesDati/reljefs/TWI_caurtDEM.tif")
twi=rast("./IevadesDati/reljefs/TWI_caurtDEM.tif")
hist(twi) # vietumis ir sevišķi ekscesīvas vērtības
twi2=ifel(twi>20,20,twi)
twi2x=ifel(is.na(twi2)&!is.na(template),20,twi2)
writeRaster(twi2x,filename="./IevadesDati/reljefs/TWI_lim20_caurtDEM.tif")


Tā kā sākotnējos ievades DEM ir bijusi veikta ūdeņu aizpildīšana ar interpolācijas pieejām, ūdensobjektos ir redzams izteikts reljefs, no kura ir nepieciešams atbrīvoties. Tas darīts ar vidējās vērtības ievietošanu šajos daudzstūros.

Code
# libs
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(exactextractr)){install.packages("exactextractr");require(exactextractr)}
if(!require(whitebox)){install.packages("whitebox");require(whitebox)}

# reference
template=rast("./Templates/TemplateRasters/LV10m_10km.tif")

# ūdeņu sakārtošana 
udeni=st_read("./IevadesDati/topo/Topo10_v3_12_07_2016.gdb/", layer="hidro_A")

slope=rast("./Rastri_10m/Slope_10m.tif")
aspect=rast("./Rastri_10m/Aspect_10m.tif")
twi=rast("./IevadesDati/reljefs/TWI_lim20_caurtDEM.tif")
dis=rast("./IevadesDati/reljefs/DiS_breached_10m.tif")



templis=raster::raster(template)
udeni$slopes=exactextractr::exact_extract(slope,udeni,"mean")
caurumi_slope=fasterize::fasterize(udeni,templis,field="slopes")
udeni$aspect=exactextractr::exact_extract(aspect,udeni,"mean")
caurumi_aspect=fasterize::fasterize(udeni,templis,field="aspect")
udeni$twis=exactextractr::exact_extract(twi,udeni,"mean")
caurumi_TWI=fasterize::fasterize(udeni,templis,field="twis")
udeni$disi=exactextractr::exact_extract(dis,udeni,"mean")
caurumi_DiS=fasterize::fasterize(udeni,templis,field="disi")

caurumi_slope2=rast(caurumi_slope)
caurumains_slope=app(c(caurumi_slope2,slope),fun="first",na.rm=TRUE,
                     overwrite=TRUE,
                     filename="./IevadesDati/reljefs/Slope_udeni_10m.tif")
caurumains_slope=terra::rast("./IevadesDati/reljefs/Slope_udeni_10m.tif")
caurumains_slope2=terra::mask(caurumains_slope,template,
                              overwrite=TRUE,
                              filename="./Rastri_10m/Slope_udeni2_10m.tif")
caurumi_aspect2=rast(caurumi_aspect)
caurumi_aspect=app(c(caurumi_aspect2,aspect),fun="first",na.rm=TRUE,
                     overwrite=TRUE,
                     filename="./IevadesDati/reljefs/Aspect_udeni_10m.tif")
caurumains_aspect=terra::rast("./IevadesDati/reljefs/Aspect_udeni_10m.tif")
caurumains_aspect2=terra::mask(caurumains_aspect,template,
                              overwrite=TRUE,
                              filename="./Rastri_10m/Aspect_udeni2_10m.tif")
caurumi_DiS2=rast(caurumi_DiS)
caurumains_DiS=app(c(caurumi_DiS2,dis),fun="first",na.rm=TRUE,
                     overwrite=TRUE,
                     filename="./IevadesDati/reljefs/DiS_udeni_10m.tif")
caurumains_DiS=terra::rast("./IevadesDati/reljefs/DiS_udeni_10m.tif")
caurumains_DiS2=terra::mask(caurumains_DiS,template,
                             overwrite=TRUE,
                             filename="./Rastri_10m/DiS_udeni2_10m.tif")
caurumi_TWI2=rast(caurumi_TWI)
caurumains_TWI=app(c(caurumi_TWI2,twi),fun="first",na.rm=TRUE,
                     overwrite=TRUE,
                     filename="./IevadesDati/reljefs/TWI_udeni_10m.tif")
caurumains_TWI=terra::rast("./IevadesDati/reljefs/TWI_udeni_10m.tif")
caurumains_TWI2=terra::mask(caurumains_TWI,template,
                           overwrite=TRUE,
                           filename="./Rastri_10m/TWI_udeni2_10m.tif")


3.2.2 Ainava

Šajā vingrinājumā “ainava” ir dažādu zemes seguma un lietojuma veidu klašu pārstāvniecība, kurā svarīga ir šo klašu zīmēšanas secība, jo nereti dažādu avotu telpiskajiem datiem ir savstarpēja robežu neatbilstība, kas liek risināt gan to savstarpējo pārklāšanos (1), gan aizpildīt robus vietām, par kurām nav datubāzu informāicja (2), un izvēle par objektu uzsvēršanu ar kādu apstrādi, piemēram, buferēšanu, jo daļa vides raksturošanai (jo sevišķi, malas efektu) nozīmīgu elementu var būt ar tik mazu laukumu vai tādu novietojumu, ka rasterizāicjas procesā tie pazūd (3). Pamata ainavas slānim nozīme ir arī kalpot kā maskai turpmāko vides aprakstu sagatavošanā. Šeit raksturota pamata (vienkāršas) ainavas izstrāde un sekojošajās apakšnodaļās tās bagātināšana ar klasēm specifiskākiem vides ekoģeogrāfiskajiem mainīgajiem. Vienkāršā ainava saglabāta failā Ainava_vienk_mask.tif, kurā esošās klases un to izveidošanas procedūra raksturota sekojošajā uzskaitījumā:

  • klase 100 - ceļi: dažādu avotu ceļi, aizpildīta secībā - dominē pār klasēm ar lielāku vērtību, lai nepazustu relatīvi neliela izmēra objekti un nodrošinātu informāciju par malām. Šīs klases izveidošanai apvienoti:

    topogrāfiskās kartes slāņi road_A un road_L (izņemot mazāko platuma grupu, kura visbiežāk neveido vienlaidus pārrāvumu vainagu klājā, skatīt atlasi), pirms rasterizēšanas tos buferējot par 10 m;

    LVM atvērto datu slāņi LVM_MEZA_AUTOCELI, LVM_ATTISTAMIE_AUTOCELI, LVM_APGRIESANAS_LAUKUMI, LVM_IZMAINISANAS_VIETAS un LVM_NOBRAUKTUVES, tās buferējot par 10 m.

    – nav izmantota Meža valsts reģistra informācija par dabiskajām brauktuvēm, jo tās visbiežāk neveido vienlaidus pārrāvumu vainagu klājā. Šī reģistra informācija par ceļiem ir arī pārējos resursos, tā nav dublēta.

Zemāk esošās komandu rindas izveido slāni ar ainavas klasi 100, kuru failā 100_celi.tif saglabā turpmākam darbam.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(gdalUtilities)){install.packages("gdalUtilities");require(gdalUtilities)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)


#poly
celi_topo=st_read_parquet("./IevadesDati/topo/Topo_road_A.parquet")
celi_topo=celi_topo %>% 
  mutate(yes=100) %>% 
  dplyr::select(yes)
ctb=st_buffer(celi_topo,dist=10)
r_celi_topo=fasterize(ctb,template_r,field="yes")

# pts
nobrauktuves=st_read("./IevadesDati/LVM_AtvertieDati/lejupielades/LVM_NOBRAUKTUVES/LVM_NOBRAUKTUVES_Shape.shp")
nobrauktuves=nobrauktuves %>% 
  mutate(yes=100) %>% 
  dplyr::select(yes)
izmainisanas=st_read("./IevadesDati/LVM_AtvertieDati/lejupielades/LVM_IZMAINISANAS_VIETAS/LVM_IZMAINISANAS_VIETAS_Shape.shp")
izmainisanas=izmainisanas %>% 
  mutate(yes=100) %>% 
  dplyr::select(yes)
apgriesanas=st_read("./IevadesDati/LVM_AtvertieDati/lejupielades/LVM_APGRIESANAS_LAUKUMI/LVM_APGRIESANAS_LAUKUMI_Shape.shp")
apgriesanas=apgriesanas %>% 
  mutate(yes=100) %>% 
  dplyr::select(yes)
cp=rbind(nobrauktuves,izmainisanas,apgriesanas)
cpb=st_buffer(cp,dist=10)
r_celi_pts=fasterize(cpb,template_r,field="yes")


# lines
meza_autoceli=st_read("./IevadesDati/LVM_AtvertieDati/lejupielades/LVM_MEZA_AUTOCELI/LVM_MEZA_AUTOCELI_Shape.shp")
meza_autoceli=meza_autoceli %>% 
  mutate(yes=100) %>% 
  dplyr::select(yes)
attistamie=st_read("./IevadesDati/LVM_AtvertieDati/lejupielades/LVM_ATTISTAMIE_AUTOCELI/LVM_ATTISTAMIE_AUTOCELI_Shape.shp")
attistamie=attistamie %>% 
  mutate(yes=100) %>% 
  dplyr::select(yes)
topo_lines=st_read_parquet("./IevadesDati/topo/Topo_roadL.parquet")
topo_lines=topo_lines %>% 
  mutate(yes=100) %>% 
  dplyr::select(yes)
cl=bind_rows(meza_autoceli,attistamie,topo_lines)
cl=cl %>% 
  dplyr::select(yes)
clb=st_buffer(cl,dist=10)
r_celi_lines=fasterize(clb,template_r,field="yes")

# liekā aizvākšana
rm(apgriesanas)
rm(attistamie)
rm(celi_topo)
rm(topo_lines)
rm(ctb)
rm(cl)
rm(clb)
rm(cp)
rm(cpb)
rm(izmainisanas)
rm(meza_autoceli)
rm(nobrauktuves)

# ģeometriju rasterizēšana
t_celi_topo=rast(r_celi_topo)
writeRaster(t_celi_topo,"./100a.tif")
t_celi_pts=rast(r_celi_pts)
writeRaster(t_celi_pts,"./100b.tif")
t_celi_lines=rast(r_celi_lines)
writeRaster(t_celi_lines,"./100c.tif")

# liekā aizvākšana
rm(r_celi_lines)
rm(r_celi_pts)
rm(r_celi_topo)
rm(t_celi_lines)
rm(t_celi_pts)
rm(t_celi_topo)

# apvienošana
a100=rast("./IevadesDati/ainava/100a.tif")
b100=rast("./IevadesDati/ainava/100b.tif")
c100=rast("./IevadesDati/ainava/100c.tif")

rastri=sprc(a100,b100,c100)
rastrs_celi=terra::merge(rastri,
                         filename="./IevadesDati/ainava/100_celi.tif",
                         overwrite=TRUE)
# liekā aizvākšana
rm(a100)
rm(b100)
rm(c100)
rm(rastri)
rm(rastrs_celi)


  • klase 200 - ūdeņi: dažādu avotu ūdensobjekti, aizpildīta secībā - dominē pār klasēm ar lielāku vērtību, lai nepazustu relatīvi neliela izmēra objekti un nodrošinātu informāciju par malām. Šīs klases izveidošanai apvienoti:

    topogrāfiskās kartes slāņi hidro_A un hidro_L (buferēts par 5 m);

    MKIS slānis Ditches, to buferējot par 3 m;

    LVM atvērto datu slāņi LVM_GRAVJI, tās buferējot par 5 m.

    – nav izmantota Meža valsts reģistra informācija par grāvjiem, jo tai ir arī pārējos resursos, vai tik nelielai, ka nerada vienlaidus pārrāvumu koku vainagu klājā.

Zemāk esošās komandu rindas izveido slāni ar ainavas klasi 200, kuru failā 200_udens_premask.tif saglabā turpmākam darbam.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(gdalUtilities)){install.packages("gdalUtilities");require(gdalUtilities)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)


# topo
topo_udens_poly=st_read_parquet("./IevadesDati/topo/Topo_hidroA.parquet")
topo_udens_poly=topo_udens_poly %>% 
  mutate(yes=200) %>% 
  dplyr::select(yes) %>% 
  st_transform(crs=3059)
topo_udens_lines=st_read_parquet("./IevadesDati/topo/Topo_hidroL.parquet")
topo_udens_lines=topo_udens_lines %>% 
  mutate(yes=200) %>% 
  st_buffer(dist=5) %>% 
  dplyr::select(yes) %>% 
  st_transform(crs=3059)
topo_udens=rbind(topo_udens_poly,topo_udens_lines)
r_topo_udens=fasterize(topo_udens,template_r,field="yes")
raster::writeRaster(r_topo_udens,
                    "./200_topo.tif",
                    progress="text")
# liekā aizvākšana
rm(topo_udens_lines)
rm(topo_udens_poly)
rm(topo_udens)
rm(r_topo_udens)

# mkis
mkis_gravji=st_read("./IevadesDati/MKIS/MKIS_20180612.gdb/",layer="Ditches")

ensure_MULTILINESTRING <- function(X) {
  tmp1 <- tempfile(fileext = ".gpkg")
  tmp2 <- tempfile(fileext = ".gpkg")
  st_write(X, tmp1)
  ogr2ogr(tmp1, tmp2, f = "GPKG", nlt = "MULTILINESTRING")
  Y <- st_read(tmp2)
  st_sf(st_drop_geometry(X), geom = st_geometry(Y))
}
mkis_gravji2 <- ensure_MULTILINESTRING(mkis_gravji)

mkis_gravji3 = mkis_gravji2[!st_is_empty(mkis_gravji2),,drop=FALSE] # 2 geom
validity=st_is_valid(mkis_gravji3) 
table(validity) # OK

mkis_gravji=mkis_gravji3 %>% 
  mutate(yes=200) %>% 
  st_buffer(dist=3) %>% 
  dplyr::select(yes)
r_mkis_udens=fasterize(mkis_gravji,template_r,field="yes")
raster::writeRaster(r_mkis_udens,
                    "./IevadesDati/ainava/200_mkis.tif",
                    progress="text")
# liekā aizvākšana
rm(mkis_gravji)
rm(mkis_gravji2)
rm(mkis_gravji3)
rm(r_mkis_udens)
rm(validity)

# lvm
lvm_gravji=st_read("./IevadesDati/LVM_AtvertieDati/lejupielades/LVM_GRAVJI/LVM_GRAVJI_Shape.shp")
lvm_gravji=lvm_gravji %>% 
  mutate(yes=200) %>% 
  st_buffer(dist=5) %>% 
  dplyr::select(yes)
r_lvm_gravji=fasterize(lvm_gravji,template_r,field="yes")
raster::writeRaster(r_lvm_gravji,
                    "./IevadesDati/ainava/200_lvm.tif",
                    progress="text",
                    overwrite=TRUE)
# liekā aizvākšana
rm(lvm_gravji)
rm(r_lvm_gravji)


# apvienojums
a200=rast("./IevadesDati/ainava/200_topo.tif")
b200=rast("./IevadesDati/ainava/200_mkis.tif")
c200=rast("./IevadesDati/ainava/200_lvm.tif")

rastri_udens=sprc(a200,b200,c200)
rastrs_udens=terra::merge(rastri_udens,
                         filename="./IevadesDati/ainava/200_udens_premask.tif",
                         overwrite=TRUE)
# liekā aizvākšana
rm(a200)
rm(b200)
rm(c200)
rm(rastri_udens)
rm(rastrs_udens)


  • klase 300 - lauki: lauksaimniecības zemes LAD lauku blokos aizpildīta secībā - dominē pār klasēm ar lielāku vērtību, tomēr pēc pamata klašu izveidošanas, robu aizpildīšanā papildināta ar informāciju no Dynamic World. Šīs klases izveidošanai apvienoti:

    LAD lauku informācijas slānis, kurš, sekojot pieņemtajam lēmumam par grupējumu (nedaudz plašāk šeit, klases apskatāmas šeit), dalīts trīs plašās grupās (pārklāšanās secībā):

    aramzemes ar klases kodu 310;

    papuves ar klases kodu 320;

    zālāji ar klases kodu 330;

    – pamata ainavā augļudārzi un ilggadīgie krūmveida stādījumi ievietoti citās ainavas klasēs.

Zemāk esošās komandu rindas izveido slāni ar ainavas klasi 300 ar tās apakšklasēm, kuru failā 300_lauki_premask.tif saglabā turpmākam darbam.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(gdalUtilities)){install.packages("gdalUtilities");require(gdalUtilities)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)



# lad
lad_klasem=read_excel("./IevadesDati/LAD/KulturuKodi_2024.xlsx")
lad=st_read_parquet("./IevadesDati/LAD/LAD_lauki.parquet")


## aramzemes
amazemem=lad_klasem %>% 
  filter(str_detect(SDM_grupa_sakums,"aramz"))
aramzemes=lad %>% 
  filter(PRODUCT_CODE %in% amazemem$kods) %>% 
  mutate(yes=310) %>% 
  dplyr::select(yes)
r_aramzemes_lad=fasterize(aramzemes,template_r,field="yes")
raster::writeRaster(r_aramzemes_lad,
                    "./IevadesDati/ainava/310_aramzemes_lad.tif",
                    progress="text",
                    overwrite=TRUE)
# liekā aizvākšana
rm(amazemem)
rm(aramzemes)
rm(r_aramzemes_lad)


## papuves
papuvem=lad_klasem %>% 
  filter(str_detect(SDM_grupa_sakums,"papuv"))
papuves=lad %>% 
  filter(PRODUCT_CODE %in% papuvem$kods) %>% 
  mutate(yes=320) %>% 
  dplyr::select(yes)
r_papuves_lad=fasterize(papuves,template_r,field="yes")
raster::writeRaster(r_papuves_lad,
                    "./IevadesDati/ainava/320_papuves_lad.tif",
                    progress="text",
                    overwrite=TRUE)
# liekā aizvākšana
rm(papuvem)
rm(papuves)
rm(r_papuves_lad)

## zalaji
zalajiem=lad_klasem %>% 
  filter(str_detect(SDM_grupa_sakums,"zālā"))
zalaji=lad %>% 
  filter(PRODUCT_CODE %in% zalajiem$kods) %>% 
  mutate(yes=330) %>% 
  dplyr::select(yes)
r_zalaji_lad=fasterize(zalaji,template_r,field="yes")
raster::writeRaster(r_zalaji_lad,
                    "./IevadesDati/ainava/330_zalaji_lad.tif",
                    progress="text",
                    overwrite=TRUE)
# liekā aizvākšana
rm(zalajiem)
rm(zalaji)
rm(r_zalaji_lad)

# apvienojums
a300=rast("./IevadesDati/ainava/310_aramzemes_lad.tif")
b300=rast("./IevadesDati/ainava/320_papuves_lad.tif")
c300=rast("./IevadesDati/ainava/330_zalaji_lad.tif")

rastri_laukiem=sprc(a300,b300,c300)
rastrs_lauki=terra::merge(rastri_laukiem,
                               filename="./IevadesDati/ainava/300_lauki_premask.tif",
                               overwrite=TRUE)
# liekā aizvākšana
rm(lad)
rm(lad_klasem)
rm(a300)
rm(b300)
rm(c300)
rm(rastri_laukiem)
rm(rastrs_lauki)


  • klase 400 - mazdārziņi un augļudārzi, vasarnīcas, aizpildīta secībā - dominē pār klasēm ar lielāku vērtību. Šīs klases izveidošanai apvienoti (pārklāšanās secībā):

    topogrāfiskās kartes slānis landus_A, kura rezultāts kodēts ar 410;

    LAD lauku informācijas slāņa grupa (nedaudz plašāk par grupējumu šeit, klases apskatāmas šeit) “augļudārzi”, kura rezultāts kodēts ar 420.

Zemāk esošās komandu rindas izveido slāni ar ainavas klasi 400, kuru failā 400_vasarnicas_premask.tif saglabā turpmākam darbam.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(gdalUtilities)){install.packages("gdalUtilities");require(gdalUtilities)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)


# topo
darzini_topo=st_read_parquet("./IevadesDati/topo/Topo_landusA.parquet")
table(darzini_topo$FNAME,useNA="always")
darzini_topo=darzini_topo %>% 
  filter(FNAME %in% c("poligons_Augļudārzs","poligons_Sakņudārzs",
                      "poligons_Ogulājs")) %>% 
  mutate(yes=410) %>% 
  dplyr::select(yes)
r_darzini_topo=fasterize(darzini_topo,template_r,field="yes")
raster::writeRaster(r_darzini_topo,
                    "./IevadesDati/ainava/410_darzini_topo.tif",
                    progress="text",
                    overwrite=TRUE)
# liekā aizvākšana
rm(darzini_topo)
rm(r_darzini_topo)

# lad
lad_klasem=read_excel("./IevadesDati/LAD/KulturuKodi_2024.xlsx")
table(lad_klasem$SDM_grupa_sakums,useNA="always")
augludarziem=lad_klasem %>% 
  filter(SDM_grupa_sakums=="augļudārzi")
lad=st_read_parquet("./IevadesDati/LAD/LAD_lauki.parquet")
lad=lad %>% 
  filter(PRODUCT_CODE %in% augludarziem$kods) %>% 
  mutate(yes=420) %>% 
  dplyr::select(yes)
r_darzini_lad=fasterize(lad,template_r,field="yes")
raster::writeRaster(r_darzini_lad,
                    "./IevadesDati/ainava/420_darzini_lad.tif",
                    progress="text",
                    overwrite=TRUE)
# liekā aizvākšana
rm(lad_klasem)
rm(augludarziem)
rm(lad)
rm(r_darzini_lad)

# apvienojums
a400=rast("./IevadesDati/ainava/410_darzini_topo.tif")
b400=rast("./IevadesDati/ainava/420_darzini_lad.tif")

rastri_vasarnicam=sprc(a400,b400)
rastrs_vasarnicas=terra::merge(rastri_vasarnicam,
                          filename="./IevadesDati/ainava/400_varnicas_premask.tif",
                          overwrite=TRUE)
# liekā aizvākšana
rm(a400)
rm(b400)
rm(rastri_vasarnicam)
rm(rastrs_vasarnicas)


  • klase 500 - apbūve: apbūvētās platības, aizpildīta beigās, izmantojot informāciju no Dynamic World par vietām, kuras nav nosegtas ar citām klasēm.

  • klase 600 - meži, krūmāji, izcirtumi: ar kokiem un krūmiem klātās platības un izcirtumi un iznīkušās mežaudzes, aizpildīta secībā - dominē pār klasēm ar lielāku vērtību. Šīs klases izveidošanai apvienoti (pārklāšanās secībā):

    The Global Forest Watch slānī reģistrētās koku vainagu seguma izzušanas kopš 2020. gada, kura rezultāts kodēts ar 610;

    Meža valsts reģistrā atzīmētie izcirtumi un iznīkušās audzes, kura rezultāts kodēts ar 610;

    Meža valsts reģistrā atzīmētās mežaudzes, kas ir zemākas par 5 m un sēklu ieguves plantācijas, kura rezultāts kodēts ar 620;

    topogrāfiskās kartes slāņa flora_L ar krūmiem saistītās klases, kas buferētas par 10 m, kura rezultāts kodēts ar 620;

    topogrāfiskās kartes slāņi landus_A klase “poligons_Krūmājs”, kura rezultāts kodēts ar 620;

    LAD lauku informācijas slāņa grupa (nedaudz plašāk par grupējumu šeit, klases apskatāmas šeit) “ilggadīgie krūmveida stādījumi”, kura rezultāts kodēts ar 620;

    Meža valsts reģistrā atzīmētās mežaudzes augstumā no 5 m, rezultāts kodēts ar 630;

    topogrāfiskās kartes slāņa landus_A klases “poligons_Parks”, “poligons_Meza_kapi”, “poligons_Kapi”, kura rezultāts kodēts ar 640;

    topogrāfiskās kartes slāņa flora_L ar kokiem saistītās klases, kas buferētas par 10 m, kura rezultāts kodēts ar 640;

    Palsar Forests slānis, kura rezultāts kodēts ar 630.

Zemāk esošās komandu rindas izveido slāni ar ainavas klasi 600, kuru failā 600_meziem_premask.tif saglabā turpmākam darbam.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(gdalUtilities)){install.packages("gdalUtilities");require(gdalUtilities)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)


# mvr 
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")

# izcirtumi
izcirtumi=mvr %>% 
  filter(zkat %in% c("12","14")) %>% 
  mutate(yes=610) %>% 
  dplyr::select(yes)
r_izcirtumi_mvr=fasterize(izcirtumi,template_r,field="yes")
raster::writeRaster(r_izcirtumi_mvr,
                    "./IevadesDati/ainava/610_izcirtumi_mvr.tif",
                    progress="text",
                    overwrite=TRUE)
# liekā aizvākšana
rm(izcirtumi)
rm(r_izcirtumi_mvr)

# zemās audzes
# arī zkat 16
zemas_audzes=mvr %>% 
  filter((zkat =="10" & h10<5)|zkat=="16") %>% 
  mutate(yes=620) %>% 
  dplyr::select(yes)
r_zemas_mvr=fasterize(zemas_audzes,template_r,field="yes")
raster::writeRaster(r_zemas_mvr,
                    "./IevadesDati/ainava/620_zemas_mvr.tif",
                    progress="text",
                    overwrite=TRUE)
# liekā aizvākšana
rm(zemas_audzes)
rm(r_zemas_mvr)


# augstās audzes
augstas_audzes=mvr %>% 
  filter(zkat =="10" & h10>=5) %>% 
  mutate(yes=630) %>% 
  dplyr::select(yes)
r_augstas_mvr=fasterize(augstas_audzes,template_r,field="yes")
raster::writeRaster(r_augstas_mvr,
                    "./IevadesDati/ainava/630_augstas_mvr.tif",
                    progress="text",
                    overwrite=TRUE)
# liekā aizvākšana
rm(augstas_audzes)
rm(r_augstas_mvr)
rm(mvr)

# tcl - kopš 2020
tcl=rast("./Rastri_10m/TreeCoverLossYear.tif")
tcl2=ifel(tcl<20,NA,610,
          filename="./IevadesDati/ainava/610_TCL.tif",
          overwrite=TRUE)
# liekā aizvākšana
rm(tcl)
rm(tcl2)

# palsar
palsar=rast("./Rastri_10m/Palsar_Forests.tif")
palsar2=ifel(palsar==1,630,NA,
          filename="./IevadesDati/ainava/630_Palsar.tif",
          overwrite=TRUE)
# liekā aizvākšana
rm(palsar)
rm(palsar2)


# lad
lad_klasem=read_excel("./IevadesDati/LAD/KulturuKodi_2024.xlsx")
table(lad_klasem$SDM_grupa_sakums,useNA="always")
lad=st_read_parquet("./IevadesDati/LAD/LAD_lauki.parquet")
krumiem=lad_klasem %>% 
  filter(str_detect(SDM_grupa_sakums,"krūmv"))
krumi=lad %>% 
  filter(PRODUCT_CODE %in% krumiem$kods) %>% 
  mutate(yes=620) %>% 
  dplyr::select(yes)
r_krumi_lad=fasterize(krumi,template_r,field="yes")
raster::writeRaster(r_krumi_lad,
                    "./IevadesDati/ainava/620_krumi_lad.tif",
                    progress="text",
                    overwrite=TRUE)
# liekā aizvākšana
rm(lad_klasem)
rm(lad)
rm(krumiem)
rm(krumi)
rm(r_krumi_lad)

# topo - pkk
pkk_topo=st_read_parquet("./IevadesDati/topo/Topo_landusA.parquet")
table(pkk_topo$FNAME,useNA="always")
pkk_topo=pkk_topo %>% 
  filter(FNAME %in% c("poligons_Parks","poligons_Meza_kapi","poligons_Kapi")) %>% 
  mutate(yes=640) %>% 
  dplyr::select(yes)
r_pkk_topo=fasterize(pkk_topo,template_r,field="yes")
raster::writeRaster(r_pkk_topo,
                    "./IevadesDati/ainava/640_pkk_topo.tif",
                    progress="text",
                    overwrite=TRUE)
# liekā aizvākšana
rm(pkk_topo)
rm(r_pkk_topo)

# topo - krūmi
krumi_topo=st_read_parquet("./IevadesDati/topo/Topo_landusA.parquet")
table(krumi_topo$FNAME,useNA="always")
krumi_topo=krumi_topo %>% 
  filter(FNAME %in% c("poligons_Krūmājs")) %>% 
  mutate(yes=620) %>% 
  dplyr::select(yes)
r_krumi_topo=fasterize(krumi_topo,template_r,field="yes")
raster::writeRaster(r_krumi_topo,
                    "./IevadesDati/ainava/620_krumi_topo.tif",
                    progress="text",
                    overwrite=TRUE)
# liekā aizvākšana
rm(krumi_topo)
rm(r_krumi_topo)

# topo - linijkrumi un linijkoki
linijas_topo=st_read_parquet("./IevadesDati/topo/Topo_floraL.parquet")

# linijkrumi
krumu_linijas_topo=linijas_topo %>% 
  filter(str_detect(FNAME,"Krūmu")) %>% 
  mutate(yes=620) %>% 
  st_buffer(dist=10) %>% 
  dplyr::select(yes)
r_krumu_linijas_topo=fasterize(krumu_linijas_topo,template_r,field="yes")
raster::writeRaster(r_krumu_linijas_topo,
                    "./IevadesDati/ainava/620_KrumuLinijas_topo.tif",
                    progress="text",
                    overwrite=TRUE)
# liekā aizvākšana
rm(krumu_linijas_topo)
rm(r_krumu_linijas_topo)

# linijkoki
koku_linijas_topo=linijas_topo %>% 
  filter(str_detect(FNAME,"Koku")) %>% 
  mutate(yes=640) %>% 
  st_buffer(dist=10) %>% 
  dplyr::select(yes)
r_koku_linijas_topo=fasterize(koku_linijas_topo,template_r,field="yes")
raster::writeRaster(r_koku_linijas_topo,
                    "./IevadesDati/ainava/640_KokuLinijas_topo.tif",
                    progress="text",
                    overwrite=TRUE)
# liekā aizvākšana
rm(koku_linijas_topo)
rm(r_koku_linijas_topo)
rm(linijas_topo)

# apvienosana
r_krumi_lad=rast("./IevadesDati/ainava/620_krumi_lad.tif")
r_pkk_topo=rast("./IevadesDati/ainava/640_pkk_topo.tif")
r_krumi_topo=rast("./IevadesDati/ainava/620_krumi_topo.tif")
r_krumu_linijas_topo=rast("./IevadesDati/ainava/620_KrumuLinijas_topo.tif")
r_koku_linijas_topo=rast("./IevadesDati/ainava/640_KokuLinijas_topo.tif")
r_palsar=rast("./IevadesDati/ainava/630_palsar.tif")
r_tcl=rast("./IevadesDati/ainava/610_TCL.tif")
r_augstas_mvr=rast("./IevadesDati/ainava/630_augstas_mvr.tif")
r_zemas_mvr=rast("./IevadesDati/ainava/620_zemas_mvr.tif")
r_izcirtumi_mvr=rast("./IevadesDati/ainava/610_izcirtumi_mvr.tif")

rastri_meziem=sprc(r_tcl,r_izcirtumi_mvr,
                   r_zemas_mvr,r_krumu_linijas_topo,r_krumi_topo,r_krumi_lad,
                   r_augstas_mvr,
                   r_pkk_topo,r_koku_linijas_topo,
                   r_palsar)
rastrs_mezi=terra::merge(rastri_meziem,
                      filename="./IevadesDati/ainava/600_meziem_premask.tif",
                      overwrite=TRUE)
# liekā aizvākšana
rm(r_krumi_lad)
rm(r_pkk_topo)
rm(r_krumi_topo)
rm(r_krumu_linijas_topo)
rm(r_koku_linijas_topo)
rm(r_palsar)
rm(r_tcl)
rm(r_augstas_mvr)
rm(r_zemas_mvr)
rm(r_izcirtumi_mvr)
rm(rastri_meziem)
rm(rastrs_mezi)


  • klase 700 - mitrāji: apvienojot ar niedrājiem, purviem un bebrainēs saistītos ģeotelpiskos datus, aizpildīta secībā - dominē pār klasēm ar lielāku vērtību. Šīs klases izveidošanai apvienoti (pārklāšanās secībā):

    topogrāfiskās kartes slāņa landus_A klases “Meldrājs_ūdenī_poligons”, “poligons_Grīslājs”, “poligons_Meldrājs”, “poligons_Nec_purvs_grīslājs”, “poligons_Nec_purvs_meldrājs”, “Sēklis_poligons”, kura rezultāts kodēts ar 720;

    topogrāfiskās kartes slāņa landus_A klases “poligons_Nec_purvs_sūnājs”, “poligons_Sūnājs”, kuru rezultāts kodēts ar 710;

    topogrāfiskās kartes slāņa swamp_A, kura rezultāts kodēts ar 710;

    Meža valsts reģistrā atzīmētās zemes kategorijas “21”, “22”, “23”, kura rezultāts kodēts ar 710;

    Meža valsts reģistrā atzīmētās zemes kategorijas “41”, “42”, kura rezultāts kodēts ar 730.

Zemāk esošās komandu rindas izveido slāni ar ainavas klasi 700, kuru failā 700_mitraji_premask.tif saglabā turpmākam darbam.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(gdalUtilities)){install.packages("gdalUtilities");require(gdalUtilities)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)


# topo
topo=st_read_parquet("./IevadesDati/topo/Topo_landusA.parquet")
table(topo$FNAME,useNA="always")

## niedrāji
niedraji_topo=topo %>% 
  filter(FNAME %in% c("Meldrājs_ūdenī_poligons","poligons_Grīslājs",
                      "poligons_Meldrājs","poligons_Nec_purvs_grīslājs",
                      "poligons_Nec_purvs_meldrājs","Sēklis_poligons")) %>% 
  mutate(yes=720) %>% 
  dplyr::select(yes)
r_niedraji_topo=fasterize(niedraji_topo,template_r,field="yes")
raster::writeRaster(r_niedraji_topo,
                    "./IevadesDati/ainava/720_niedraji_topo.tif",
                    progress="text")
# liekā aizvākšana
rm(niedraji_topo)
rm(r_niedraji_topo)


## purvi
purvi_topo=topo %>% 
  filter(FNAME %in% c("poligons_Nec_purvs_sūnājs","poligons_Sūnājs")) %>% 
  mutate(yes=710) %>% 
  dplyr::select(yes)
topo_purvi=st_read_parquet("./IevadesDati/topo/Topo_swampA.parquet")
topo_purvi=topo_purvi %>% 
  mutate(yes=710) %>% 
  dplyr::select(yes)
purvi=rbind(purvi_topo,topo_purvi)
r_purvi_topo=fasterize(purvi,template_r,field="yes")
raster::writeRaster(r_purvi_topo,
                    "./IevadesDati/ainava/710_purvi_topo.tif",
                    progress="text",
                    overwrite=TRUE)
# liekā aizvākšana
rm(purvi_topo)
rm(topo_purvi)
rm(purvi)
rm(r_purvi_topo)


# mvr
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")

# sūnu, zālu pārejas purvi
mvr_purvi=mvr %>% 
  filter(zkat %in% c("21","22","23")) %>% 
  mutate(yes=710) %>% 
  dplyr::select(yes)
r_purvi_mvr=fasterize(mvr_purvi,template_r,field="yes")
raster::writeRaster(r_purvi_mvr,
                    "./IevadesDati/ainava/710_purvi_mvr.tif",
                    progress="text",
                    overwrite=TRUE)
# liekā aizvākšana
rm(mvr_purvi)
rm(r_purvi_mvr)

# bebraines un pārplūstoši klajumi
mvr_bebri=mvr %>% 
  filter(zkat %in% c("41","42")) %>% 
  mutate(yes=730) %>% 
  dplyr::select(yes)
r_bebri_mvr=fasterize(mvr_bebri,template_r,field="yes")
raster::writeRaster(r_bebri_mvr,
                    "./IevadesDati/ainava/730_bebri_mvr.tif",
                    progress="text",
                    overwrite=TRUE)
# liekā aizvākšana
rm(mvr_bebri)
rm(r_bebri_mvr)
rm(mvr)

# apvienosana
r_niedraji_topo=rast("./IevadesDati/ainava/720_niedraji_topo.tif")
r_purvi_topo=rast("./IevadesDati/ainava/710_purvi_topo.tif")
r_purvi_mvr=rast("./IevadesDati/ainava/710_purvi_mvr.tif")
r_bebri_mvr=rast("./IevadesDati/ainava/730_bebri_mvr.tif")


rastri_mitrajiem=sprc(r_niedraji_topo,r_purvi_topo,r_purvi_mvr,r_bebri_mvr)
rastrs_mitraji=terra::merge(rastri_mitrajiem,
                               filename="./IevadesDati/ainava/700_mitraji_premask.tif",
                               overwrite=TRUE)
# liekā aizvākšana
rm(r_niedraji_topo)
rm(r_purvi_topo)
rm(r_purvi_mvr)
rm(r_bebri_mvr)
rm(rastri_mitrajiem)
rm(rastrs_mitraji)


  • klase 800 - smiltāji un kūdras lauki: apvienojot ar smiltājiem, virsājiem un kūdras karjeriem saistītos slāņus, aizpildīta secībā - tā kā šī ir augstākā klase, tā dominē tikai pār robu aizpildīšanai izmantoto Dynamic World. Šīs klases izveidošanai apvienoti (pārklāšanās secībā):

    topogrāfiskās kartes slāņa landus_A klases “poligons_Smiltājs”, “poligons_Kūdra”, kura rezultāts kodēts ar 800;

    Meža valsts reģistrā atzīmētās zemes kategorijas “33”, “34”, kura rezultāts kodēts ar 730.

Zemāk esošās komandu rindas izveido slāni ar ainavas klasi 800, kuru failā 800_smiltaji_premask.tif saglabā turpmākam darbam.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(gdalUtilities)){install.packages("gdalUtilities");require(gdalUtilities)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

smiltaji_topo=st_read_parquet("./IevadesDati/topo/Topo_landusA.parquet")
table(smiltaji_topo$FNAME,useNA="always")
smiltaji_topo=smiltaji_topo %>% 
  filter(FNAME %in% c("poligons_Smiltājs","poligons_Kūdra")) %>% 
  mutate(yes=800) %>% 
  dplyr::select(yes)
r_smiltaji_topo=fasterize(smiltaji_topo,template_r,field="yes")
raster::writeRaster(r_smiltaji_topo,
                    "./IevadesDati/ainava/800_SmiltajiKudra_topo.tif",
                    progress="text")
# liekā aizvākšana
rm(smiltaji_topo)
rm(r_smiltaji_topo)

# mvr zkat 33 un 34
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")

smiltajiem=mvr %>% 
  filter(zkat %in% c("33","34")) %>% 
  mutate(yes=800) %>% 
  dplyr::select(yes)
r_smiltaji_mvr=fasterize(smiltajiem,template_r,field="yes")
raster::writeRaster(r_smiltaji_mvr,
                    "./IevadesDati/ainava/800_SmiltVirs_mvr.tif",
                    progress="text",
                    overwrite=TRUE)
# liekā aizvākšana
rm(mvr)
rm(smiltajiem)
rm(r_smiltaji_mvr)

# apvienosana
r_smiltaji_topo=rast("./IevadesDati/ainava/800_SmiltajiKudra_topo.tif")
r_smiltaji_mvr=rast("./IevadesDati/ainava/800_SmiltVirs_mvr.tif")

rastri_smiltajiem=sprc(r_smiltaji_topo,r_smiltaji_mvr)
rastrs_smiltajiem=terra::merge(rastri_smiltajiem,
                               filename="./IevadesDati/ainava/800_smiltaji_premask.tif",
                               overwrite=TRUE)
# liekā aizvākšana
rm(r_smiltaji_topo)
rm(r_smiltaji_mvr)
rm(rastri_smiltajiem)
rm(rastrs_smiltajiem)


Apvienošana un aizpildīšana.

Zemāk esošās komandu rindas pareizā secībā apvieno iepriekš izveidotos slāņus ar ainavas klasēm un nodrošina robu aizpildīšanu ar atbilstoši klasificētu Dynamic World 2023. gada aprīļa-augusta kompozītu, kuru, pēc maskēšanas tikai analīzes telpai, failā Ainava_vienk_mask.tif saglabā turpmākam darbam.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(gdalUtilities)){install.packages("gdalUtilities");require(gdalUtilities)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)


# DW pildījums 
dynworld=rast("./IevadesDati/DynamicWorld/DynamicWorld_Eksperimentam/DWE_mosaic/DW_2023_apraug.tif")
klases=matrix(c(0,200,
              1,620,
              2,330,
              3,720,
              4,310,
              5,710,
              6,500,
              7,800,
              8,500),ncol=2,byrow=TRUE)
dw2=terra::classify(dynworld,klases)
writeRaster(dw2,
            "./IevadesDati/ainava/DW_reclass.tif",
            overwrite=TRUE)

celi=rast("./IevadesDati/ainava/100_celi.tif")
udeni=rast("./IevadesDati/ainava/200_udens_premask.tif")
lauki=rast("./IevadesDati/ainava/300_lauki_premask.tif")
vasarnicas=rast("./IevadesDati/ainava/400_varnicas_premask.tif")
mezi=rast("./IevadesDati/ainava/600_meziem_premask.tif")
mitraji=rast("./IevadesDati/ainava/700_mitraji_premask.tif")
smiltaji=rast("./IevadesDati/ainava/800_smiltaji_premask.tif")
dw2=rast("./IevadesDati/ainava/DW_reclass.tif")

rastri_ainavai=sprc(celi,udeni,lauki,vasarnicas,mezi,mitraji,smiltaji,dw2)
rastrs_ainava=terra::merge(rastri_ainavai,
                               filename="./IevadesDati/ainava/Ainava_vienkarsa.tif",
                               overwrite=TRUE)
# liekā aizvākšana
rm(celi)
rm(udeni)
rm(lauki)
rm(vasarnicas)
rm(mezi)
rm(mitraji)
rm(smiltaji)
rm(klases)
rm(dynworld)
rm(dw2)
rm(rastri_ainavai)
rm(rastrs_ainava)

# maskēšana
rastrs_ainava=rast("./IevadesDati/ainava/Ainava_vienkarsa.tif")
masketa_ainava=terra::mask(rastrs_ainava,
                           template_t,
                           filename="./IevadesDati/ainava/Ainava_vienk_mask.tif",
                           overwrite=TRUE)
masketa_ainava2=terra::mask(rastrs_ainava,
                           template_t,
                           filename="./Rastri_10m/Ainava_vienk_mask.tif",
                           overwrite=TRUE)

# liekā aizvākšana
rm(rastrs_ainava)
rm(masketa_ainava)


3.2.2.1 Lauku ainava

Šajā apakšnodaļā apkopoti ar lauku ainavu saistītie ievades produkti - 10 m izšķirtspējā sagatavoti rastra slāņi, kas cieši saistīti ar virsnodaļā aprakstīto ainavu un nepieciešami tālākai EGV sagatavošanai. Lai atvieglotu meklēšanu un atsaukšanos, tie iedalīti vēl zamāka līmeņa apakšnodaļās.

Sekojošajās apakšnodaļās esošajos kodu apgabalos sākuma daļa atkārtojas. Nenoliedzami, tas nomāc svarīgo - slānim specifisko daļu. Tomēr tas ļauj katru no tiem uztvert un izpildīt kā neatkarīgu uzdevumu, ja ir pieejami izmantojamie zemāka līmeņa slāņi, uz kuriem atsauces sniegtas aprakstos.

3.2.2.1.1 Lauku bloki

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās ir lauka blokos iekļauti poligoni;

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Lauki_BlokiYN.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# lauki
lad_klasem=read_excel("./IevadesDati/LAD/KulturuKodi_2024.xlsx")
lad=st_read_parquet("./IevadesDati/LAD/LAD_lauki.parquet")
lad$yes=1


# lauku bloki
lauki1=fasterize::fasterize(lad,template_r,field="yes")
lauki1=rast(lauki1)
laukiYN=classify(lauki1, cbind(NA, NA, 0), right=FALSE)
aizpildits=terra::cover(laukiYN,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Lauki_BlokiYN.tif",
                      overwrite=TRUE)


3.2.2.1.2 Zālāji ārpus lauku blokiem, pieskaitot bezatbalsta

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās vienkāršās ainavas slānī ir reģistrēti zālāji (klase 330), bet tie neatrodas lauku blokos, izņemot tās LAD klases, kuras iedalītas grupā (lauks SDM_grupa_sakums) “zālāji (ārpus lauku blokiem un bezatbalsta platības)”;

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Lauki_ZalajiBezatbNELAD.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# lauki
lad_klasem=read_excel("./IevadesDati/LAD/KulturuKodi_2024.xlsx")
lad=st_read_parquet("./IevadesDati/LAD/LAD_lauki.parquet")
lad$yes=1


# ārpus lauku blokiem esoši zālāji
zalaji=ifel(ainava_t==330,1,NA)
bezatb=lad_klasem %>% filter(str_detect(SDM_grupa_sakums,"ārpus lauku blokiem"))
piesk=lad %>% filter(PRODUCT_CODE %in% bezatb$kods)
piesk2=fasterize::fasterize(piesk,template_r,field="yes")
piesk2=rast(piesk2)
LaukuBloki=rast("./Rastri_10m/Lauki_BlokiYN.tif")
zalaji2=ifel(!is.na(zalaji)&LaukuBloki==0,1,0)
zalaji3=merge(piesk2,zalaji2)
aizpildits=terra::cover(zalaji3,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Lauki_ZalajiBezatbNELAD.tif",
                      overwrite=TRUE)


3.2.2.1.3 Zālāji visi

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās vienkāršās ainavas slānī ir reģistrēti zālāji (klase 330);

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Lauki_zalajiYN.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# zālāji
zalajiYN=ifel(ainava_t==330,1,0,
              filename="./Rastri_10m/Lauki_zalajiYN.tif",
              overwrite=TRUE)


3.2.2.1.4 Zālāji LAD ne ppg

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās atrodas Zālāji visi un LAD kultūru kodi ir grupā (lauks SDM_grupa_sakums) “zālāji (kultivētie)”;

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Lauki_ZalajiKultivetie.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# lauki
lad_klasem=read_excel("./IevadesDati/LAD/KulturuKodi_2024.xlsx")
lad=st_read_parquet("./IevadesDati/LAD/LAD_lauki.parquet")
lad$yes=1



# kultivētie zālāji
kultivetie=lad_klasem %>% filter(str_detect(SDM_grupa_sakums,"kulti"))
lad_kultivetie=lad %>% filter(lad$PRODUCT_CODE %in% kultivetie$kods)
zalaji_kulti=fasterize::fasterize(lad_kultivetie,template_r,field="yes")
zalaji_kulti=rast(zalaji_kulti)

zalajiYN=rast("./Rastri_10m/Lauki_zalajiYN.tif")
zalaji_kulti2=ifel(!is.na(zalaji_kulti)&zalajiYN==1,1,0)
aizpildits=terra::cover(zalaji_kulti2,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Lauki_ZalajiKultivetie.tif",
                   overwrite=TRUE)


3.2.2.1.5 Zālāji ilglaicīgie

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās atrodas Zālāji visi un LAD kultūru kodi ir grupā (lauks SDM_grupa_sakums) “zālāji (kultivētie)”;

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Lauki_ZalajiIlggadigie.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# lauki
lad_klasem=read_excel("./IevadesDati/LAD/KulturuKodi_2024.xlsx")
lad=st_read_parquet("./IevadesDati/LAD/LAD_lauki.parquet")
lad$yes=1

# ilggadīgie zālāji
ppg=lad_klasem %>% filter(str_detect(SDM_grupa_sakums,"ilgg"))
lad_ppg=lad %>% filter(lad$PRODUCT_CODE %in% ppg$kods)
zalaji_ppg=fasterize::fasterize(lad_ppg,template_r,field="yes")
zalaji_ppg=rast(zalaji_ppg)
zalajiYN=rast("./Rastri_10m/Lauki_zalajiYN.tif")
zalaji_ppg2=ifel(!is.na(zalaji_ppg)&zalajiYN==1,1,0)
aizpildits=terra::cover(zalaji_ppg2,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Lauki_ZalajiIlggadigie.tif",
                   overwrite=TRUE)


3.2.2.1.6 Papuves

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās vienkāršās ainavas slānī ir reģistrētas papuves (klase 320);

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Lauki_papuvesYN.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# papuves
papuvesYN=ifel(ainava_t==320,1,0,
              filename="./Rastri_10m/Lauki_papuvesYN.tif",
              overwrite=TRUE)


3.2.2.1.7 Krūmveida stādījumi

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās vienkāršās ainavas slānī ir reģistrēta klase 620 un LAD kultūru kodi ir grupā (lauks SDM_grupa_sakums) “krūmveida ilggadīgie stādījumi”;

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Lauki_KrumiLAD.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# lauki
lad_klasem=read_excel("./IevadesDati/LAD/KulturuKodi_2024.xlsx")
lad=st_read_parquet("./IevadesDati/LAD/LAD_lauki.parquet")
lad$yes=1



# krūmveida stādījumi
stadijumi=lad_klasem %>% filter(str_detect(SDM_grupa_sakums,"krūmv"))
lad_krumi=lad %>% filter(lad$PRODUCT_CODE %in% stadijumi$kods)
krumi_lad=fasterize::fasterize(lad_krumi,template_r,field="yes")
krumi_lad=rast(krumi_lad)
krumi_ainava=ifel(ainava_t==620,1,0)
krumi_lad2=ifel(!is.na(krumi_lad)&krumi_ainava==1,1,0)
aizpildits=terra::cover(krumi_lad2,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Lauki_KrumiLAD.tif",
                 overwrite=TRUE)


3.2.2.1.8 Augļudārzi LAD

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās vienkāršās ainavas slānī ir reģistrēta klase 420 un LAD kultūru kodi ir grupā (lauks SDM_grupa_sakums) “augļudārzi”;

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Lauki_AugludarziLAD.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# lauki
lad_klasem=read_excel("./IevadesDati/LAD/KulturuKodi_2024.xlsx")
lad=st_read_parquet("./IevadesDati/LAD/LAD_lauki.parquet")
lad$yes=1


# augļudārzi LAD
augludarzi=lad_klasem %>% filter(str_detect(SDM_grupa_sakums,"augļud"))
lad_augludarzi=lad %>% filter(lad$PRODUCT_CODE %in% augludarzi$kods)
augludarzi_lad=fasterize::fasterize(lad_augludarzi,template_r,field="yes")
augludarzi_lad=rast(augludarzi_lad)
vasarnicas=ifel(ainava_t==420,1,0)
augludarzi_lad2=ifel(!is.na(augludarzi_lad)&vasarnicas==1,1,0)
aizpildits=terra::cover(augludarzi_lad2,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Lauki_AugludarziLAD.tif",
                overwrite=TRUE)


3.2.2.1.9 Aramzemes visas

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās vienkāršās ainavas slānī ir reģistrēta klase 310;

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Lauki_AramzemesYN.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# aramzemes
aramzemesYN=ifel(ainava_t==310,1,0,
                 filename="./Rastri_10m/Lauki_AramzemesYN.tif",
                 overwrite=TRUE)


3.2.2.1.10 Aramzemes: ziemas rapsis un ripsis

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās Aramzemes visas ir reģistrēta klase 1 un LAD kultūru kodi ir grupā (lauks SDM_grupa_sakums) “aramzemes (ziemas rapsis un ripsis)”;

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Lauki_AramzemeZiemasRapsi.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# lauki
lad_klasem=read_excel("./IevadesDati/LAD/KulturuKodi_2024.xlsx")
lad=st_read_parquet("./IevadesDati/LAD/LAD_lauki.parquet")
lad$yes=1


# ziemas rapši, ripši utml
lad_grupa=lad_klasem %>% filter(str_detect(SDM_grupa_sakums,"ziemas rapsis"))
lad_atlase=lad %>% filter(lad$PRODUCT_CODE %in% lad_grupa$kods)
rastrs_lad=fasterize::fasterize(lad_atlase,template_r,field="yes")
rastrs_lad=rast(rastrs_lad)
ainavas_maska=rast("./Rastri_10m/Lauki_AramzemesYN.tif")
pirmsmaskas_rastrs=ifel(!is.na(rastrs_lad)&ainavas_maska==1,1,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Lauki_AramzemeZiemasRapsi.tif",
                     overwrite=TRUE)


3.2.2.1.11 Aramzemes: vasaras rapsis un ripsis + kukurūza + pākšaugi

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās Aramzemes visas ir reģistrēta klase 1 un LAD kultūru kodi ir grupā (lauks SDM_grupa_sakums) “aramzemes (vasaras rapsis un rispsis, kukurūzas, zirņi un pupas, soja, kaņepes)”;

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Lauki_AramzemeVasarasRapsiUTML.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# lauki
lad_klasem=read_excel("./IevadesDati/LAD/KulturuKodi_2024.xlsx")
lad=st_read_parquet("./IevadesDati/LAD/LAD_lauki.parquet")
lad$yes=1


# Aramzemes: vasaras rapsis un ripsis + kukurūza + pākšaugi
lad_grupa=lad_klasem %>% filter(str_detect(SDM_grupa_sakums,"vasaras rapsis"))
lad_atlase=lad %>% filter(lad$PRODUCT_CODE %in% lad_grupa$kods)
rastrs_lad=fasterize::fasterize(lad_atlase,template_r,field="yes")
rastrs_lad=rast(rastrs_lad)
ainavas_maska=rast("./Rastri_10m/Lauki_AramzemesYN.tif")
pirmsmaskas_rastrs=ifel(!is.na(rastrs_lad)&ainavas_maska==1,1,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Lauki_AramzemeVasarasRapsiUTML.tif",
                      overwrite=TRUE)


3.2.2.1.12 Aramzemes: vagu un rušināmkultūras

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās Aramzemes visas ir reģistrēta klase 1 un LAD kultūru kodi ir grupā (lauks SDM_grupa_sakums) “aramzemes (vagu un rušināmkultūru)”;

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Lauki_AramzemeVaguRusinamkulturas.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# lauki
lad_klasem=read_excel("./IevadesDati/LAD/KulturuKodi_2024.xlsx")
lad=st_read_parquet("./IevadesDati/LAD/LAD_lauki.parquet")
lad$yes=1


# Aramzemes: vagu un rušināmkultūras
lad_grupa=lad_klasem %>% filter(str_detect(SDM_grupa_sakums,"rušin"))
lad_atlase=lad %>% filter(lad$PRODUCT_CODE %in% lad_grupa$kods)
rastrs_lad=fasterize::fasterize(lad_atlase,template_r,field="yes")
rastrs_lad=rast(rastrs_lad)

ainavas_maska=rast("./Rastri_10m/Lauki_AramzemesYN.tif")

pirmsmaskas_rastrs=ifel(!is.na(rastrs_lad)&ainavas_maska==1,1,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Lauki_AramzemeVaguRusinamkulturas.tif",
                      overwrite=TRUE)


3.2.2.1.13 Aramzemes: ne- labības, rapši, kukurūzas, pākšaugi, vagu kultūras

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās Aramzemes visas ir reģistrēta klase 1 un LAD kultūru kodi nav grupās (lauks SDM_grupa_sakums), kuru nosaukumi satur frāzes “labīb”, “rušin”, “rapsis”;

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Lauki_AramzemeParejas.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# lauki
lad_klasem=read_excel("./IevadesDati/LAD/KulturuKodi_2024.xlsx")
lad=st_read_parquet("./IevadesDati/LAD/LAD_lauki.parquet")
lad$yes=1


# Aramzemes: ne- labības, rapši, kukurūzas, pākšaugi, vagu kultūras
lad_grupa=lad_klasem %>% filter(str_detect(SDM_grupa_sakums,"labīb")|
                                  str_detect(SDM_grupa_sakums,"rušin")|
                                  str_detect(SDM_grupa_sakums,"rapsis"))
lad_atlase=lad %>% filter(lad$PRODUCT_CODE %in% lad_grupa$kods)
rastrs_lad=fasterize::fasterize(lad_atlase,template_r,field="yes")
rastrs_lad=rast(rastrs_lad)

ainavas_maska=rast("./Rastri_10m/Lauki_AramzemesYN.tif")

pirmsmaskas_rastrs=ifel(is.na(rastrs_lad)&ainavas_maska==1,1,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Lauki_AramzemeParejas.tif",
                      overwrite=TRUE)


3.2.2.1.14 Aramzemes: labība ziemāji

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās Aramzemes visas ir reģistrēta klase 1 un LAD kultūru kodi ir grupā (lauks SDM_grupa_sakums) “aramzemes (labība-ziemāji)”;

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Lauki_AramzemeLabibaZiemaji.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# lauki
lad_klasem=read_excel("./IevadesDati/LAD/KulturuKodi_2024.xlsx")
lad=st_read_parquet("./IevadesDati/LAD/LAD_lauki.parquet")
lad$yes=1


# Aramzemes: labība ziemāji
lad_grupa=lad_klasem %>% filter(str_detect(SDM_grupa_sakums,"labība-ziem"))
lad_atlase=lad %>% filter(lad$PRODUCT_CODE %in% lad_grupa$kods)
rastrs_lad=fasterize::fasterize(lad_atlase,template_r,field="yes")
rastrs_lad=rast(rastrs_lad)

ainavas_maska=rast("./Rastri_10m/Lauki_AramzemesYN.tif")

pirmsmaskas_rastrs=ifel(!is.na(rastrs_lad)&ainavas_maska==1,1,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Lauki_AramzemeLabibaZiemaji.tif",
                      overwrite=TRUE)


3.2.2.1.15 Aramzemes: labība vasarāji

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās Aramzemes visas ir reģistrēta klase 1 un LAD kultūru kodi ir grupā (lauks SDM_grupa_sakums) “aramzemes (labība-vasarāji)”;

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Lauki_AramzemeLabibaVasaraji.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# lauki
lad_klasem=read_excel("./IevadesDati/LAD/KulturuKodi_2024.xlsx")
lad=st_read_parquet("./IevadesDati/LAD/LAD_lauki.parquet")
lad$yes=1


# Aramzemes: labība vasarāji

lad_grupa=lad_klasem %>% filter(str_detect(SDM_grupa_sakums,"labība-vasar"))
lad_atlase=lad %>% filter(lad$PRODUCT_CODE %in% lad_grupa$kods)
rastrs_lad=fasterize::fasterize(lad_atlase,template_r,field="yes")
rastrs_lad=rast(rastrs_lad)

ainavas_maska=rast("./Rastri_10m/Lauki_AramzemesYN.tif")

pirmsmaskas_rastrs=ifel(!is.na(rastrs_lad)&ainavas_maska==1,1,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Lauki_AramzemeLabibaVasaraji.tif",
                      overwrite=TRUE)


3.2.2.1.16 Lauku daudzveidībai

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai. To veido slāņi sekojošajā secībā ar norādītajiem kodiem:

Zemāk esošās komandu rindas izveido failu Ainava_LaukuDaudzveidibai.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

### Lauku daudzveidībai ----

# Aramzemes: labība-vasarāji
aram1=rast("./Rastri_10m/Lauki_AramzemeLabibaVasaraji.tif")
aram1=ifel(aram1==1,311,NA)
# Aramzemes: labība-ziemāji
aram2=rast("./Rastri_10m/Lauki_AramzemeLabibaZiemaji.tif")
aram2=ifel(aram2==1,312,NA)
# Aramzemes: vasaras rapsi
aram3=rast("./Rastri_10m/Lauki_AramzemeVasarasRapsiUTML.tif")
aram3=ifel(aram3==1,313,NA)
# Aramzemes: ziemas rapsi
aram4=rast("./Rastri_10m/Lauki_AramzemeZiemasRapsi.tif")
aram4=ifel(aram4==1,314,NA)
# Aramzemes: rusinamkulturas
aram5=rast("./Rastri_10m/Lauki_AramzemeVaguRusinamkulturas.tif")
aram5=ifel(aram5==1,315,NA)
# Aramzemes: citas
aram6=rast("./Rastri_10m/Lauki_AramzemeParejas.tif")
aram6=ifel(aram6==1,316,NA)
# Augļudārzi
augludarzi=rast("./Rastri_10m/Lauki_AugludarziLAD.tif")
augludarzi=ifel(augludarzi==1,340,NA)
# Ilggadīgie krūmi
krumi_lad=rast("./Rastri_10m/Lauki_KrumiLAD.tif")
krumi_lad=ifel(krumi_lad==1,350,NA)
# Papuves
papuves=rast("./Rastri_10m/Lauki_papuvesYN.tif")
papuves=ifel(papuves==1,320,NA)
# Zālāji kultivētie
zal1=rast("./Rastri_10m/Lauki_ZalajiKultivetie.tif")
zal1=ifel(zal1==1,331,NA)
# Zālāji ilggadīgie
zal2=rast("./Rastri_10m/Lauki_ZalajiIlggadigie.tif")
zal2=ifel(zal2==1,332,NA)
# Zālāji pārējie
zal3=rast("./Rastri_10m/Lauki_ZalajiBezatbNELAD.tif")
zal3=ifel(zal3==1,333,NA)


lauku_ainavai=sprc(aram1,aram2,aram3,aram4,aram5,aram6,augludarzi,krumi_lad,
                   papuves,zal1,zal2,zal3)
lauku_ainava=terra::merge(lauku_ainavai)
lauku_daudzveidibai=terra::cover(lauku_ainava,template_t,
                                 values=NA,
                                 filename="./Rastri_10m/Ainava_LaukuDaudzveidibai.tif",
                                 overwrite=TRUE)


3.2.2.2 Mežu ainava

Šajā apakšnodaļā apkopoti ar mežu ainavu saistītie ievades produkti - 10 m izšķirtspējā sagatavoti rastra slāņi, kas cieši saistīti ar virsnodaļā aprakstīto ainavu un nepieciešami tālākai EGV sagatavošanai. Lai atvieglotu meklēšanu un atsaukšanos, tie iedalīti vēl zamāka līmeņa apakšnodaļās.

Sekojošajās apakšnodaļās esošajos kodu apgabalos sākuma daļa atkārtojas. Nenoliedzami, tas nomāc svarīgo - slānim specifisko daļu. Tomēr tas ļauj katru no tiem uztvert un izpildīt kā neatkarīgu uzdevumu, ja ir pieejami izmantojamie zemāka līmeņa slāņi, uz kuriem atsauces sniegtas aprakstos.

3.2.2.2.1 Oligotrofi susinātie meži

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

Zemāk esošās komandu rindas izveido failu Mezi_OligoSus.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)

# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1


# Oligotrofi susinātie meži
nogabali=mvr %>% 
  filter(mt %in% c("17","18","22","23"))
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

pirmsmaskas_rastrs=ifel(!is.na(rastrs_mvr)&maska_meziem==1,656,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_OligoSus.tif",
                      overwrite=TRUE)


3.2.2.2.2 Oligotrofi purvaiņu meži

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

Zemāk esošās komandu rindas izveido failu Mezi_OligoPurv.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)

# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1


# oligotrofi purvaiņu meži
nogabali=mvr %>% 
  filter(mt %in% c("12","14"))
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

pirmsmaskas_rastrs=ifel(!is.na(rastrs_mvr)&maska_meziem==1,654,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_OligoPurv.tif",
                      overwrite=TRUE)


3.2.2.2.3 Oligotrofi sausieņu un slapjaiņu meži

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

Zemāk esošās komandu rindas izveido failu Mezi_OligoSaus.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)

# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1


# Oligotrofi sausieņu un slapjaiņu meži
nogabali=mvr %>% 
  filter(mt %in% c("1","2","3","7","8"))
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

pirmsmaskas_rastrs=ifel(!is.na(rastrs_mvr)&maska_meziem==1,651,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_OligoSaus.tif",
                      overwrite=TRUE)


3.2.2.2.4 Mezotrofi sausieņu un slapjaiņu meži

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

Zemāk esošās komandu rindas izveido failu Mezi_MezoSaus.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)

# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1

# Mezotrofi sausieņu un slapjaiņu meži
nogabali=mvr %>% 
  filter(mt %in% c("4","9"))
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

pirmsmaskas_rastrs=ifel(!is.na(rastrs_mvr)&maska_meziem==1,652,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_MezoSaus.tif",
                      overwrite=TRUE)


3.2.2.2.5 Eitrofi susinātie meži

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

Zemāk esošās komandu rindas izveido failu Mezi_EitrSus.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)


# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1

# Eitrofi susinātie meži
nogabali=mvr %>% 
  filter(mt %in% c("19","21","24","25"))
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

pirmsmaskas_rastrs=ifel(!is.na(rastrs_mvr)&maska_meziem==1,657,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_EitrSus.tif",
                      overwrite=TRUE)


3.2.2.2.6 Eitrofi purvaiņu meži

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

Zemāk esošās komandu rindas izveido failu Mezi_EitrPurv.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)


# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1

# Eitrofi purvaiņu meži
nogabali=mvr %>% 
  filter(mt %in% c("15","16"))
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

pirmsmaskas_rastrs=ifel(!is.na(rastrs_mvr)&maska_meziem==1,655,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_EitrPurv.tif",
                      overwrite=TRUE)


3.2.2.2.7 Eitrofi sausieņu un slapjaiņu meži

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

Zemāk esošās komandu rindas izveido failu Mezi_EitrSaus.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)

# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1

# Eitrofi sausieņu un slapjaiņu meži
nogabali=mvr %>% 
  filter(mt %in% c("5","6","10","11"))
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

pirmsmaskas_rastrs=ifel(!is.na(rastrs_mvr)&maska_meziem==1,653,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_EitrSaus.tif",
                      overwrite=TRUE)


3.2.2.2.8 Izcirtumi un jaunaudzes līdz 5 m

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 661 apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no 600 līdz 700 un

    Meža valsts reģistra Meža inventarizācijas failā laukā zkat norādītas vērtības “16” vai [“10” un valdošās sugas augstums ir līdz 5 m];

    vienkāršās ainavas maskā ir reģistrēta klase 610 (Global Forest Watch izzudušais koku vainagu segums kopš 2020. gada un izcirtumi un iznīkušās mežaudzes no Meža valsts reģistra);

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Mezi_IzcUNzem5m.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)



# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1

# Izcirtumi un jaunaudzes līdz 5 m
nogabali=mvr %>% 
  filter((zkat=="10"&h10<5)|zkat=="16") %>% 
  mutate(yes=661)
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

klase_610=ifel(ainava_t==610,661,NA)
klases=merge(klase_610,rastrs_mvr)
pirmsmaskas_rastrs=ifel(!is.na(klases)&maska_meziem==1,661,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_IzcUNzem5m.tif",
                      overwrite=TRUE)


3.2.2.2.9 Jaunaudzes no 5 m un krūmāji

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

Zemāk esošās komandu rindas izveido failu Mezi_Jaunaudzes5mKrumaji.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)

# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1
skujkoki=c("1","3","13","14","15","22","23") # 7
saurlapji=c("4","6","8","9","19","20","21","32","35","50","68") # 11
platlapji=c("10","11","12","16","17","18","24","25","26","27","28","29",
            "61","62","63","64","65","66","67","69") # 20

# Jaunaudzes no 5 m un krūmāji
nogabali=mvr %>% 
  filter(zkat=="10"&h10>=5&vgr=="1") %>% 
  mutate(yes=662)
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

izcirtumi_zemas=rast("./Rastri_10m/Mezi_IzcUNzem5m.tif")
klase_krumaji=ifel(ainava_t==620&izcirtumi_zemas==0,662,NA)
klases=merge(klase_krumaji,rastrs_mvr)
pirmsmaskas_rastrs=ifel(!is.na(klases)&maska_meziem==1,662,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_Jaunaudzes5mKrumaji.tif",
                      overwrite=TRUE)


3.2.2.2.10 Vidēja vecuma un briestaudzes

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

Zemāk esošās komandu rindas izveido failu Mezi_VidejasBriestaudzes.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)



# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1

# Vidēja vecuma un briestaudzes
nogabali=mvr %>% 
  filter(zkat=="10"&h10>=5&(vgr=="2"|vgr=="3")) %>% 
  mutate(yes=663)
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

pirmsmaskas_rastrs=ifel(!is.na(rastrs_mvr)&maska_meziem==1,663,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_VidejasBriestaudzes.tif",
                      overwrite=TRUE)


3.2.2.2.11 Pieaugušās un pāraugušās mežaudzes

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

Zemāk esošās komandu rindas izveido failu Mezi_PieaugParaug.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)

# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1


# Pieaugušās un pāraugušās mežaudzes
nogabali=mvr %>% 
  filter(zkat=="10"&h10>=5&(vgr=="4"|vgr=="5")) %>% 
  mutate(yes=664)
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

pirmsmaskas_rastrs=ifel(!is.na(rastrs_mvr)&maska_meziem==1,664,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_PieaugParaug.tif",
                      overwrite=TRUE)


3.2.2.2.12 Skujkoku

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 671 apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no 600 līdz 700 un Meža valsts reģistra Meža inventarizācijas failā laukā zkat norādītas vērtības “10” un kokaudzes pirmajā stāvā skujkoku sugu (s1* apzīmējumi: “1”,“3”,“13”,“14”,“15”,“22”,“23”) krāja veido vismaz 75% no kopējās krājas;

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Mezi_Skujkoku.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)


# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1
skujkoki=c("1","3","13","14","15","22","23") # 7
saurlapji=c("4","6","8","9","19","20","21","32","35","50","68") # 11
platlapji=c("10","11","12","16","17","18","24","25","26","27","28","29",
            "61","62","63","64","65","66","67","69") # 20
mvr=mvr %>% 
  mutate(kraja_skujkoku=ifelse(s10 %in% skujkoki,v10,0)+
           ifelse(s11 %in% skujkoki,v11,0)+ifelse(s12 %in% skujkoki,v12,0)+
           ifelse(s13 %in% skujkoki,v13,0)+ifelse(s14 %in% skujkoki,v14,0),
         kraja_saurlapju=ifelse(s10 %in% saurlapji,v10,0)+
           ifelse(s11 %in% saurlapji,v11,0)+ifelse(s12 %in% saurlapji,v12,0)+
           ifelse(s13 %in% saurlapji,v13,0)+ifelse(s14 %in% saurlapji,v14,0),
         kraja_platlapju=ifelse(s10 %in% platlapji,v10,0)+
           ifelse(s11 %in% platlapji,v11,0)+ifelse(s12 %in% platlapji,v12,0)+
           ifelse(s13 %in% platlapji,v13,0)+ifelse(s14 %in% platlapji,v14,0)) %>% 
  mutate(kopeja_kraja=kraja_skujkoku+kraja_platlapju+kraja_saurlapju) %>% 
  mutate(tips=ifelse(kraja_skujkoku/kopeja_kraja>=0.75,"skujkoku",
                     ifelse(kraja_saurlapju/kopeja_kraja>=0.75,"saurlapju",
                            ifelse(kraja_platlapju/kopeja_kraja>0.5,"platlapju",
                                   "jauktu koku"))))
# Skujkoku
nogabali=mvr %>% 
  filter(zkat=="10"&tips=="skujkoku") %>% 
  mutate(yes=671) # 954445
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

pirmsmaskas_rastrs=ifel(!is.na(rastrs_mvr)&maska_meziem==1,671,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_Skujkoku.tif",
                      overwrite=TRUE)


3.2.2.2.13 Šaurlapju

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 672 apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no 600 līdz 700 un Meža valsts reģistra Meža inventarizācijas failā laukā zkat norādītas vērtības “10” un kokaudzes pirmajā stāvā šaurlapju sugu (s1* apzīmējumi: “4”,“6”,“8”,“9”,“19”,“20”,“21”,“32”,“35”,“50”,“68”) krāja veido vismaz 75% no kopējās krājas, pēc Skujkoku kritērija pielietošanas;

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Mezi_Saurlapju.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)

# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1
skujkoki=c("1","3","13","14","15","22","23") # 7
saurlapji=c("4","6","8","9","19","20","21","32","35","50","68") # 11
platlapji=c("10","11","12","16","17","18","24","25","26","27","28","29",
            "61","62","63","64","65","66","67","69") # 20
mvr=mvr %>% 
  mutate(kraja_skujkoku=ifelse(s10 %in% skujkoki,v10,0)+
           ifelse(s11 %in% skujkoki,v11,0)+ifelse(s12 %in% skujkoki,v12,0)+
           ifelse(s13 %in% skujkoki,v13,0)+ifelse(s14 %in% skujkoki,v14,0),
         kraja_saurlapju=ifelse(s10 %in% saurlapji,v10,0)+
           ifelse(s11 %in% saurlapji,v11,0)+ifelse(s12 %in% saurlapji,v12,0)+
           ifelse(s13 %in% saurlapji,v13,0)+ifelse(s14 %in% saurlapji,v14,0),
         kraja_platlapju=ifelse(s10 %in% platlapji,v10,0)+
           ifelse(s11 %in% platlapji,v11,0)+ifelse(s12 %in% platlapji,v12,0)+
           ifelse(s13 %in% platlapji,v13,0)+ifelse(s14 %in% platlapji,v14,0)) %>% 
  mutate(kopeja_kraja=kraja_skujkoku+kraja_platlapju+kraja_saurlapju) %>% 
  mutate(tips=ifelse(kraja_skujkoku/kopeja_kraja>=0.75,"skujkoku",
                     ifelse(kraja_saurlapju/kopeja_kraja>=0.75,"saurlapju",
                            ifelse(kraja_platlapju/kopeja_kraja>0.5,"platlapju",
                                   "jauktu koku"))))
# Šaurlapju
nogabali=mvr %>% 
  filter(zkat=="10"&tips=="saurlapju") %>% 
  mutate(yes=672) # 1298549
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

pirmsmaskas_rastrs=ifel(!is.na(rastrs_mvr)&maska_meziem==1,672,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_Saurlapju.tif",
                      overwrite=TRUE)


3.2.2.2.14 Platlapju

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 673 apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no 600 līdz 700 un Meža valsts reģistra Meža inventarizācijas failā laukā zkat norādītas vērtības “10” un kokaudzes pirmajā stāvā platlapju sugu (s1* apzīmējumi: “10”,“11”,“12”,“16”,“17”,“18”,“24”,“25”,“26”,“27”,“28”,“29”, “61”,“62”,“63”,“64”,“65”,“66”,“67”,“69”) krāja veido vismaz 50% no kopējās krājas, pēc secīgas Skujkoku un Šaurlapju kritēriju pielietošanas;

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Mezi_Platlapju.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)

# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1
skujkoki=c("1","3","13","14","15","22","23") # 7
saurlapji=c("4","6","8","9","19","20","21","32","35","50","68") # 11
platlapji=c("10","11","12","16","17","18","24","25","26","27","28","29",
            "61","62","63","64","65","66","67","69") # 20
mvr=mvr %>% 
  mutate(kraja_skujkoku=ifelse(s10 %in% skujkoki,v10,0)+
           ifelse(s11 %in% skujkoki,v11,0)+ifelse(s12 %in% skujkoki,v12,0)+
           ifelse(s13 %in% skujkoki,v13,0)+ifelse(s14 %in% skujkoki,v14,0),
         kraja_saurlapju=ifelse(s10 %in% saurlapji,v10,0)+
           ifelse(s11 %in% saurlapji,v11,0)+ifelse(s12 %in% saurlapji,v12,0)+
           ifelse(s13 %in% saurlapji,v13,0)+ifelse(s14 %in% saurlapji,v14,0),
         kraja_platlapju=ifelse(s10 %in% platlapji,v10,0)+
           ifelse(s11 %in% platlapji,v11,0)+ifelse(s12 %in% platlapji,v12,0)+
           ifelse(s13 %in% platlapji,v13,0)+ifelse(s14 %in% platlapji,v14,0)) %>% 
  mutate(kopeja_kraja=kraja_skujkoku+kraja_platlapju+kraja_saurlapju) %>% 
  mutate(tips=ifelse(kraja_skujkoku/kopeja_kraja>=0.75,"skujkoku",
                     ifelse(kraja_saurlapju/kopeja_kraja>=0.75,"saurlapju",
                            ifelse(kraja_platlapju/kopeja_kraja>0.5,"platlapju",
                                   "jauktu koku"))))
# Platlapju
nogabali=mvr %>% 
  filter(zkat=="10"&tips=="platlapju") %>% 
  mutate(yes=673) # 28814
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

pirmsmaskas_rastrs=ifel(!is.na(rastrs_mvr)&maska_meziem==1,673,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_Platlapju.tif",
                      overwrite=TRUE)


3.2.2.2.15 Jauktu koku

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

Zemāk esošās komandu rindas izveido failu Mezi_Jauktukoku.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)


# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1
skujkoki=c("1","3","13","14","15","22","23") # 7
saurlapji=c("4","6","8","9","19","20","21","32","35","50","68") # 11
platlapji=c("10","11","12","16","17","18","24","25","26","27","28","29",
            "61","62","63","64","65","66","67","69") # 20
mvr=mvr %>% 
  mutate(kraja_skujkoku=ifelse(s10 %in% skujkoki,v10,0)+
           ifelse(s11 %in% skujkoki,v11,0)+ifelse(s12 %in% skujkoki,v12,0)+
           ifelse(s13 %in% skujkoki,v13,0)+ifelse(s14 %in% skujkoki,v14,0),
         kraja_saurlapju=ifelse(s10 %in% saurlapji,v10,0)+
           ifelse(s11 %in% saurlapji,v11,0)+ifelse(s12 %in% saurlapji,v12,0)+
           ifelse(s13 %in% saurlapji,v13,0)+ifelse(s14 %in% saurlapji,v14,0),
         kraja_platlapju=ifelse(s10 %in% platlapji,v10,0)+
           ifelse(s11 %in% platlapji,v11,0)+ifelse(s12 %in% platlapji,v12,0)+
           ifelse(s13 %in% platlapji,v13,0)+ifelse(s14 %in% platlapji,v14,0)) %>% 
  mutate(kopeja_kraja=kraja_skujkoku+kraja_platlapju+kraja_saurlapju) %>% 
  mutate(tips=ifelse(kraja_skujkoku/kopeja_kraja>=0.75,"skujkoku",
                     ifelse(kraja_saurlapju/kopeja_kraja>=0.75,"saurlapju",
                            ifelse(kraja_platlapju/kopeja_kraja>0.5,"platlapju",
                                   "jauktu koku"))))
# Jauktu koku
nogabali=mvr %>% 
  filter(zkat=="10"&tips=="jauktu koku") %>% 
  mutate(yes=674) # 451964
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

pirmsmaskas_rastrs=ifel(!is.na(rastrs_mvr)&maska_meziem==1,674,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_Jauktukoku.tif",
                      overwrite=TRUE)


3.2.2.2.16 Skujkoku jaunaudzes, vidēja vecuma un briestaudzes

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

Zemāk esošās komandu rindas izveido failu Mezi_SkujkokuJaunas.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)

# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1
skujkoki=c("1","3","13","14","15","22","23") # 7
saurlapji=c("4","6","8","9","19","20","21","32","35","50","68") # 11
platlapji=c("10","11","12","16","17","18","24","25","26","27","28","29",
            "61","62","63","64","65","66","67","69") # 20
mvr=mvr %>% 
  mutate(kraja_skujkoku=ifelse(s10 %in% skujkoki,v10,0)+
           ifelse(s11 %in% skujkoki,v11,0)+ifelse(s12 %in% skujkoki,v12,0)+
           ifelse(s13 %in% skujkoki,v13,0)+ifelse(s14 %in% skujkoki,v14,0),
         kraja_saurlapju=ifelse(s10 %in% saurlapji,v10,0)+
           ifelse(s11 %in% saurlapji,v11,0)+ifelse(s12 %in% saurlapji,v12,0)+
           ifelse(s13 %in% saurlapji,v13,0)+ifelse(s14 %in% saurlapji,v14,0),
         kraja_platlapju=ifelse(s10 %in% platlapji,v10,0)+
           ifelse(s11 %in% platlapji,v11,0)+ifelse(s12 %in% platlapji,v12,0)+
           ifelse(s13 %in% platlapji,v13,0)+ifelse(s14 %in% platlapji,v14,0)) %>% 
  mutate(kopeja_kraja=kraja_skujkoku+kraja_platlapju+kraja_saurlapju) %>% 
  mutate(tips=ifelse(kraja_skujkoku/kopeja_kraja>=0.75,"skujkoku",
                     ifelse(kraja_saurlapju/kopeja_kraja>=0.75,"saurlapju",
                            ifelse(kraja_platlapju/kopeja_kraja>0.5,"platlapju",
                                   "jauktu koku"))))
# Skujkoku jaunaudzes, vidēja vecuma un briestaudzes
nogabali=mvr %>% 
  filter(zkat=="10"&tips=="skujkoku"&(vgr=="1"|vgr=="2"|vgr=="3")) %>% 
  mutate(yes=681) # 
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

pirmsmaskas_rastrs=ifel(!is.na(rastrs_mvr)&maska_meziem==1,681,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_SkujkokuJaunas.tif",
                      overwrite=TRUE)


3.2.2.2.17 Skujkoku pieaugušās un pāraugušās audzes

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

Zemāk esošās komandu rindas izveido failu Mezi_SkujkokuVecas.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)

# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1
skujkoki=c("1","3","13","14","15","22","23") # 7
saurlapji=c("4","6","8","9","19","20","21","32","35","50","68") # 11
platlapji=c("10","11","12","16","17","18","24","25","26","27","28","29",
            "61","62","63","64","65","66","67","69") # 20
mvr=mvr %>% 
  mutate(kraja_skujkoku=ifelse(s10 %in% skujkoki,v10,0)+
           ifelse(s11 %in% skujkoki,v11,0)+ifelse(s12 %in% skujkoki,v12,0)+
           ifelse(s13 %in% skujkoki,v13,0)+ifelse(s14 %in% skujkoki,v14,0),
         kraja_saurlapju=ifelse(s10 %in% saurlapji,v10,0)+
           ifelse(s11 %in% saurlapji,v11,0)+ifelse(s12 %in% saurlapji,v12,0)+
           ifelse(s13 %in% saurlapji,v13,0)+ifelse(s14 %in% saurlapji,v14,0),
         kraja_platlapju=ifelse(s10 %in% platlapji,v10,0)+
           ifelse(s11 %in% platlapji,v11,0)+ifelse(s12 %in% platlapji,v12,0)+
           ifelse(s13 %in% platlapji,v13,0)+ifelse(s14 %in% platlapji,v14,0)) %>% 
  mutate(kopeja_kraja=kraja_skujkoku+kraja_platlapju+kraja_saurlapju) %>% 
  mutate(tips=ifelse(kraja_skujkoku/kopeja_kraja>=0.75,"skujkoku",
                     ifelse(kraja_saurlapju/kopeja_kraja>=0.75,"saurlapju",
                            ifelse(kraja_platlapju/kopeja_kraja>0.5,"platlapju",
                                   "jauktu koku"))))
# Skujkoku pieaugušās un pāraugušās audzes
nogabali=mvr %>% 
  filter(zkat=="10"&tips=="skujkoku"&(vgr=="4"|vgr=="5")) %>% 
  mutate(yes=682) # 
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

pirmsmaskas_rastrs=ifel(!is.na(rastrs_mvr)&maska_meziem==1,682,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_SkujkokuVecas.tif",
                      overwrite=TRUE)


3.2.2.2.18 Šaurlapju jaunaudzes, vidēja vecuma un briestaudzes

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

Zemāk esošās komandu rindas izveido failu Mezi_SaurlapjuJaunas.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)

# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1
skujkoki=c("1","3","13","14","15","22","23") # 7
saurlapji=c("4","6","8","9","19","20","21","32","35","50","68") # 11
platlapji=c("10","11","12","16","17","18","24","25","26","27","28","29",
            "61","62","63","64","65","66","67","69") # 20
mvr=mvr %>% 
  mutate(kraja_skujkoku=ifelse(s10 %in% skujkoki,v10,0)+
           ifelse(s11 %in% skujkoki,v11,0)+ifelse(s12 %in% skujkoki,v12,0)+
           ifelse(s13 %in% skujkoki,v13,0)+ifelse(s14 %in% skujkoki,v14,0),
         kraja_saurlapju=ifelse(s10 %in% saurlapji,v10,0)+
           ifelse(s11 %in% saurlapji,v11,0)+ifelse(s12 %in% saurlapji,v12,0)+
           ifelse(s13 %in% saurlapji,v13,0)+ifelse(s14 %in% saurlapji,v14,0),
         kraja_platlapju=ifelse(s10 %in% platlapji,v10,0)+
           ifelse(s11 %in% platlapji,v11,0)+ifelse(s12 %in% platlapji,v12,0)+
           ifelse(s13 %in% platlapji,v13,0)+ifelse(s14 %in% platlapji,v14,0)) %>% 
  mutate(kopeja_kraja=kraja_skujkoku+kraja_platlapju+kraja_saurlapju) %>% 
  mutate(tips=ifelse(kraja_skujkoku/kopeja_kraja>=0.75,"skujkoku",
                     ifelse(kraja_saurlapju/kopeja_kraja>=0.75,"saurlapju",
                            ifelse(kraja_platlapju/kopeja_kraja>0.5,"platlapju",
                                   "jauktu koku"))))
# Šaurlapju jaunaudzes, vidēja vecuma un briestaudzes
nogabali=mvr %>% 
  filter(zkat=="10"&tips=="saurlapju"&(vgr=="1"|vgr=="2"|vgr=="3")) %>% 
  mutate(yes=683) # 
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

pirmsmaskas_rastrs=ifel(!is.na(rastrs_mvr)&maska_meziem==1,683,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_SaurlapjuJaunas.tif",
                      overwrite=TRUE)


3.2.2.2.19 Šaurlapju pieaugušās un pāraugušās audzes

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

Zemāk esošās komandu rindas izveido failu Mezi_SaurlapjuVecas.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)

# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1
skujkoki=c("1","3","13","14","15","22","23") # 7
saurlapji=c("4","6","8","9","19","20","21","32","35","50","68") # 11
platlapji=c("10","11","12","16","17","18","24","25","26","27","28","29",
            "61","62","63","64","65","66","67","69") # 20
mvr=mvr %>% 
  mutate(kraja_skujkoku=ifelse(s10 %in% skujkoki,v10,0)+
           ifelse(s11 %in% skujkoki,v11,0)+ifelse(s12 %in% skujkoki,v12,0)+
           ifelse(s13 %in% skujkoki,v13,0)+ifelse(s14 %in% skujkoki,v14,0),
         kraja_saurlapju=ifelse(s10 %in% saurlapji,v10,0)+
           ifelse(s11 %in% saurlapji,v11,0)+ifelse(s12 %in% saurlapji,v12,0)+
           ifelse(s13 %in% saurlapji,v13,0)+ifelse(s14 %in% saurlapji,v14,0),
         kraja_platlapju=ifelse(s10 %in% platlapji,v10,0)+
           ifelse(s11 %in% platlapji,v11,0)+ifelse(s12 %in% platlapji,v12,0)+
           ifelse(s13 %in% platlapji,v13,0)+ifelse(s14 %in% platlapji,v14,0)) %>% 
  mutate(kopeja_kraja=kraja_skujkoku+kraja_platlapju+kraja_saurlapju) %>% 
  mutate(tips=ifelse(kraja_skujkoku/kopeja_kraja>=0.75,"skujkoku",
                     ifelse(kraja_saurlapju/kopeja_kraja>=0.75,"saurlapju",
                            ifelse(kraja_platlapju/kopeja_kraja>0.5,"platlapju",
                                   "jauktu koku"))))
# Šaurlapju pieaugušās un pāraugušās audzes
nogabali=mvr %>% 
  filter(zkat=="10"&tips=="saurlapju"&(vgr=="4"|vgr=="5")) %>% 
  mutate(yes=684) # 
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

pirmsmaskas_rastrs=ifel(!is.na(rastrs_mvr)&maska_meziem==1,684,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_SaurlapjuVecas.tif",
                      overwrite=TRUE)


3.2.2.2.20 Platlapju jaunaudzes, vidēja vecuma un briestaudzes

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

Zemāk esošās komandu rindas izveido failu Mezi_PlatlapjuJaunas.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)

# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1
skujkoki=c("1","3","13","14","15","22","23") # 7
saurlapji=c("4","6","8","9","19","20","21","32","35","50","68") # 11
platlapji=c("10","11","12","16","17","18","24","25","26","27","28","29",
            "61","62","63","64","65","66","67","69") # 20
mvr=mvr %>% 
  mutate(kraja_skujkoku=ifelse(s10 %in% skujkoki,v10,0)+
           ifelse(s11 %in% skujkoki,v11,0)+ifelse(s12 %in% skujkoki,v12,0)+
           ifelse(s13 %in% skujkoki,v13,0)+ifelse(s14 %in% skujkoki,v14,0),
         kraja_saurlapju=ifelse(s10 %in% saurlapji,v10,0)+
           ifelse(s11 %in% saurlapji,v11,0)+ifelse(s12 %in% saurlapji,v12,0)+
           ifelse(s13 %in% saurlapji,v13,0)+ifelse(s14 %in% saurlapji,v14,0),
         kraja_platlapju=ifelse(s10 %in% platlapji,v10,0)+
           ifelse(s11 %in% platlapji,v11,0)+ifelse(s12 %in% platlapji,v12,0)+
           ifelse(s13 %in% platlapji,v13,0)+ifelse(s14 %in% platlapji,v14,0)) %>% 
  mutate(kopeja_kraja=kraja_skujkoku+kraja_platlapju+kraja_saurlapju) %>% 
  mutate(tips=ifelse(kraja_skujkoku/kopeja_kraja>=0.75,"skujkoku",
                     ifelse(kraja_saurlapju/kopeja_kraja>=0.75,"saurlapju",
                            ifelse(kraja_platlapju/kopeja_kraja>0.5,"platlapju",
                                   "jauktu koku"))))
# Platlapju jaunaudzes, vidēja vecuma un briestaudzes
nogabali=mvr %>% 
  filter(zkat=="10"&tips=="platlapju"&(vgr=="1"|vgr=="2"|vgr=="3")) %>% 
  mutate(yes=685) # 
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

pirmsmaskas_rastrs=ifel(!is.na(rastrs_mvr)&maska_meziem==1,685,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_PlatlapjuJaunas.tif",
                      overwrite=TRUE)


3.2.2.2.21 Platlapju pieaugušās un pāraugušās audzes

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

Zemāk esošās komandu rindas izveido failu Mezi_PlatlapjuVecas.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)

# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1
skujkoki=c("1","3","13","14","15","22","23") # 7
saurlapji=c("4","6","8","9","19","20","21","32","35","50","68") # 11
platlapji=c("10","11","12","16","17","18","24","25","26","27","28","29",
            "61","62","63","64","65","66","67","69") # 20
mvr=mvr %>% 
  mutate(kraja_skujkoku=ifelse(s10 %in% skujkoki,v10,0)+
           ifelse(s11 %in% skujkoki,v11,0)+ifelse(s12 %in% skujkoki,v12,0)+
           ifelse(s13 %in% skujkoki,v13,0)+ifelse(s14 %in% skujkoki,v14,0),
         kraja_saurlapju=ifelse(s10 %in% saurlapji,v10,0)+
           ifelse(s11 %in% saurlapji,v11,0)+ifelse(s12 %in% saurlapji,v12,0)+
           ifelse(s13 %in% saurlapji,v13,0)+ifelse(s14 %in% saurlapji,v14,0),
         kraja_platlapju=ifelse(s10 %in% platlapji,v10,0)+
           ifelse(s11 %in% platlapji,v11,0)+ifelse(s12 %in% platlapji,v12,0)+
           ifelse(s13 %in% platlapji,v13,0)+ifelse(s14 %in% platlapji,v14,0)) %>% 
  mutate(kopeja_kraja=kraja_skujkoku+kraja_platlapju+kraja_saurlapju) %>% 
  mutate(tips=ifelse(kraja_skujkoku/kopeja_kraja>=0.75,"skujkoku",
                     ifelse(kraja_saurlapju/kopeja_kraja>=0.75,"saurlapju",
                            ifelse(kraja_platlapju/kopeja_kraja>0.5,"platlapju",
                                   "jauktu koku"))))
# Platlapju pieaugušās un pāraugušās audzes
nogabali=mvr %>% 
  filter(zkat=="10"&tips=="platlapju"&(vgr=="4"|vgr=="5")) %>% 
  mutate(yes=686) # 
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

pirmsmaskas_rastrs=ifel(!is.na(rastrs_mvr)&maska_meziem==1,686,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_PlatlapjuVecas.tif",
                      overwrite=TRUE)


3.2.2.2.22 Jauktu koku jaunaudzes, vidēja vecuma un briestaudzes

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

Zemāk esošās komandu rindas izveido failu Mezi_JauktkokuJaunas.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)

# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1
skujkoki=c("1","3","13","14","15","22","23") # 7
saurlapji=c("4","6","8","9","19","20","21","32","35","50","68") # 11
platlapji=c("10","11","12","16","17","18","24","25","26","27","28","29",
            "61","62","63","64","65","66","67","69") # 20
mvr=mvr %>% 
  mutate(kraja_skujkoku=ifelse(s10 %in% skujkoki,v10,0)+
           ifelse(s11 %in% skujkoki,v11,0)+ifelse(s12 %in% skujkoki,v12,0)+
           ifelse(s13 %in% skujkoki,v13,0)+ifelse(s14 %in% skujkoki,v14,0),
         kraja_saurlapju=ifelse(s10 %in% saurlapji,v10,0)+
           ifelse(s11 %in% saurlapji,v11,0)+ifelse(s12 %in% saurlapji,v12,0)+
           ifelse(s13 %in% saurlapji,v13,0)+ifelse(s14 %in% saurlapji,v14,0),
         kraja_platlapju=ifelse(s10 %in% platlapji,v10,0)+
           ifelse(s11 %in% platlapji,v11,0)+ifelse(s12 %in% platlapji,v12,0)+
           ifelse(s13 %in% platlapji,v13,0)+ifelse(s14 %in% platlapji,v14,0)) %>% 
  mutate(kopeja_kraja=kraja_skujkoku+kraja_platlapju+kraja_saurlapju) %>% 
  mutate(tips=ifelse(kraja_skujkoku/kopeja_kraja>=0.75,"skujkoku",
                     ifelse(kraja_saurlapju/kopeja_kraja>=0.75,"saurlapju",
                            ifelse(kraja_platlapju/kopeja_kraja>0.5,"platlapju",
                                   "jauktu koku"))))
# Jauktu koku jaunaudzes, vidēja vecuma un briestaudzes
nogabali=mvr %>% 
  filter(zkat=="10"&tips=="jauktu koku"&(vgr=="1"|vgr=="2"|vgr=="3")) %>% 
  mutate(yes=687) # 
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

pirmsmaskas_rastrs=ifel(!is.na(rastrs_mvr)&maska_meziem==1,687,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_JauktkokuJaunas.tif",
                      overwrite=TRUE)


3.2.2.2.23 Jauktu koku pieaugušās un pāraugušās audzes

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

Zemāk esošās komandu rindas izveido failu Mezi_JauktkokuVecas.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)

# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1
skujkoki=c("1","3","13","14","15","22","23") # 7
saurlapji=c("4","6","8","9","19","20","21","32","35","50","68") # 11
platlapji=c("10","11","12","16","17","18","24","25","26","27","28","29",
            "61","62","63","64","65","66","67","69") # 20
mvr=mvr %>% 
  mutate(kraja_skujkoku=ifelse(s10 %in% skujkoki,v10,0)+
           ifelse(s11 %in% skujkoki,v11,0)+ifelse(s12 %in% skujkoki,v12,0)+
           ifelse(s13 %in% skujkoki,v13,0)+ifelse(s14 %in% skujkoki,v14,0),
         kraja_saurlapju=ifelse(s10 %in% saurlapji,v10,0)+
           ifelse(s11 %in% saurlapji,v11,0)+ifelse(s12 %in% saurlapji,v12,0)+
           ifelse(s13 %in% saurlapji,v13,0)+ifelse(s14 %in% saurlapji,v14,0),
         kraja_platlapju=ifelse(s10 %in% platlapji,v10,0)+
           ifelse(s11 %in% platlapji,v11,0)+ifelse(s12 %in% platlapji,v12,0)+
           ifelse(s13 %in% platlapji,v13,0)+ifelse(s14 %in% platlapji,v14,0)) %>% 
  mutate(kopeja_kraja=kraja_skujkoku+kraja_platlapju+kraja_saurlapju) %>% 
  mutate(tips=ifelse(kraja_skujkoku/kopeja_kraja>=0.75,"skujkoku",
                     ifelse(kraja_saurlapju/kopeja_kraja>=0.75,"saurlapju",
                            ifelse(kraja_platlapju/kopeja_kraja>0.5,"platlapju",
                                   "jauktu koku"))))
# Jauktu koku pieaugušās un pāraugušās audzes
nogabali=mvr %>% 
  filter(zkat=="10"&tips=="jauktu koku"&(vgr=="4"|vgr=="5")) %>% 
  mutate(yes=688) # 
rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

pirmsmaskas_rastrs=ifel(!is.na(rastrs_mvr)&maska_meziem==1,688,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Mezi_JauktkokuVecas.tif",
                      overwrite=TRUE)


3.2.2.2.24 Mežu daudzveidībai

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai. To veido slāņi sekojošajā secībā ar norādītajiem kodiem:

Zemāk esošās komandu rindas izveido failu Ainava_MezuDaudzveidibai.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)
maska_meziem=ifel(ainava_t>600&ainava_t<700,1,NA)

# lauki
lad_klasem=read_excel("./IevadesDati/LAD/KulturuKodi_2024.xlsx")
lad=st_read_parquet("./IevadesDati/LAD/LAD_lauki.parquet")
lad$yes=1


# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1
skujkoki=c("1","3","13","14","15","22","23") # 7
saurlapji=c("4","6","8","9","19","20","21","32","35","50","68") # 11
platlapji=c("10","11","12","16","17","18","24","25","26","27","28","29",
            "61","62","63","64","65","66","67","69") # 20


# Mežu daudzveidībai
# 681 skujkoku jaunās
skuju_jaunas=rast("./Rastri_10m/Mezi_SkujkokuJaunas.tif")
skuju_jaunas=subst(skuju_jaunas,from=0,to=NA)

# 682 skujkoku vecās
skuju_vecas=rast("./Rastri_10m/Mezi_SkujkokuVecas.tif")
skuju_vecas=subst(skuju_vecas,from=0,to=NA)

# 683 šaurlapju jaunās
saurlapju_jaunas=rast("./Rastri_10m/Mezi_SaurlapjuJaunas.tif")
saurlapju_jaunas=subst(saurlapju_jaunas,from=0,to=NA)

# 684 šaurlapju vecās
saurlapju_vecas=rast("./Rastri_10m/Mezi_SaurlapjuVecas.tif")
saurlapju_vecas=subst(saurlapju_vecas,from=0,to=NA)

# 685 platlapju jaunās
platlapju_jaunas=rast("./Rastri_10m/Mezi_PlatlapjuJaunas.tif")
platlapju_jaunas=subst(platlapju_jaunas,from=0,to=NA)

# 686 platlapju vecās
platlapju_vecas=rast("./Rastri_10m/Mezi_PlatlapjuVecas.tif")
platlapju_vecas=subst(platlapju_vecas,from=0,to=NA)

# 687 jauktu koku jaunās
jauktu_jaunas=rast("./Rastri_10m/Mezi_JauktkokuJaunas.tif")
jauktu_jaunas=subst(jauktu_jaunas,from=0,to=NA)

# 688 jauktu koku vecās
jauktu_vecas=rast("./Rastri_10m/Mezi_JauktkokuVecas.tif")
jauktu_vecas=subst(jauktu_vecas,from=0,to=NA)
# pamata ainava
ainavas_pamatnei=ifel(ainava_t>600&ainava_t<700,ainava_t,1)
freq(ainavas_pamatnei)


rm(mvr)
mezu_ainavai=sprc(skuju_jaunas,skuju_vecas,saurlapju_jaunas,saurlapju_vecas,
                  platlapju_jaunas,platlapju_vecas,jauktu_jaunas,jauktu_vecas,
                  ainavas_pamatnei)
mezu_ainava=terra::merge(mezu_ainavai)
mezu_daudzveidibai=terra::cover(mezu_ainava,template_t,
                                 values=NA,
                                 filename="./Rastri_10m/Ainava_MezuDaudzveidibai.tif",
                                 overwrite=TRUE)


3.2.2.3 Kombinētā ainava

Šajā apakšnodaļā apkopoti ar virsnodaļā aprakstīto ainavu saistītie ievades produkti - 10 m izšķirtspējā sagatavoti rastra slāņi, kas nepieciešami tālākai EGV sagatavošanai. Lai atvieglotu meklēšanu un atsaukšanos, tie iedalīti vēl zamāka līmeņa apakšnodaļās.

Sekojošajās apakšnodaļās esošajos kodu apgabalos sākuma daļa atkārtojas. Nenoliedzami, tas nomāc svarīgo - slānim specifisko daļu. Tomēr tas ļauj katru no tiem uztvert un izpildīt kā neatkarīgu uzdevumu, ja ir pieejami izmantojamie zemāka līmeņa slāņi, uz kuriem atsauces sniegtas aprakstos.

3.2.2.3.1 Parki, kapi, alejas

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās vienkāršās ainavas slānī ir reģistrēti koki ārpus mežiem (klase 640);

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Ainava_ParkiKapiAlejasYN.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# Parki, kapi, alejas
pka=ifel(ainava_t==640,1,0)
pka=cover(pka,nulles,
          filename="./Rastri_10m/Ainava_ParkiKapiAlejasYN.tif",
          overwrite=TRUE)


3.2.2.3.2 Vasarnīcas un mazdārziņi

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās vienkāršās ainavas slānī ir reģistrētas klases diapazonā no 400 līdz 500;

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Ainava_VasarnicasYN.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# Vasarnīcas un mazdārziņi
vasarnicas=ifel(ainava_t>=400&ainava_t<500,1,0)
vasarnicas=cover(vasarnicas,nulles,
          filename="./Rastri_10m/Ainava_VasarnicasYN.tif",
          overwrite=TRUE)


3.2.2.3.3 Ūdensobjektu platība

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās vienkāršās ainavas slānī ir reģistrēti ūdeņi (klase 200);

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Ainava_UdeniYN.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# Ūdensobjektu platība 
udeni=ifel(ainava_t==200,1,0)
udeni=cover(udeni,nulles,
                 filename="./Rastri_10m/Ainava_UdeniYN.tif",
                 overwrite=TRUE)


3.2.2.3.4 Niedrāji, meldrāji, grīslāji un pārplūstošā

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās vienkāršās ainavas slānī ir reģistrētas klases diapazonā no 720 līdz 730 (galapunktus ieskaitot) ;

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Ainava_NiedrajiBebrainesYN.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# Niedrāji, meldrāji, grīslāji un pārplūstošā
niedraji=ifel(ainava_t>=720&ainava_t<=730,1,0)
niedraji=cover(niedraji,nulles,
                 filename="./Rastri_10m/Ainava_NiedrajiBebrainesYN.tif",
                 overwrite=TRUE)


3.2.2.3.5 Mitrāju platība

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās vienkāršās ainavas slānī ir reģistrētas klases diapazonā no 700 līdz 800;

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Ainava_MitrajiYN.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# Mitrāju platība 
mitraji=ifel(ainava_t>=700&ainava_t<800,1,0)
mitraji=cover(mitraji,nulles,
               filename="./Rastri_10m/Ainava_MitrajiYN.tif",
               overwrite=TRUE)


3.2.2.3.6 Atklāta augsne un karjeri

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās vienkāršās ainavas slānī ir reģistrēti smiltāji, smilts, grants un kūdras karjeri (klase 800);

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Ainava_SmiltajiKudraYN.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# Atklāta augsne un karjeri 
plikie=ifel(ainava_t==800,1,0)
plikie=cover(plikie,nulles,
              filename="./Rastri_10m/Ainava_SmiltajiKudraYN.tif",
              overwrite=TRUE)


3.2.2.3.7 Kokiem klātās platības

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās vienkāršās ainavas slānī ir reģistrēti koki (klases 630 un 640);

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Ainava_KokiYN.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# Kokiem klātās platības 
koki=ifel(ainava_t>=630&ainava_t<=640,1,0)
koki=cover(koki,nulles,
              filename="./Rastri_10m/Ainava_KokiYN.tif",
              overwrite=TRUE)


3.2.2.3.8 Netaksētās mežaudzes

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

Zemāk esošās komandu rindas izveido failu Ainava_MeziNetaksets.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)


# Netaksētās mežaudzes 
meziem=ifel(ainava_t==630,1,0)
nogabali=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
nogabali=nogabali %>% 
  filter(zkat=="10") %>% 
  mutate(yes=1)

rastrs_mvr=fasterize::fasterize(nogabali,template_r,field="yes")
rastrs_mvr=rast(rastrs_mvr)

pirmsmaskas_rastrs=ifel(is.na(rastrs_mvr)&meziem==1,1,0)
aizpildits=terra::cover(pirmsmaskas_rastrs,nulles)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Ainava_MeziNetaksets.tif",
                      overwrite=TRUE)


3.2.2.3.9 Apbūve

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai.

  • Vērtība 1 apzīmē šūnas, kurās vienkāršās ainavas slānī ir reģistrēta klase 500;

  • Vērtība 0 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Ainava_ApbuveYN.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# Apbūve
apbuve=ifel(ainava_t==500,1,0)
apbuve=cover(apbuve,nulles,
           filename="./Rastri_10m/Ainava_ApbuveYN.tif",
           overwrite=TRUE)


3.2.2.3.10 Daudzās klases daudzveidībai

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai. To veido slāņi sekojošajā secībā ar tajos norādītajiem kodiem:

Zemāk esošās komandu rindas izveido failu Ainava_KopejaiDaudzveidibai.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# 
# lauku daudzveidiba
lauki=rast("./Rastri_10m/Ainava_LaukuDaudzveidibai.tif")
lauki=subst(lauki,from=1,to=NA)

# mezu daudzveidiba
mezi=rast("./Rastri_10m/Ainava_MezuDaudzveidibai.tif")
mezi=subst(mezi,from=1,to=NA)

# apvienosana
visai_ainavai=sprc(lauki,mezi,ainava_t)
visa_ainava=terra::merge(visai_ainavai)
visai_daudzveidibai=terra::cover(visa_ainava,template_t,
                                values=NA,
                                filename="./Rastri_10m/Ainava_KopejaiDaudzveidibai.tif",
                                overwrite=TRUE)



3.2.2.4 Malu slāņi

Šajā apakšnodaļā apkopoti ar virsnodaļā aprakstīto ainavu saistītie ievades produkti - 10 m izšķirtspējā sagatavoti rastra slāņi, kas nepieciešami tālākai EGV sagatavošanai. Lai atvieglotu meklēšanu un atsaukšanos, tie iedalīti vēl zamāka līmeņa apakšnodaļās.

Malu aprēķini ir no skaitļošanas viedokļa izaicinoši gan datoram sniedzamo instrukciju, gan aprēķinu apjoma dēļ. Lai atvieglotu instrukcijas, sagatavoti mērķtiecīgi ievades slāņi, kas satur specifiskās klases, kuru (savstarpējās) malas ir nepieciešams raksrturot, ekoģeogrāfisko mainīgo aprēķināšanai.

Sekojošajās apakšnodaļās esošajos kodu apgabalos sākuma daļa atkārtojas. Nenoliedzami, tas nomāc svarīgo - slānim specifisko daļu. Tomēr tas ļauj katru no tiem uztvert un izpildīt kā neatkarīgu uzdevumu, ja ir pieejami izmantojamie zemāka līmeņa slāņi, uz kuriem atsauces sniegtas aprakstos.

3.2.2.4.1 Apbūves un LIZ mala

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai, pārklasificējot vienkāršās ainavas slānī reģistrētās vērtības:

Zemāk esošās komandu rindas izveido failu Malam_Apbuve_LIZ.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# Apbūves un LIZ malām
apbuve=ifel(ainava_t==500,500,NA)
liz=ifel(ainava_t>=300&ainava_t<400,300,NA)
abi=merge(apbuve,liz,
          filename="./Rastri_10m/Malam_Apbuve_LIZ.tif",
          overwrite=TRUE)


3.2.2.4.2 Apbūves un koku mala

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai, pārklasificējot vienkāršās ainavas slānī reģistrētās vērtības:

Zemāk esošās komandu rindas izveido failu Malam_Apbuve_koki.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# Apbūves un koku malām
apbuve=ifel(ainava_t==500,500,NA)
koki=ifel(ainava_t>=630&ainava_t<=640,634,NA)
abi=merge(apbuve,koki,
          filename="./Rastri_10m/Malam_Apbuve_koki.tif",
          overwrite=TRUE)


3.2.2.4.3 Aramzemju (visu) malas

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai, pārklasificējot vienkāršās ainavas slānī reģistrētās vērtības:

Zemāk esošās komandu rindas izveido failu Malam_Aramzemes_Y.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# aramzemju malām
aramzemes=ifel(ainava_t==310,310,0,
               filename="./Rastri_10m/Malam_Aramzemes_Y.tif",
               overwrite=TRUE)


3.2.2.4.4 LIZ, izcirtumu un jaunaudžu (<5m) malas ar kokiem >5m

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai, pārklasificējot vienkāršās ainavas slānī reģistrētās vērtības:

Zemāk esošās komandu rindas izveido failu Malam_LIZzemiekoki_Koki.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# LIZ, izcirtumu un jaunaudžu (<5m) malām ar kokiem >5m
viens=ifel((ainava_t>=300&ainava_t<400)|(ainava_t>=600&ainava_t<=620),1,NA)
koki=ifel(ainava_t>=630&ainava_t<=640,634,NA)
abi=merge(viens,koki,
          filename="./Rastri_10m/Malam_LIZzemiekoki_Koki.tif",
          overwrite=TRUE)


3.2.2.4.5 Koku virs 5m malas

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai, pārklasificējot vienkāršās ainavas slānī reģistrētās vērtības:

  • vērtība 634 piešķirta vienkāršās ainavas slāņa klašu diapozonam [630,640];

  • pārējās Latvijas teritorijā esošās šūnas aizpildītas ar 0.

Zemāk esošās komandu rindas izveido failu Malam_Koki_Y.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# koku malām
koki=ifel(ainava_t>=630&ainava_t<=640,634,0,
          filename="./Rastri_10m/Malam_Koki_Y.tif",
          overwrite=TRUE)


3.2.2.4.6 Niedrāju malas ar ūdeni

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai, pārklasificējot vienkāršās ainavas slānī reģistrētās vērtības:

Zemāk esošās komandu rindas izveido failu Malam_NiedrajiBebraines_Udens.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# Niedrāju malām ar ūdeni
udens=ifel(ainava_t==200,2,NA)
niedraji=ifel(ainava_t>=720&ainava_t<=730,1,NA)
abi=merge(udens,niedraji,
          filename="./Rastri_10m/Malam_NiedrajiBebraines_Udens.tif",
          overwrite=TRUE)


3.2.2.4.7 Pieaugušu un pāraugušu mežaudžu malas

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai, pārklasificējot Pieaugušās un pāraugušās mežaudzes reģistrētās vērtības:

Zemāk esošās komandu rindas izveido failu Malam_PieaugParaug_Y.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}


# Pieaugušu un pāraugušu mežaudžu malām
piepar=rast("./Rastri_10m/Mezi_PieaugParaug.tif")
piepar=ifel(piepar==664,1,0,
            filename="./Rastri_10m/Malam_PieaugParaug_Y.tif",
            overwrite=TRUE)


3.2.2.4.8 Zālāju (visu) malas

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai, pārklasificējot Zālāji visi reģistrētās vērtības:

  • vērtība 1 piešķirta Zālāji visi klasei 1;

  • pārējās Latvijas teritorijā esošās šūnas aizpildītas ar 0.

Zemāk esošās komandu rindas izveido failu Malam_Zalaji_Y.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# zālāju malām
zalaji=rast("./Rastri_10m/Lauki_zalajiYN.tif")
zalaji=ifel(zalaji==1,1,0,
            filename="./Rastri_10m/Malam_Zalaji_Y.tif",
            overwrite=TRUE)


3.2.2.4.9 Ūdens un LIZ malas

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai, pārklasificējot vienkāršās ainavas slānī reģistrētās vērtības:

Zemāk esošās komandu rindas izveido failu Malam_Udens_LIZ.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# ūdens un LIZ malām
udens=ifel(ainava_t==200,2,NA)
liz=ifel(ainava_t>=300&ainava_t<400,300,NA)
abi=merge(udens,liz,
          filename="./Rastri_10m/Malam_Udens_LIZ.tif",
          overwrite=TRUE)


3.2.2.4.10 Ūdens un zālāju malas

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai, pārklasificējot vienkāršās ainavas slānī reģistrētās vērtības:

Zemāk esošās komandu rindas izveido failu Malam_Udens_Zalaji.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# ūdens un zālāju malām
udens=ifel(ainava_t==200,2,NA)
zalaji=ifel(ainava_t==330,1,NA)
abi=merge(udens,zalaji,
          filename="./Rastri_10m/Malam_Udens_Zalaji.tif",
          overwrite=TRUE)


3.2.2.4.11 Ūdensobjektu malas

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai, pārklasificējot vienkāršās ainavas slānī reģistrētās vērtības:

Zemāk esošās komandu rindas izveido failu Malam_Udens_Y.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# ūdeņu malām
udens=ifel(ainava_t==200,1,0,
           filename="./Rastri_10m/Malam_Udens_Y.tif",
           overwrite=TRUE)


3.2.2.4.12 Ceļu garums (malas/2)

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai, pārklasificējot vienkāršās ainavas slānī reģistrētās vērtības:

Zemāk esošās komandu rindas izveido failu Malam_Celi_Y.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# ceļu malām
celi=ifel(ainava_t==100,1,0,
           filename="./Rastri_10m/Malam_Celi_Y.tif",
           overwrite=TRUE)


3.2.2.5 Lauku un mežu daudzveidība - šaurās grupas

Šajā apakšnodaļā apkopoti ar virsnodaļā aprakstīto ainavu saistītie ievades produkti - 10 m izšķirtspējā sagatavoti rastra slāņi, kas nepieciešami tālākai EGV sagatavošanai. Lai atvieglotu meklēšanu un atsaukšanos, tie iedalīti vēl zamāka līmeņa apakšnodaļās.

Sekojošajās apakšnodaļās esošajos kodu apgabalos sākuma daļa atkārtojas. Nenoliedzami, tas nomāc svarīgo - slānim specifisko daļu. Tomēr tas ļauj katru no tiem uztvert un izpildīt kā neatkarīgu uzdevumu, ja ir pieejami izmantojamie zemāka līmeņa slāņi, uz kuriem atsauces sniegtas aprakstos.

3.2.2.5.1 Lauku (smalkā) daudzveidība

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai. Tajā ievietotas sekojošas vērtības, slāņu prioritāte secībā

Zemāk esošās komandu rindas izveido failu Ainava_LaukuSmalkaDaudzveidiba.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)

# vienkāršā ainava
ainava_t=rast("./Rastri_10m/Ainava_vienk_mask.tif")
ainava_r=raster(ainava_t)

# lauki
lad_klasem=read_excel("./IevadesDati/LAD/KulturuKodi_2024.xlsx")
lad=st_read_parquet("./IevadesDati/LAD/LAD_lauki.parquet")
lad$yes=1


# 
lad$kods=as.numeric(lad$PRODUCT_CODE)
summary(lad$kods)
laukiem=fasterize::fasterize(lad,template_r,field="kods")
laukiem=rast(laukiem)

lauku_daudzveidiba=rast("./Rastri_10m/Ainava_LaukuDaudzveidibai.tif")
ld2=lauku_daudzveidiba*100
aizpildits=terra::cover(laukiem,ld2)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Ainava_LaukuSmalkaDaudzveidiba.tif",
                      overwrite=TRUE)


3.2.2.5.2 Mežu (smalkā) daudzveidība

Rastrs ar šūnas izmēru 10 m un segumu visai Latvijas teritorijai. Tajā ievietotas sekojošas vērtības, slāņu prioritāte secībā

  • Valsts meža dienesta Meža valsts reģistrā izveidots kods, kurā valdošās koka sugas kodam, reizinātam ar 1000, pieskaitīts vecuma grupas kods. Bet pirms rasterizēšanas izslēgtas ģeometrijas, kurās nav izveidojies kods, kāda no koda komponentēm ir 0;

  • mežu daudzveidības klašu vērtības;

  • vērtība 1 - pārējās Latvijas teritorijā esošās šūnas.

Zemāk esošās komandu rindas izveido failu Ainava_MezuSmalkaDaudzveidiba.tif.

Code
# Libs
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(raster)) {install.packages("raster"); require(raster)}
if(!require(fasterize)) {install.packages("fasterize"); require(fasterize)}
if(!require(readxl)) {install.packages("readxl"); require(readxl)}

# templates
template_t=rast("./Templates/TemplateRasters/LV10m_10km.tif")
template_r=raster(template_t)

nulles=terra::subst(template_t,from=1,to=0)


# lauki
lad_klasem=read_excel("./IevadesDati/LAD/KulturuKodi_2024.xlsx")
lad=st_read_parquet("./IevadesDati/LAD/LAD_lauki.parquet")
lad$yes=1

# meži
mvr=st_read_parquet("./IevadesDati/MVR/nogabali_2024janv.parquet")
mvr$yes=1

# 
mvr=mvr %>% 
  mutate(kods1=as.numeric(s10)*1000,
         kods2=as.numeric(vgr),
         kods=kods1+kods2) %>% 
  filter(!is.na(kods)) %>% 
  filter(kods1>0) %>% 
  filter(kods2>0)


meziem=fasterize::fasterize(mvr,template_r,field="kods")
meziem=rast(meziem)

mezu_daudzveidiba=rast("./Rastri_10m/Ainava_MezuDaudzveidibai.tif")
aizpildits=terra::cover(meziem,mezu_daudzveidiba)
pecmaskas_rastrs=mask(aizpildits,template_t,
                      filename="./Rastri_10m/Ainava_MezuSmalkaDaudzveidiba.tif",
                      overwrite=TRUE)


3.2.2.5.3 Kopējās ainavas Šenona daudzveidības indekss 500 m šūnā

Šenona daudzveidības indeksa aprēķini ir tik resrusu prasīgi, ka tos risināt katrā ainavas mērogā ap katru analīzes šūnu nav racionāli iespējams. Atšķirībā no malu slāņiem, tie nav tieši agregējami. Tādēļ pieņemts lēmums par rastra šūnas izmēru, kurš:

  1. veidojas kā analīzes šūnas reizinājums ar veselu skaitli;

  2. ir pietiekoši plašs, lai tajā būtu iespējama vides mainība. Tādēļ analīzes šūna pati par sevi (vai reizinājums ar 1) neder - 1 ha teritorijā ir ļoti Zemes seguma un lietojuma veidu maza mainība. Tas nozīmē, ka šai šūnai ir jābūt iespējami lielākai, tomēr pārāk liela analīzes šūna nozīmētu telpiskās autokorelācijas mākslīgu pastiprināšanu;

  3. jebkuram ainavas mērogam ir jāveidojas no vairākām ievades līmeņa šūnām.

Tā kā ekoģeogrāfisko mainīgo sagatavošanā izmantosim telpiski svērto zonālo statistiku (vairāk - Procesēšanas atvieglošana) un mazākais ainavas līmenis pēc analīzes šūnas ir r=500 m ap analīzes šūnas centru, pieņemts lēmums ainavas daudzveidības indeksa aprēķinus veikt individuālām šūnām ar malas garumu 500 m, tātad, 25 ha ainavā. Tas nozīmē, ka mazākais izmantoto vienību skaits ir deviņi (ainavas mērogam r=500 m ap analīzes šūnas centru).

Par ievades informāciju kopējās ainavas daudzveidības indeksa aprēķiniem izmantots Daudzās klases daudzveidībai rezultāts. Zemāk esošās komandu rindas izveido un saglabā slāni Daudzv_Kopeja_x500.tif, kurš tiks izmantots EGV sagatavošanai.

Code
# libs ----
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(landscapemetrics)) {install.packages("landscapemetrics"); require(landscapemetrics)}
if(!require(foreach)) {install.packages("foreach"); require(foreach)}
if(!require(doParallel)) {install.packages("doParallel"); require(doParallel)}


# mapes ----

# kopeja daudzveidiba
dir.create("./IevadesDati/ainava/Daudzveidibai/Daudzv_Kopeja_x500")


# kvadrati ----

kvadrati=st_read_parquet("./Templates/TemplateGrids/tikls500_sauzeme.parquet")

numuri=levels(factor(kvadrati$tks50km))


library(foreach)
library(doParallel)
cl <- makeCluster(24) # jānorāda atbilstoši izmantotajai iekārtai
registerDoParallel(cl)

foreach(i = 1:length(numuri)) %dopar% {
  library(tidyverse)
  library(sf)
  library(arrow)
  library(sfarrow)
  library(terra)
  library(raster)
  library(exactextractr)
  library(fasterize)
  library(landscapemetrics)
  
  
  sakums=Sys.time()
  print(i)
  solis=numuri[i]
  
  sunas=kvadrati %>% filter(tks50km==solis)
  
  telpa=st_as_sfc(st_bbox(sunas))
  telpa2=st_buffer(telpa,dist=1000)
  
  
  template_500=rast("./Templates/TemplateRasters/LV500m_10km.tif")
  temp500_mazs=crop(template_500,telpa2)
  rastrs_500_mazs=raster::raster(temp500_mazs)
  
  # kopeja
  slanis=rast("./Rastri_10m/Ainava_KopejaiDaudzveidibai.tif")
  slanis_mazs=crop(slanis,telpa2)
  a=sample_lsm(slanis_mazs,y=sunas,plot_id=sunas$id,what="lsm_l_shdi")
  a$value[is.na(a$value)]=0
  sunas$vertibas=a$value
  slanis=fasterize::fasterize(sunas,rastrs_500_mazs,field="vertibas")
  slanis=rast(slanis)
  slanis2=terra::mask(slanis,temp500_mazs,overwrite=TRUE,
                      filename=paste0("./IevadesDati/ainava/Daudzveidibai/Daudzv_Kopeja_x500/Daudzv_Kopeja_x500_",solis,".tif"))
  
 
  beigas=Sys.time()
  ilgums=beigas-sakums
  print(ilgums)
}
stopCluster(cl)


## mozaīkas ----

# kopeja daudzveidiba
slani=list.files("./IevadesDati/ainava/Daudzveidibai/Daudzv_Kopeja_x500/",full.names = TRUE)
virt_slani=terra::vrt(slani)
names(virt_slani)="Daudzv_Kopeja_x500"
writeRaster(virt_slani,"./Rastri_500m/Daudzv_Kopeja_x500.tif",overwrite=TRUE)


3.2.2.5.4 Lauku ainavas Šenona daudzveidības indekss 500 m šūnā

Šenona daudzveidības indeksa aprēķini ir tik resrusu prasīgi, ka tos risināt katrā ainavas mērogā ap katru analīzes šūnu nav racionāli iespējams. Atšķirībā no malu slāņiem, tie nav tieši agregējami. Tādēļ pieņemts lēmums par rastra šūnas izmēru, kurš:

  1. veidojas kā analīzes šūnas reizinājums ar veselu skaitli;

  2. ir pietiekoši plašs, lai tajā būtu iespējama vides mainība. Tādēļ analīzes šūna pati par sevi (vai reizinājums ar 1) neder - 1 ha teritorijā ir ļoti Zemes seguma un lietojuma veidu maza mainība. Tas nozīmē, ka šai šūnai ir jābūt iespējami lielākai, tomēr pārāk liela analīzes šūna nozīmētu telpiskās autokorelācijas mākslīgu pastiprināšanu;

  3. jebkuram ainavas mērogam ir jāveidojas no vairākām ievades līmeņa šūnām.

Tā kā ekoģeogrāfisko mainīgo sagatavošanā izmantosim telpiski svērto zonālo statistiku (vairāk - Procesēšanas atvieglošana) un mazākais ainavas līmenis pēc analīzes šūnas ir r=500 m ap analīzes šūnas centru, pieņemts lēmums ainavas daudzveidības indeksa aprēķinus veikt individuālām šūnām ar malas garumu 500 m, tātad, 25 ha ainavā. Tas nozīmē, ka mazākais izmantoto vienību skaits ir deviņi (ainavas mērogam r=500 m ap analīzes šūnas centru).

Par ievades informāciju kopējās ainavas daudzveidības indeksa aprēķiniem izmantots Lauku (smalkā) daudzveidība rezultāts. Zemāk esošās komandu rindas izveido un saglabā slāni Daudzv_Lauku_x500.tif, kurš tiks izmantots EGV sagatavošanai.

Code
# libs ----
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(landscapemetrics)) {install.packages("landscapemetrics"); require(landscapemetrics)}
if(!require(foreach)) {install.packages("foreach"); require(foreach)}
if(!require(doParallel)) {install.packages("doParallel"); require(doParallel)}


# mapes ----

# lauku daudzveidiba
dir.create("./IevadesDati/ainava/Daudzveidibai/Daudzv_Lauku_x500")

# kvadrati ----

kvadrati=st_read_parquet("./Templates/TemplateGrids/tikls500_sauzeme.parquet")

numuri=levels(factor(kvadrati$tks50km))


library(foreach)
library(doParallel)
cl <- makeCluster(24) # jānorāda atbilstoši izmantotajai iekārtai
registerDoParallel(cl)

foreach(i = 1:length(numuri)) %dopar% {
  library(tidyverse)
  library(sf)
  library(arrow)
  library(sfarrow)
  library(terra)
  library(raster)
  library(exactextractr)
  library(fasterize)
  library(landscapemetrics)
  
  
  sakums=Sys.time()
  print(i)
  solis=numuri[i]
  
  sunas=kvadrati %>% filter(tks50km==solis)
  
  telpa=st_as_sfc(st_bbox(sunas))
  telpa2=st_buffer(telpa,dist=1000)
  
  
  template_500=rast("./Templates/TemplateRasters/LV500m_10km.tif")
  temp500_mazs=crop(template_500,telpa2)
  rastrs_500_mazs=raster::raster(temp500_mazs)
  

  
  # lauku daudzveidiba
  slanis=rast("./Rastri_10m/Ainava_LaukuSmalkaDaudzveidiba.tif")
  slanis_mazs=crop(slanis,telpa2)
  a=sample_lsm(slanis_mazs,y=sunas,plot_id=sunas$id,what="lsm_l_shdi")
  a$value[is.na(a$value)]=0
  sunas$vertibas=a$value
  slanis=fasterize::fasterize(sunas,rastrs_500_mazs,field="vertibas")
  slanis=rast(slanis)
  slanis2=terra::mask(slanis,temp500_mazs,overwrite=TRUE,
                      filename=paste0("./IevadesDati/ainava/Daudzveidibai/Daudzv_Lauku_x500/Daudzv_Lauku_x500_",solis,".tif"))

  
  beigas=Sys.time()
  ilgums=beigas-sakums
  print(ilgums)
}
stopCluster(cl)


## mozaīkas ----

# lauku daudzveidiba
slani=list.files("./IevadesDati/ainava/Daudzveidibai/Daudzv_Lauku_x500/",full.names = TRUE)
virt_slani=terra::vrt(slani)
names(virt_slani)="Daudzv_Lauku_x500"
writeRaster(virt_slani,"./Rastri_500m/Daudzv_Lauku_x500.tif",overwrite=TRUE)


3.2.2.5.5 Mežu ainavas Šenona daudzveidības indekss 500 m šūnā

Šenona daudzveidības indeksa aprēķini ir tik resrusu prasīgi, ka tos risināt katrā ainavas mērogā ap katru analīzes šūnu nav racionāli iespējams. Atšķirībā no malu slāņiem, tie nav tieši agregējami. Tādēļ pieņemts lēmums par rastra šūnas izmēru, kurš:

  1. veidojas kā analīzes šūnas reizinājums ar veselu skaitli;

  2. ir pietiekoši plašs, lai tajā būtu iespējama vides mainība. Tādēļ analīzes šūna pati par sevi (vai reizinājums ar 1) neder - 1 ha teritorijā ir ļoti Zemes seguma un lietojuma veidu maza mainība. Tas nozīmē, ka šai šūnai ir jābūt iespējami lielākai, tomēr pārāk liela analīzes šūna nozīmētu telpiskās autokorelācijas mākslīgu pastiprināšanu;

  3. jebkuram ainavas mērogam ir jāveidojas no vairākām ievades līmeņa šūnām.

Tā kā ekoģeogrāfisko mainīgo sagatavošanā izmantosim telpiski svērto zonālo statistiku (vairāk - Procesēšanas atvieglošana) un mazākais ainavas līmenis pēc analīzes šūnas ir r=500 m ap analīzes šūnas centru, pieņemts lēmums ainavas daudzveidības indeksa aprēķinus veikt individuālām šūnām ar malas garumu 500 m, tātad, 25 ha ainavā. Tas nozīmē, ka mazākais izmantoto vienību skaits ir deviņi (ainavas mērogam r=500 m ap analīzes šūnas centru).

Par ievades informāciju kopējās ainavas daudzveidības indeksa aprēķiniem izmantots Mežu (smalkā) daudzveidība rezultāts. Zemāk esošās komandu rindas izveido un saglabā slāni Daudzv_Mezu_x500.tif, kurš tiks izmantots EGV sagatavošanai.

Code
# libs ----
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(landscapemetrics)) {install.packages("landscapemetrics"); require(landscapemetrics)}
if(!require(foreach)) {install.packages("foreach"); require(foreach)}
if(!require(doParallel)) {install.packages("doParallel"); require(doParallel)}


# mapes ----

# mezu daudzveidiba
dir.create("./IevadesDati/ainava/Daudzveidibai/Daudzv_Mezu_x500")


# kvadrati ----

kvadrati=st_read_parquet("./Templates/TemplateGrids/tikls500_sauzeme.parquet")

numuri=levels(factor(kvadrati$tks50km))


library(foreach)
library(doParallel)
cl <- makeCluster(24) # jānorāda atbilstoši izmantotajai iekārtai
registerDoParallel(cl)

foreach(i = 1:length(numuri)) %dopar% {
  library(tidyverse)
  library(sf)
  library(arrow)
  library(sfarrow)
  library(terra)
  library(raster)
  library(exactextractr)
  library(fasterize)
  library(landscapemetrics)
  
  
  sakums=Sys.time()
  print(i)
  solis=numuri[i]
  
  sunas=kvadrati %>% filter(tks50km==solis)
  
  telpa=st_as_sfc(st_bbox(sunas))
  telpa2=st_buffer(telpa,dist=1000)
  
  
  template_500=rast("./Templates/TemplateRasters/LV500m_10km.tif")
  temp500_mazs=crop(template_500,telpa2)
  rastrs_500_mazs=raster::raster(temp500_mazs)
  
 
  # mezu daudzveidiba
  slanis=rast("./Rastri_10m/Ainava_MezuSmalkaDaudzveidiba.tif")
  slanis_mazs=crop(slanis,telpa2)
  a=sample_lsm(slanis_mazs,y=sunas,plot_id=sunas$id,what="lsm_l_shdi")
  a$value[is.na(a$value)]=0
  sunas$vertibas=a$value
  slanis=fasterize::fasterize(sunas,rastrs_500_mazs,field="vertibas")
  slanis=rast(slanis)
  slanis2=terra::mask(slanis,temp500_mazs,overwrite=TRUE,
                      filename=paste0("./IevadesDati/ainava/Daudzveidibai/Daudzv_Mezu_x500/Daudzv_Mezu_x500_",solis,".tif"))

  
  
  beigas=Sys.time()
  ilgums=beigas-sakums
  print(ilgums)
}
stopCluster(cl)


## mozaīkas ----


# mezu daudzveidiba
slani=list.files("./IevadesDati/ainava/Daudzveidibai/Daudzv_Mezu_x500/",full.names = TRUE)
virt_slani=terra::vrt(slani)
names(virt_slani)="Daudzv_Mezu_x500"
writeRaster(virt_slani,"./Rastri_500m/Daudzv_Mezu_x500.tif",overwrite=TRUE)


3.2.3 Vides pārmaiņas

Vides pārmaiņas nepieciešamas novērojumu filtrēšanai. Daļēji tās būtu iegūstamas no Meža Valsts reģistrs un LAD lauku informācija datiem, tomēr projekta darba grupā nav pieejami ik gada raksturojumi (1) un šīs datubāzes neaptver visu valsts teritoriju (2), tādēļ nepieciešams neatkarīgs vērtējums. Tāda izstrādāšanai izmantojām Dynamic World izpēte aprīļa līdz augusta ik gadam no 2017. līdz 2023. rezultātus un Global Forest Watch datus, raksturojot pārmaiņu apjomus analīzes šūnā (nodaļa 100 m režģis Latvijā) un putnu ligzdošanas iecirkņu rādiusu grupu (1.1 att.) buferos ap analīzes šūnu centriem.

Saskaņā ar Dynamic World izpēte rezultātiem, ir vērts izmantot šo resursu vides kopējo pārmaiņu analīzē kopš 2017. gada. Par kopējām pārmaiņām uzskatīta jebkura izmaiņa Dynamic World klasē, to salīdzinot ik 10 m pikselim aprīļa-augusta sezonā starp katriem diviem secīgiem gadiem. Pārmaiņu apjoms raksturots kā platības īpatsvars 100 m šūnā vai putnu ligzdošanas iecirkņu rādiusu grupu buferos ap šīs šūnas centru. Tā kā pārmaiņas analizētas vienos un tajos pašos rastros, izmantojot dažādus laukumveida objektus, kurus nepieciešams apvienot vienā failā, katras ģeometrijas raksturojums iestrādāts lauku nosaukumos.

Kopumā līdzīga procedūra veikta koku vainagu seguma izzušanas apjoma (īpatsvara no telpas kopumā) raksturošanai. Tomēr šī informācija ir iestrādāta vienā rastra slānī, notikuma gadu norādot kā pikseļa vērtību. Tas ikgadējā samazinājuma apjoma aprēķināšanu apgrūtina, tomēr nepadara par neiespējamu (skatīt komandu rindas zemāk, specifiski - funkciju darbiba). Līdz ar ik gadu zudušā koku vainagu seguma īpatsvara no analīzes telpas platības iegūšanu, tā pievienota analizētajai ģeometrijai kā atsevišķs lauks katram notikuma gadam. Tāpat kā iepriekš - lauku nosaukumi harmonizēti, tajos iestrādājot analīzes telpas raksturojumu, un rezultāti pievienoti 100 m režģa atbilstošajām šūnām.

Šis uzdevums ir visai smagnējs no skaitļošanas viedokļa. Tā veikšanai ir jāieplāno pietiekošs apjoms datorresursu. Iniciāli tas īstenots, izmantojot 68 GiB RAM un daļā uzdevuma, aprēķinus veicot 12 paralēlos procesos, vairākās diennaktīs. Potenciāli, to ir iespējams izpildīt ātrāk, pārskatot zonālās statistikas lietojumu saistībā ar Procesēšanas atvieglošana.

Code
# libs
if(!require(terra)) {install.packages("terra"); require(terra)}
if(!require(sf)) {install.packages("sf"); require(sf)}
if(!require(tidyverse)) {install.packages("tidyverse"); require(tidyverse)}
if(!require(arrow)) {install.packages("arrow"); require(arrow)}
if(!require(sfarrow)) {install.packages("sfarrow"); require(sfarrow)}
if(!require(exactextractr)){install.packages("exactextractr");require(exactextractr)}
if(!require(foreach)) {install.packages("foreach"); require(foreach)}
if(!require(doParallel)) {install.packages("doParallel"); require(doParallel)}


# režģis un buferi
lapas_tikls=data.frame(fails_c=list.files("./Templates/TemplateGrids/lapas/"))
lapas_tikls$cels_grid=paste0("./Templates/TemplateGrids/lapas/",lapas_tikls$fails_c)
lapas_tikls$lapa=substr(lapas_tikls$fails,10,13)
lapas_radiusi=data.frame(fails_r=list.files("./Templates/TemplateGridPoints/lapas/"))
lapas_radiusi$cels_radiuss=paste0("./Templates/TemplateGridPoints/lapas/",lapas_radiusi$fails_r)
lapas_radiusi=separate(lapas_radiusi,fails_r,
                       into=c("sakums","veids","lapa","beigas"),remove = FALSE)

lapas_r500=lapas_radiusi %>% 
  filter(veids=="r500") %>% 
  mutate(fails_r500=fails_r,
         cels_r500=cels_radiuss) %>% 
  dplyr::select(-sakums,-beigas,-fails_r,-cels_radiuss,-veids)

lapas_r1250=lapas_radiusi %>% 
  filter(veids=="r1250") %>% 
  mutate(fails_r1250=fails_r,
         cels_r1250=cels_radiuss) %>% 
  dplyr::select(-sakums,-beigas,-fails_r,-cels_radiuss,-veids)

lapas_r3000=lapas_radiusi %>% 
  filter(veids=="r3000") %>% 
  mutate(fails_r3000=fails_r,
         cels_r3000=cels_radiuss) %>% 
  filter(sakums=="pts100") %>% 
  dplyr::select(-sakums,-beigas,-fails_r,-cels_radiuss,-veids)

lapas=lapas_tikls %>% 
  left_join(lapas_r500) %>% 
  left_join(lapas_r1250) %>% 
  left_join(lapas_r3000)

# vides rastri
tcl=rast("./Rastri_10m/TreeCoverLossYear.tif")
tcl2=ifel(tcl<17,NA,tcl) # Zudumi tikai kopš 2017. gada
writeRaster(tcl2,"./VidesParmainas/KokuVainagiem.tif")

dw17=rast("./IevadesDati/DynamicWorld/DynamicWorld_Eksperimentam/DWE_mosaic/DW_2017_apraug.tif") 
dw18=rast("./IevadesDati/DynamicWorld/DynamicWorld_Eksperimentam/DWE_mosaic/DW_2018_apraug.tif")
dw19=rast("./IevadesDati/DynamicWorld/DynamicWorld_Eksperimentam/DWE_mosaic/DW_2019_apraug.tif")
dw20=rast("./IevadesDati/DynamicWorld/DynamicWorld_Eksperimentam/DWE_mosaic/DW_2020_apraug.tif")
dw21=rast("./IevadesDati/DynamicWorld/DynamicWorld_Eksperimentam/DWE_mosaic/DW_2021_apraug.tif")
dw22=rast("./IevadesDati/DynamicWorld/DynamicWorld_Eksperimentam/DWE_mosaic/DW_2022_apraug.tif")
dw23=rast("./IevadesDati/DynamicWorld/DynamicWorld_Eksperimentam/DWE_mosaic/DW_2023_apraug.tif")

chDWa=ifel(dw17==dw18,0,1) # Pārmaiņas no 2017. uz 2018. gadu
writeRaster(chDWa,"./VidesParmainas/chDWa.tif")
chDWb=ifel(dw18==dw19,0,1) # Pārmaiņas no 2018. uz 2019. gadu
writeRaster(chDWb,"./VidesParmainas/chDWb.tif")
chDWc=ifel(dw19==dw20,0,1) # Pārmaiņas no 2019. uz 2020. gadu
writeRaster(chDWc,"./VidesParmainas/chDWc.tif")
chDWd=ifel(dw20==dw21,0,1) # Pārmaiņas no 2020. uz 2021. gadu
writeRaster(chDWd,"./VidesParmainas/chDWd.tif")
chDWe=ifel(dw21==dw22,0,1) # Pārmaiņas no 2021. uz 2022. gadu
writeRaster(chDWe,"./VidesParmainas/chDWe.tif")
chDWf=ifel(dw22==dw23,0,1) # Pārmaiņas no 2022. uz 2023. gadu
writeRaster(chDWf,"./VidesParmainas/chDWf.tif")
plot(chDWf)

# pārmaiņu analīze
soli=levels(factor(lapas$lapa))

cl <- makeCluster(12) # jānorāda izmantojamo kodolu (fizisko) skaits
registerDoParallel(cl)

foreach(i = 1:length(soli)) %dopar% {
  library(terra)
  library(sf)
  library(tidyverse)
  library(arrow)
  library(sfarrow)
  library(exactextractr)
  
  # funkcija platībaīpatsvarā kurā noticis koku vainagu seguma zudums
  # noteikšanai katrā gadā (2017-2023)
  darbiba <- function(raster, vector) {
    exact_extract(raster, vector, function(value, coverage_fraction) {
      data.frame(value = value,
                 frac = coverage_fraction/sum(coverage_fraction,na.rm = TRUE)) %>%
        arrange(value) %>% 
        group_by(value) %>%
        summarize(freq = sum(frac, na.rm = TRUE), .groups = 'drop') %>%
        pivot_wider(names_from = 'value',
                    names_prefix = 'freq_',
                    values_from = 'freq')
    }) %>%
      mutate(across(starts_with('freq'), ~replace_na(., 0)))
  }
  
  # darba lapas
  solis=soli[i]
  celi=lapas %>% filter(lapa==solis)
  
  # poligonu ielasīšana
  sunas=st_read_parquet(celi$cels_grid)
  sunas=sunas %>% dplyr::select(id,yes,tks50km,X,Y)
  r500=st_read_parquet(celi$cels_r500)
  r500=r500 %>% dplyr::select(id,yes,tks50km,X,Y)
  r1250=st_read_parquet(celi$cels_r1250)
  r1250=r1250 %>% dplyr::select(id,yes,tks50km,X,Y)
  r3000=st_read_parquet(celi$cels_r3000)
  r3000=r3000 %>% dplyr::select(id,yes,tks50km,X,Y)
  
  # konkrētās darba lapas robežas
  telpa=st_as_sfc(st_bbox(r3000))
  telpa2=st_buffer(telpa,dist=1000)
  
  # koku vainagu seguma pārmaiņas
  tcl2=rast("./VidesParmainas/KokuVainagiem.tif")
  tcl_telpa=crop(tcl2,telpa2)
  
  loss_cell=darbiba(tcl_telpa, sunas)
  sunas=cbind(sunas,loss_cell)
  loss_r500=darbiba(tcl_telpa, r500)
  r500=cbind(r500,loss_r500)
  loss_r1250=darbiba(tcl_telpa, r1250)
  r1250=cbind(r1250,loss_r1250)
  loss_r3000=darbiba(tcl_telpa, r3000)
  r3000=cbind(r3000,loss_r3000)
  
  # Vides pārmaiņas Dynamic World datos
  chDWa=rast("./VidesParmainas/chDWa.tif")
  chDWb=rast("./VidesParmainas/chDWb.tif")
  chDWc=rast("./VidesParmainas/chDWc.tif")
  chDWd=rast("./VidesParmainas/chDWd.tif")
  chDWe=rast("./VidesParmainas/chDWe.tif")
  chDWf=rast("./VidesParmainas/chDWf.tif")
  
  names(chDWa)="DWchange_1718"
  names(chDWb)="DWchange_1819"
  names(chDWc)="DWchange_1920"
  names(chDWd)="DWchange_2021"
  names(chDWe)="DWchange_2122"
  names(chDWf)="DWchange_2223"
  
  mazs_chDWa=crop(chDWa,telpa2)
  mazs_chDWb=crop(chDWb,telpa2)
  mazs_chDWc=crop(chDWc,telpa2)
  mazs_chDWd=crop(chDWd,telpa2)
  mazs_chDWe=crop(chDWe,telpa2)
  mazs_chDWf=crop(chDWf,telpa2)
  
  mazas_DW=raster::stack(c(mazs_chDWa,mazs_chDWb,mazs_chDWc,
                           mazs_chDWd,mazs_chDWe,mazs_chDWf))
  
  sunam=exact_extract(mazas_DW,sunas,"mean")
  r500am=exact_extract(mazas_DW,r500,"mean")
  r1250am=exact_extract(mazas_DW,r1250,"mean")
  r3000am=exact_extract(mazas_DW,r3000,"mean")
  
  # iegūto rezultātu apvienošana
  sunas=cbind(sunas,sunam)
  r500=cbind(r500,r500am)
  r1250=cbind(r1250,r1250am)
  r3000=cbind(r3000,r3000am)
  
  # rezultējošo failu saglabāšana
  st_write_parquet(sunas,celi$cels_grid)
  st_write_parquet(r500,celi$cels_r500)
  st_write_parquet(r1250,celi$cels_r1250)
  st_write_parquet(r3000,celi$cels_r3000)
}
stopCluster(cl)

# darba lapu apvienošana
pirmas_sunas=sfarrow::st_read_parquet(lapas$cels_grid[lapas$lapa==soli[1]])
pirmas_r500=sfarrow::st_read_parquet(lapas$cels_r500[lapas$lapa==soli[1]])
pirmas_r1250=sfarrow::st_read_parquet(lapas$cels_r1250[lapas$lapa==soli[1]])
pirmas_r3000=sfarrow::st_read_parquet(lapas$cels_r3000[lapas$lapa==soli[1]])

dati_c=pirmas_sunas
dati_r500=pirmas_r500
dati_r1250=pirmas_r1250
dati_r3000=pirmas_r3000

for(i in 2:length(soli)){
  solis=soli[i]
  nakosas_sunas=sfarrow::st_read_parquet(lapas$cels_grid[lapas$lapa==solis])
  nakosas_r500=sfarrow::st_read_parquet(lapas$cels_r500[lapas$lapa==solis])
  nakosas_r1250=sfarrow::st_read_parquet(lapas$cels_r1250[lapas$lapa==solis])
  nakosas_r3000=sfarrow::st_read_parquet(lapas$cels_r3000[lapas$lapa==solis])
  
  dati_c=bind_rows(dati_c,nakosas_sunas)
  dati_r500=bind_rows(dati_r500,nakosas_sunas)
  dati_r1250=bind_rows(dati_r1250,nakosas_sunas)
  dati_r3000=bind_rows(dati_r3000,nakosas_sunas)
}

# apvienoto lapu saglabāšana
st_write_parquet(dati_c,"./VidesParmainas/VidesParmainas_suna.parquet")
st_write_parquet(dati_r500,"./VidesParmainas/VidesParmainas_r500.parquet")
st_write_parquet(dati_r1250,"./VidesParmainas/VidesParmainas_r1250.parquet")
st_write_parquet(dati_r3000,"./VidesParmainas/VidesParmainas_r3000.parquet")

# lauku nosaukumu harmonizēšana
dati_c2=dati_c %>% 
  mutate(cell_TCLNaN=freq_NaN,
         cell_TCL17=freq_17,
         cell_TCL18=freq_18,
         cell_TCL19=freq_19,
         cell_TCL20=freq_20,
         cell_TCL21=freq_21,
         cell_TCL22=freq_22,
         cell_TCL23=freq_23,
         cell_DWchange1718=mean.DWchange_1718,
         cell_DWchange1819=mean.DWchange_1819,
         cell_DWchange1920=mean.DWchange_1920,
         cell_DWchange2021=mean.DWchange_2021,
         cell_DWchange2122=mean.DWchange_2122,
         cell_DWchange2223=mean.DWchange_2223) %>% 
  dplyr::select(id,yes,tks50km,X,Y,
                cell_TCLNaN,cell_TCL17,cell_TCL18,cell_TCL19,cell_TCL20,
                cell_TCL21,cell_TCL22,cell_TCL23,
                cell_DWchange1718,cell_DWchange1819,cell_DWchange1920,
                cell_DWchange2021,cell_DWchange2122,cell_DWchange2223)

dati_r500a=data.frame(dati_r500) %>% 
  mutate(r500_TCLNaN=freq_NaN,
         r500_TCL17=freq_17,
         r500_TCL18=freq_18,
         r500_TCL19=freq_19,
         r500_TCL20=freq_20,
         r500_TCL21=freq_21,
         r500_TCL22=freq_22,
         r500_TCL23=freq_23,
         r500_DWchange1718=mean.DWchange_1718,
         r500_DWchange1819=mean.DWchange_1819,
         r500_DWchange1920=mean.DWchange_1920,
         r500_DWchange2021=mean.DWchange_2021,
         r500_DWchange2122=mean.DWchange_2122,
         r500_DWchange2223=mean.DWchange_2223) %>% 
  dplyr::select(id,
                r500_TCLNaN,r500_TCL17,r500_TCL18,r500_TCL19,r500_TCL20,
                r500_TCL21,r500_TCL22,r500_TCL23,
                r500_DWchange1718,r500_DWchange1819,r500_DWchange1920,
                r500_DWchange2021,r500_DWchange2122,r500_DWchange2223)

dati_r1250a=data.frame(dati_r1250) %>% 
  mutate(r1250_TCLNaN=freq_NaN,
         r1250_TCL17=freq_17,
         r1250_TCL18=freq_18,
         r1250_TCL19=freq_19,
         r1250_TCL20=freq_20,
         r1250_TCL21=freq_21,
         r1250_TCL22=freq_22,
         r1250_TCL23=freq_23,
         r1250_DWchange1718=mean.DWchange_1718,
         r1250_DWchange1819=mean.DWchange_1819,
         r1250_DWchange1920=mean.DWchange_1920,
         r1250_DWchange2021=mean.DWchange_2021,
         r1250_DWchange2122=mean.DWchange_2122,
         r1250_DWchange2223=mean.DWchange_2223) %>% 
  dplyr::select(id,
                r1250_TCLNaN,r1250_TCL17,r1250_TCL18,r1250_TCL19,r1250_TCL20,
                r1250_TCL21,r1250_TCL22,r1250_TCL23,
                r1250_DWchange1718,r1250_DWchange1819,r1250_DWchange1920,
                r1250_DWchange2021,r1250_DWchange2122,r1250_DWchange2223)


dati_r3000a=data.frame(dati_r3000) %>% 
  mutate(r3000_TCLNaN=freq_NaN,
         r3000_TCL17=freq_17,
         r3000_TCL18=freq_18,
         r3000_TCL19=freq_19,
         r3000_TCL20=freq_20,
         r3000_TCL21=freq_21,
         r3000_TCL22=freq_22,
         r3000_TCL23=freq_23,
         r3000_DWchange1718=mean.DWchange_1718,
         r3000_DWchange1819=mean.DWchange_1819,
         r3000_DWchange1920=mean.DWchange_1920,
         r3000_DWchange2021=mean.DWchange_2021,
         r3000_DWchange2122=mean.DWchange_2122,
         r3000_DWchange2223=mean.DWchange_2223) %>% 
  dplyr::select(id,
                r3000_TCLNaN,r3000_TCL17,r3000_TCL18,r3000_TCL19,r3000_TCL20,
                r3000_TCL21,r3000_TCL22,r3000_TCL23,
                r3000_DWchange1718,r3000_DWchange1819,r3000_DWchange1920,
                r3000_DWchange2021,r3000_DWchange2122,r3000_DWchange2223)

# visu rādiusu pievienošana režģim
vides_parmainas=dati_c2 %>% 
  left_join(dati_r500a,by=c("id")) %>% 
  left_join(dati_r1250a,by=c("id")) %>% 
  left_join(dati_r3000a,by=c("id"))

# rezultāta saglabāšana
st_write_parquet(vides_parmainas,"./VidesParmainas/VidesParmainas_visas.parquet")

References

Brown, C.F., Brumby, S.P., Guzder-Williams, B., Birch, T., Hyde, S.B., Mazzariello, J., Czerwinski, W., Pasquarella, V.J., Haertel, R., Ilyushchenko, S., Schwehr, K., Weisse, M., Stolle, F., Hanson, C., Guinan, O., Moore, R., Tait, A.M., 2022. Dynamic World, Near real-time global 10 m land use land cover mapping. Scientific Data 9, 251. https://doi.org/10.1038/s41597-022-01307-4
Gorelick, N., Hancher, M., Dixon, M., Ilyushchenko, S., Thau, D., Moore, R., 2017. Google Earth Engine: Planetary-scale geospatial analysis for everyone. Remote Sensing of Environment 202, 18–27. https://doi.org/10.1016/j.rse.2017.06.031
Hansen, M.C., Potapov, P.V., Moore, R., Hancher, M., Turubanova, S.A., Tyukavina, A., Thau, D., Stehman, S.V., Goetz, S.J., Loveland, T.R., Kommareddy, A., Egorov, A., Chini, L., Justice, C.O., Townshend, J.R.G., 2013. High-resolution Global maps of 21st-century forest cover change. Science 342, 850–853. https://doi.org/10.1126/science.1244693
Sabater, J.M., n.d. ERA5-Land hourly data from 1950 to present. Copernicus Climate Change Service (C3S) Climate Data Store (CDS). https://doi.org/10.24381/cds.e2161bac
Shimada, M., Itoh, T., Motooka, T., Watanabe, M., Shiraishi, T., Thapa, R., Lucas, R., 2013. New global forest/non-forest maps from ALOS PALSAR data (2007–2010). Remote Sensing of Environment 155, 13–31. https://doi.org/10.1016/j.rse.2014.04.014
Wang, L., Liu, H., 2006. An efficient method for identifying and filling surface depressions in digital elevation models for hydrologic analysis and modelling. International Journal of Geographical Information Science 20, 193–213. https://doi.org/10.1080/13658810500433453