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 objektihidro_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) kā 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:
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;
sagatavoti precizēti beznoteces depresiju un to dziļuma slāņi pēc plūsmas pārrāvumu iestrādāšanas;
papildus drošībai, pirmā soļa rezultātam atkārtota reljefa depresiju meklēšana un aizpildīšana (Wang and Liu, 2006);
trešā soļa rezultāts izmantots specifiskā sateces baseina noteikšanai, izmantojot d-infinity plūsmas dalīšanos;
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
unroad_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
unLVM_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
unhidro_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 ar410
;– 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 ar620
;– topogrāfiskās kartes slāņi
landus_A
klase “poligons_Krūmājs”, kura rezultāts kodēts ar620
;– 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 ar640
;– 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 ar640
;– 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 ar720
;– topogrāfiskās kartes slāņa
landus_A
klases “poligons_Nec_purvs_sūnājs”, “poligons_Sūnājs”, kuru rezultāts kodēts ar710
;– topogrāfiskās kartes slāņa
swamp_A
, kura rezultāts kodēts ar710
;– 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 ar800
;– 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 (klase330
), bet tie neatrodas lauku blokos, izņemot tās LAD klases, kuras iedalītas grupā (lauksSDM_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 (klase330
);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ā (lauksSDM_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ā (lauksSDM_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 (klase320
);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 klase620
un LAD kultūru kodi ir grupā (lauksSDM_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 klase420
un LAD kultūru kodi ir grupā (lauksSDM_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 klase310
;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 klase1
un LAD kultūru kodi ir grupā (lauksSDM_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 klase1
un LAD kultūru kodi ir grupā (lauksSDM_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 klase1
un LAD kultūru kodi ir grupā (lauksSDM_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 klase1
un LAD kultūru kodi nav grupās (lauksSDM_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 klase1
un LAD kultūru kodi ir grupā (lauksSDM_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 klase1
un LAD kultūru kodi ir grupā (lauksSDM_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:
kods
311
satur Aramzemes: labība vasarājikods
312
satur Aramzemes: labība ziemājikods
313
satur Aramzemes: vasaras rapsis un ripsis + kukurūza + pākšaugikods
314
satur Aramzemes: ziemas rapsis un ripsiskods
315
satur Aramzemes: vagu un rušināmkultūraskods
316
satur Aramzemes: citaskods
340
satur Augļudārzi LADkods
350
satur Krūmveida stādījumikods
320
satur Papuveskods
331
satur Zālāji LAD ne ppgkods
332
satur Zālāji ilglaicīgiekods
333
satur Zālāji ārpus lauku blokiem, pieskaitot bezatbalstaatlikušās vietas Latvijas teritorijā aizpildītas ar vērtību
1
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.
Vērtība
656
apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no600
līdz700
un Meža valsts reģistra Meža inventarizācijas failā laukāmt
norādītas vērtības: 17=viršu ārenis, 18=mētru ārenis, 22=viršu kūdrenis, 23=mētru kūdrenis;Vērtība
0
- pārējās Latvijas teritorijā esošās šūnas.
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.
Vērtība
654
apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no600
līdz700
un Meža valsts reģistra Meža inventarizācijas failā laukāmt
norādītas vērtības: 12=purvājs, 14=niedrājs;Vērtība
0
- pārējās Latvijas teritorijā esošās šūnas.
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.
Vērtība
651
apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no600
līdz700
un Meža valsts reģistra Meža inventarizācijas failā laukāmt
norādītas vērtības: 1=sils, 2=mētrājs, 3=lāns, 7=grīnis, 8=slapjais mētrājs;Vērtība
0
- pārējās Latvijas teritorijā esošās šūnas.
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.
Vērtība
652
apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no600
līdz700
un Meža valsts reģistra Meža inventarizācijas failā laukāmt
norādītas vērtības: 4=damaksnis, 9=slapjais damaksnis;Vērtība
0
- pārējās Latvijas teritorijā esošās šūnas.
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.
Vērtība
657
apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no600
līdz700
un Meža valsts reģistra Meža inventarizācijas failā laukāmt
norādītas vērtības: 19=šaurlapju ārenis, 21=platlapju ārenis, 24=šaurlapju kūdrenis, 25=platlapju kūdrenis;Vērtība
0
- pārējās Latvijas teritorijā esošās šūnas.
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.
Vērtība
655
apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no600
līdz700
un Meža valsts reģistra Meža inventarizācijas failā laukāmt
norādītas vērtības: 15=dumbrājs, 16=liekņa;Vērtība
0
- pārējās Latvijas teritorijā esošās šūnas.
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.
Vērtība
653
apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no600
līdz700
un Meža valsts reģistra Meža inventarizācijas failā laukāmt
norādītas vērtības: 5=vēris, 6=gārša, 10=slapjais vēris, 11=slapjā gārša;Vērtība
0
- pārējās Latvijas teritorijā esošās šūnas.
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ā no600
līdz700
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.
Vērtība
662
apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no600
līdz700
un– Meža valsts reģistra Meža inventarizācijas failā laukā
zkat
norādītas vērtības “10” un valdošās sugas augstums ir no 5 m un vecuma grupa ir “1”;– vienkāršās ainavas maskā ir reģistrēta
klase620
(tās veidošanu skatīt klašu grupas600
aprakstā un beigās pie robu aizpildīšanas);Vērtība
0
- pārējās Latvijas teritorijā esošās šūnas.
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.
Vērtība
663
apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no600
līdz700
un Meža valsts reģistra Meža inventarizācijas failā laukāzkat
norādītas vērtības “10” un valdošās sugas augstums ir no 5 m un (vecuma grupa ir “2” vai “3”);Vērtība
0
- pārējās Latvijas teritorijā esošās šūnas.
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.
Vērtība
664
apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no600
līdz700
un Meža valsts reģistra Meža inventarizācijas failā laukāzkat
norādītas vērtības “10” un valdošās sugas augstums ir no 5 m un (vecuma grupa ir “4” vai “5”);Vērtība
0
- pārējās Latvijas teritorijā esošās šūnas.
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ā no600
līdz700
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ā no600
līdz700
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ā no600
līdz700
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.
Vērtība
674
apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no600
līdz700
un Meža valsts reģistra Meža inventarizācijas failā laukāzkat
norādītas vērtības “10” un kokaudzes pirmā stāva krājas klasifikācija neatbilst secīgai Skujkoku, Šaurlapju un Platlapju kritēriju pielietošanai;Vērtība
0
- pārējās Latvijas teritorijā esošās šūnas.
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.
Vērtība
681
apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no600
līdz700
un Meža valsts reģistra Meža inventarizācijas failā laukāvgr
norādītas vērtības “1”, “2” vai “3” un kokaudzes pirmā stāva krājas klasifikācija atbilst
Skujkoku;Vērtība
0
- pārējās Latvijas teritorijā esošās šūnas.
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.
Vērtība
682
apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no600
līdz700
un Meža valsts reģistra Meža inventarizācijas failā laukāvgr
norādītas vērtības “4” vai “5” un kokaudzes pirmā stāva krājas klasifikācija atbilst
Skujkoku;Vērtība
0
- pārējās Latvijas teritorijā esošās šūnas.
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.
Vērtība
683
apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no600
līdz700
un Meža valsts reģistra Meža inventarizācijas failā laukāvgr
norādītas vērtības “1”, “2” vai “3” un kokaudzes pirmā stāva krājas klasifikācija atbilst
Šaurlapju;Vērtība
0
- pārējās Latvijas teritorijā esošās šūnas.
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.
Vērtība
684
apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no600
līdz700
un Meža valsts reģistra Meža inventarizācijas failā laukāvgr
norādītas vērtības “4” vai “5” un kokaudzes pirmā stāva krājas klasifikācija atbilst
Šaurlapju;Vērtība
0
- pārējās Latvijas teritorijā esošās šūnas.
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.
Vērtība
685
apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no600
līdz700
un Meža valsts reģistra Meža inventarizācijas failā laukāvgr
norādītas vērtības “1”, “2” vai “3” un kokaudzes pirmā stāva krājas klasifikācija atbilst
Platlapju;Vērtība
0
- pārējās Latvijas teritorijā esošās šūnas.
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.
Vērtība
686
apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no600
līdz700
un Meža valsts reģistra Meža inventarizācijas failā laukāvgr
norādītas vērtības “4” vai “5” un kokaudzes pirmā stāva krājas klasifikācija atbilst
Platlapju;Vērtība
0
- pārējās Latvijas teritorijā esošās šūnas.
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.
Vērtība
687
apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no600
līdz700
un Meža valsts reģistra Meža inventarizācijas failā laukāvgr
norādītas vērtības “1”, “2” vai “3” un kokaudzes pirmā stāva krājas klasifikācija atbilst
Jauktu koku;Vērtība
0
- pārējās Latvijas teritorijā esošās šūnas.
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.
Vērtība
688
apzīmē šūnas, kurās vienkāršās ainavas maskā ir reģistrētas klases diapazonā no600
līdz700
un Meža valsts reģistra Meža inventarizācijas failā laukāvgr
norādītas vērtības “4” vai “5” un kokaudzes pirmā stāva krājas klasifikācija atbilst
Jauktu koku;Vērtība
0
- pārējās Latvijas teritorijā esošās šūnas.
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:
kods
681
satur Skujkoku jaunaudzes, vidēja vecuma un briestaudzeskods
682
satur Skujkoku pieaugušās un pāraugušās audzeskods
683
satur Šaurlapju jaunaudzes, vidēja vecuma un briestaudzeskods
684
satur Šaurlapju pieaugušās un pāraugušās audzeskods
685
satur Platlapju jaunaudzes, vidēja vecuma un briestaudzeskods
686
satur Platlapju pieaugušās un pāraugušās audzeskods
687
satur Jauktu koku jaunaudzes, vidēja vecuma un briestaudzeskods
688
satur Jauktu koku pieaugušās un pāraugušās audzesizmantotas vienkāršās ainavas maskā ir reģistrētas klases diapazonā no
600
līdz700
;atlikušās Latvijas teritorijā esošās vietas aizpildītas ar vērtību
1
.
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 (klase640
);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ā no400
līdz500
;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 (klase200
);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ā no720
līdz730
(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ā no700
līdz800
;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 (klase800
);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 (klases630
un640
);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.
Vērtība
1
apzīmē šūnas, kurās vienkāršās ainavas slānī ir reģistrēti meži (klase630
), kas neatrodas Meža valsts reģistra Meža inventarizācijas failā laukāzkat
ar vērtību “10” atzīmētajās vietās;Vērtība
0
- pārējās Latvijas teritorijā esošās šūnas.
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 klase500
;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:
atlikušās Latvijas teritorijā esošās vietas aizpildītas ar vērtību
1
.
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:
vērtība
500
saglabāta vienkāršās ainavas slāņa klasei500
;vērtība
300
piešķirta vienkāršās ainavas slāņa klašu diapozonam [300
,400
);pārējās Latvijas teritorijā esošās šūnas aizpildītas ar
NA
.
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:
vērtība
500
saglabāta vienkāršās ainavas slāņa klasei500
;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
NA
.
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:
vērtība
310
saglabāta vienkāršās ainavas slāņa klasei310
;pārējās Latvijas teritorijā esošās šūnas aizpildītas ar
0
.
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:
vērtība
634
piešķirta vienkāršās ainavas slāņa klašu diapozonam [630
,640
];vērtība
1
piešķirta vienkāršās ainavas slāņa klašu diapozoniem:– [
300
,400
);– [
600
,620
];pārējās Latvijas teritorijā esošās šūnas aizpildītas ar
NA
.
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:
vērtība
2
piešķirta vienkāršās ainavas slāņa klasei200
;vērtība
1
piešķirta vienkāršās ainavas slāņa klašu diapozonam [720
,730
];pārējās Latvijas teritorijā esošās šūnas aizpildītas ar
NA
.
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:
vērtība
1
piešķirta Pieaugušās un pāraugušās mežaudzes klasei664
;pārējās Latvijas teritorijā esošās šūnas aizpildītas ar
0
.
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 klasei1
;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:
vērtība
2
piešķirta vienkāršās ainavas slāņa klasei200
;vērtība
300
piešķirta vienkāršās ainavas slāņa klašu diapozonam [300
,400
);pārējās Latvijas teritorijā esošās šūnas aizpildītas ar
NA
.
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:
vērtība
2
piešķirta vienkāršās ainavas slāņa klasei200
;vērtība
1
piešķirta vienkāršās ainavas slāņa klasei330
;pārējās Latvijas teritorijā esošās šūnas aizpildītas ar
NA
.
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:
vērtība
1
piešķirta vienkāršās ainavas slāņa klasei200
;pārējās Latvijas teritorijā esošās šūnas aizpildītas ar
0
.
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:
vērtība
1
piešķirta vienkāršās ainavas slāņa klasei100
;pārējās Latvijas teritorijā esošās šūnas aizpildītas ar
0
.
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ā
lauku Atbalsta Dienesta kultūru kodi;
lauku daudzveidībai klašu vērtības reizinātas ar 100;
vērtība
1
- pārējās Latvijas teritorijā esošās šūnas.
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š:
veidojas kā analīzes šūnas reizinājums ar veselu skaitli;
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;
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š:
veidojas kā analīzes šūnas reizinājums ar veselu skaitli;
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;
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š:
veidojas kā analīzes šūnas reizinājums ar veselu skaitli;
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;
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")