Puustotunnusten ennustaminen

Tuomas Yrttimaa

Perinteisesti metsän rakennetta kuvaavien puustotunnusten aluepohjaisessa mallinnuksessa hyödynnetään laserpiirteiden ja maastokoealatiedon välistä tilastollista riippuvuutta (ks. White ym. 2013). Tämä vaatii, että tarkastelualueelta kerätään ensin tarkka maastokoeala-aineisto, joka kattaa tarkastelualueen metsien rakenteellisen vaihtelun. Menetelmää hyödynnetään Suomessa jo operatiivisen metsävaratiedon tuottamiseen (https://www.metsakeskus.fi/metsatiedon-keruu). Mittavien maastotöiden sijaan metsikön rakennetta kuvaavat puustotunnukset voidaan ennustaa pelkän ALS-aineiston ja valtakunnallisten puustotunnusmallien avulla. Puustotunnusmalleissa metsikön latvuston rakennetta hilaruudussa kuvaavien ALS-piirteiden avulla voidaan ennustaa metsikön puustoa kuvaavia tunnuksia ilman maastokoeala-aineistoja. Puustotunnukset ennustetaan regressiomalleilla puuston pituutta ja tiheyttä kuvaavien piirteiden avulla. Suomessa metsän rakenteen kaukokartoitukseen kehitettyjä puustotunnusmalleja ovat Kotivuoren ym. (2016) laatimat valtakunnalliset mallit puuston tilavuudelle, valtapituudelle ja biomassalle, sekä Suvannon ym. (2005) mallit puuston tilavuudelle, pohjapinta-alalle ja runkoluvulle sekä pohjapinta-alalla painotetuille keskiläpimitalle ja -pituudelle.

Tätä projektia varten käytimme Kotivuoren ym. (2016) laatimia tilavuus-, valtapituus- ja biomassamalleja sekä Suvannon ym. (2005) laatimia tilavuus- ja pohjapinta-alamalleja ennustaessamme puustotunnukset mallimetsälön ja SMEAR:in alueille. Puustotunnusten ennustamista varten ALS-aineistosta lasketaan mallinnuksessa tarvittavat puustotunnuksia selittävät ALS-piirteet 16 m x 16 m hilaruutuihin. Tarkempi kuvaus piirteiden laskennasta: http://www.helsinki.fi/~korpela/FOR254/html/als-piirteet.html

# Piirteet Kotivuoren ym. (2016) malleihin
f(paste0("lascanopy -i clip.las -step 16 -keep_scan_angle -15 15 -avg -p 95 -first_only -odix _kotivuori_first -otif -etrs89 -utm 35north"))

f(paste0("lascanopy -i clip.las -step 16 -keep_scan_angle -15 15 -max -p 95 -last_only -odix _kotivuori_last -otif -etrs89 -utm 35north"))

# Piirteet Suvannon ym. (2005) malleihin
f(paste0("lascanopy -i clip.las -step 16 -p 5 20 50 60 80 -cov -avg -b 50 70 -keep_scan_angle -15 15 -first_only -cover_cutoff 2.00005 -fractions -height_cutoff 2.00001 -odix _suvanto_first -otif -etrs89 -utm 35north"))

f(paste0("lascanopy -i clip.las -step 16 -p 70 -cov -avg -std -b 70 -keep_scan_angle -15 15 -last_only -cover_cutoff 2.00005 -fractions -height_cutoff 2.00001 -odix _suvanto_last -otif -etrs89 -utm 35north"))

# Luetaan piirrerasterit, muodostetaan raster-stack, tarkastetaan rasteritasojen nimet.
# Esim. Raster-stack Kotivuoren mallin rastereihin:
(kotivuori <- stack(list.files(pattern="*kotivuori")))
substr(names(kotivuori), nchar(tunniste)+12, nchar(names(kotivuori))) -> n
names(kotivuori) <- n # set temp names for R environment
kotivuori

# Metsikkotunnusten laskenta gridille (valtapituus (m), tilavuus (m3/ha), pohjapinta-ala (m2/ha) ja biomassa (t/ha))
# Ks. tarkemmat tiedot malleista alkuperäisistä tutkimusjulkaisuista.
kotivuori[["Hdom"]] <- (3.1475 + 0.9855 * kotivuori[["first_p95"]])

kotivuori[["Vol"]] <- (0.7622 + 3.3582 * sqrt(kotivuori[["first_avg"]]) + 
                        0.0100 * kotivuori[["last_p95"]]^2)^2 +2.09721

kotivuori[["Bm"]] <- (-0.4247 + 0.1494 * kotivuori[["last_max"]] + 
                        2.5196 * sqrt(kotivuori[["first_avg"]]))^2 + 1.1161

suvanto[["vol"]] <- exp(0.788 + 0.704*log(suvanto[["first_p50"]]) + 1.090*sqrt(suvanto[["first_cov"]]) + 
                          0.735*log(suvanto[["last_avg"]]) + 0.267*log(suvanto[["last_cov"]]))+ 0.00781/2


suvanto[["ppa"]] <-(-0.795 + 1.329*log(suvanto[["first_avg"]]) + 1.342*suvanto[["first_cov"]] +
                      2.270*sqrt(suvanto[["last_cov"]]) - 1.773*(1/suvanto[["first_p05"]]))^2+ 0.02987

# Tallennetaan puustotunnusrasterit
writeRaster(kotivuori[["Hdom"]],"kotivuori_Hdom.tif"); writeRaster(kotivuori[["Vol"]],"kotivuori_Vol.tif")
writeRaster(kotivuori[["Bm"]],"kotivuori_Bm.tif"); writeRaster(Suvanto[["Vol"]],"Suvanto_Vol.tif")
writeRaster(Suvanto[["G"]],"Suvanto_G.tif")

# Plotataan lopuksi kartta puuston runkotilavuudesta mallimetsälön alueella
mycols <- rasterTheme(region=colorRampPalette(brewer.pal(9,'Greens'))(100))
# Kotivuori ym. (2016)
p1<-levelplot(kotivuori[["Vol"]], margin = FALSE, main = "Tilavuus m3/ha 16 x 16m (Kotivuori ym. 2016)", par.settings = mycols, zlim = c(0,100)) + layer(sp.lines(vjsuo_rajat, lwd=0.8, col='black'))
# Pituus
p2<-levelplot(Suvanto[["Vol"]], margin = FALSE, main = "Tilavuus m3/ha 16 x 16m (Suvanto ym. 2004)", par.settings = mycols, zlim = c(0,35)) + layer(sp.lines(vjsuo_rajat, lwd=0.8, col='black'))
# Tulostetaan kartat vierekkäin
grid.arrange(p1, p2, ncol=2)

Kuva 1. Kartat puuston tilavuusestimaateista 16 m hilassa mallimetsälön alueella. Kotivuoren ym. (2016) tilavuusmalli on valtakunnallinen, ja siinä tilavuusestimaatin RMSE oli metsikön maantieteellisestä sijainnista riippuen 23,0-32,9 % Suvannon ym. (2004) mallissa RMSE oli 19,9 % koealatasolla, mutta mallinnusaineisto ei ollut maantieteellisesti kattava (kerätty Pohjois-Savosta).

Rasterimuotoinen hila-aineisto voidaan viedä edelleen kuviotasolle. Tässä tarvitaan kuviorajat sisältävä shapefile sekä puustotunnusrasterit.Esimerkki mallimetsälön alueella puuston keskitilavuuden laskemiseksi:

# Luetaan kuviorajat shapefilena
kuviot<-readOGR("kuviot.shp")

# Lasketaan kuviotiedot kuvioille osuneiden rasteriarvojen perusteella.
# Tallennetaan kuviotiedot suoraan shapefilen ominaisuustiedoiksi
tilavuuslista<-extract(raster("Kotivuori_Vol.tif"),kuviot)
i<-0
for (i in 1:nrow(kuviot)){kuviot@data$vol_als[i]<-mean(tilavuuslista[[i]])}

# Kuviotietojen tallennus takaisin shapefileksi
writeOGR(kuviot_asema,dsn="kuviotiedot",layer="kuviotiedot", driver = "ESRI Shapefile")

# Kuviokartta, varitys kuviotietojen perusteella
colordata<-kuviot@data$vol_als
plot(kuviot,border = "red",lwd = 1,col = gray((max(colordata)-colordata)/(max(colordata)-min(colordata))))

Kuva 2. Puustotunnukset hilasta kuviolle: esimerkki keskitilavuuden vaihtelusta kuviotasolla, tummempi väri kuvaa suurempaa tilavuutta

Puuston paikkatietoanalyysit

Kyselyt

Tuomas Yrttimaa

ALS- piirre- ja puustotunnusrastereiden avulla voidaan tarkasteltavalta alueelta tehdä erilaisia paikkatietoanalyysejä. Yksinkertaisimmillaan analyysi voidaan toteuttaa ns. kyselynä.Tällöin muodostetaan binaarirastereita, joissa hilaruutu saa arvon 1, jos se toteuttaa halutun ehdon, ja arvon 0, jos ehto ei hilaruudussa toteudu. Näin saadaan helposti kartoitettua esimerkiksi järeät, yli 30 m puustot sekä nuoremmat, vielä kasvatusvaiheessa olevat metsät, joissa tilavuus on alle 100 m3/ha:

# Yli 30 m puut?
yli30<-(raster("vjsuo_2016_16m_p95.tif") > 30)
mycols <- rasterTheme(region=colorRampPalette(brewer.pal(6,'Greens'))(100))
p1<-levelplot(yli30, margin = FALSE, colorkey=F,main = "Yli 30 m puusto", par.settings = mycols) +
  layer(sp.lines(vjsuo_rajat, lwd=0.8, col='darkgray'))

# tilavuus alle 100 m3/ha?
alle100<-(raster("vjsuo_2016_16m_Vol.tif") < 100)
p2<-levelplot(alle100, margin = FALSE, colorkey=F,main = "Tilavuus alle 100 m3/ha", par.settings = mycols) +
  layer(sp.lines(vjsuo_rajat, lwd=0.8, col='darkgray'))

grid.arrange(p1, p2, ncol=2)

Avohakkuut

Henri Riihimäki

Avohakkuuala-analyysi tehtiin laserkeilausaikasarjasta. R-ohjelmistossa rakennettiin funktio, joka käyttää kahden ajankohdan laserkeilausaineistosta laskettuja latvuspeittävyyksiä, sekä ensimmäisen ajankohdan p95-piirrettä. Käyttäjä antaa funktiolle haluamansa raja-arvot latvuspeittävyyden muutokselle sekä minimikorkeuden, mitä puuston on täytynyt olla ennen hakkuuta (p95). Analyysi tehtiin asettamalla raja-arvoiksi 70% latvuspeittävyysmuutos, sekä minimikorkeudeksi 8 m. Koska aineistoihin sisältyy luontaista hajontaa (16 m ruutujen sisällä), täytyy hilaan ajaa moodi-filtteri. Tällöin kuvioiden sisäinen vaihtelu vähenee merkittävästi. Tämä poistaa satunnaisuutta huomattavasti, ja antaa lopputuloksena yhtenäisempiä, todenmukaisempia kuvioita. Samasta syystä annettu minimiarvo pidettiin matalana, sillä yksittäiset hilaruudut voivat olla varsin matalia myös avohakkuualoilla. Funktio antaa lopputuloksena NA niille hilaruuduille, joissa muutosta ei ole, ja keskimääräisen hakkuuvuoden niille ruuduille jossa muutos on tapahtunut. (esim. t1 = 2010, t2 = 2012; tällöin havaitun muutoksen pikseli saa arvoksi 2011). Lopuksi aikasarjarasteri (R:n raster stack -objekti) summataan, jolloin hakatut ruudut saavat keskimääräisen hakkuuvuoden arvokseen ja muut hilaruudut NA. Lopuksi tarkastetaan vielä, että samaa ruutua ei ole hakattu kahdesta (rasterin arvo > 2015), ja jos on, annetaan näille ruuduille arvoksi ensimmäinen hakkuuvuosi. Analyysissä havaittiin muutama yksittäinen hilaruutu missä näin oli tapahtunut.

# Detect clear cut areas from multitemporal LiDAR data
# Data processed with ALS-piirteet_v2.R script
# script by Henri Riihimaki, 09.05.2018

# Load libraries
library(raster)
library(sp)
library(rgdal)
#library(colorRamps)

# Clear workspace
rm(list = ls(all = T))

# load boundary shapefile
vjsuo <- readOGR("vjsuo_rajat.shp")
vjsuo

# Time series
# 2011 leaf-off, 2004 has no data areas
yrs <- c(2006,2007,2010,2012, 2013, 2015, 2016)

# create list for rasters
list() -> fp95 -> cov
for ( y in yrs) { 
  fp95[[paste0("fp95_",y)]] <- raster(paste0("vjsuo", y,"/vjsuo",y,"_kotivuori_first_p95.tif"), 
                                      proj4string = CRS("+proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs"))
  cov[[paste0("cov_",y)]] <- raster(paste0("vjsuo", y,"/vjsuo",y,"_suvanto_first_cov.tif"),  
                                    proj4string = CRS("+proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs"))
  print(paste0("Year", y ," ok!"))
}
# stack rasters
cov <- stack(cov)
fp95 <- stack(fp95)
s1 <- stack(cov, fp95)

# Function for detecting clearcuts
als_log <- function(cover_t1, cover_t2,  first_only_p95_t1,cover_change_threshold, t1_tree_height_threshold,code) {
   # cover change between years / original cover. Mark as logged if exceeds threshold and original tree height was above given threshold
   # obs: use low(ish) treeheight to include variability within a stand
   x1 <- ( (cover_t2 - cover_t1) / cover_t1 ) < cover_change_threshold & first_only_p95_t1 > t1_tree_height_threshold
   # use focal mode function to create consist areas and mask random cells (i.e. small storm damages)
   x2<- focal(x1, w=matrix(1,3,3), fun=modal)
   x2[x2 == 1] <- code
   return(x2)
}

par(mai=rep(0.25, 4), mfrow=c(2,3))
logged <- list()
plot( logged[[1]] <- als_log(s1[["cov_2015"]],s1[["cov_2016"]],s1[["fp95_2015"]], -0.7 , 8, 2015  ) , main = "logged between 2015-2016" )
plot( logged[[2]] <- als_log(s1[["cov_2013"]],s1[["cov_2015"]],s1[["fp95_2013"]], -0.7 , 8, 2014  ) , main = "logged between 2013-2015")
plot( logged[[3]] <- als_log(s1[["cov_2012"]],s1[["cov_2013"]],s1[["fp95_2012"]], -0.7 , 8, 2012  ) , main = "logged between 2012-2013")
plot( logged[[4]] <- als_log(s1[["cov_2010"]],s1[["cov_2012"]],s1[["fp95_2010"]], -0.7 , 8, 2011  ) , main = "logged between 2010-2012")
plot( logged[[5]] <- als_log(s1[["cov_2007"]],s1[["cov_2010"]],s1[["fp95_2007"]], -0.7 , 8, 2008  ) , main = "logged between 2007-2010")
plot( logged[[6]] <- als_log(s1[["cov_2006"]],s1[["cov_2007"]],s1[["fp95_2006"]], -0.7 , 8, 2006  ) , main = "logged between 2006-2007")

tmp<- stack(logged)

sum(tmp) -> logged # value as approx. logging year
logged[logged== 0] <- NA 
# Multiple loggins?
logged[logged > 2015] <- 2015 # set value for such cases
# for further implementation, make this part smarter... 

# Check result
par(mfrow=c(1,1))
plot(logged);plot(vjsuo, add = T)

# write results:
writeRaster(logged, "avohakkuut_2006_2015.tif", datatype='INT2U', overwrite = T)

Lehtipuusto

Henri Riihimäki

Lehtipuuanalyysi tehtiin hyödyntämällä leaf-off ja leaf-on laserkeilausaineistoja vuosilta 2011 (off) ja 2013 (on). Keilausparametrit ovat samat (geometria, keilain jne.), jolloin periaatteessa pitäisi nähdä vain luonnossa tapahtunut muutos.Ensimmäinen lehtipuuluokitus tehtiin käyttäen seuraavia kriteereitä: Latvuspeitto on yli 15% suurempi leaf-on keilauksen aikana. Suhteellinen pituusmuutos on ollut alle 25%. *Ruutu ei ole kasvanut minimikriteerin yli tarkastelujakson aikana (tästä seuraisi latvuspeiton välitön nousu, ja mahdollinen virheluokitus)

Toinen lehtipuuluokitus tehtiin hyödyntämällä vääräväri-ilmakuvan CIR-kanavaa. GIS-ohjelmistossa tarkasteltiin lehtipuille tyypillistä heijastusarvoa (DN) ja valittiin karkea kynnysarvo jonka ylittävät arvot luokiteltiin lehtipuiksi. Tätä ennen aineisto keskiarvoistettiin 16 metrin hilaruutuun, alkuperäisestä 30 cm resoluutiosta. Tämä tehtiin kaksivaiheisesti, sillä 0.3 m hilaa ei voida aggregoida kokonaisluvulla 16 m hilaan. Ensiksi aineisto keskiarvoistettiin 8.1 metrin ruutukokoon. Tämän jälkeen käytettiin bilineaarista interpolointia, jonka avulla sävyarvo laskettiin 16 m hilaan.

Lehtipuuluokituksen raja-arvona käytettiin DN > 150. Lisäksi puuston minimikorkeudeksi (p95, v. 2016) asetettiin 8 m, sillä nuorten taimikoiden aluskasvillisuus sekoittaa luokituksen herkästi. Molemmat analyysit vaikuttavat varsin hyviltä, joskin aivan kaikkia ruutuja kumpikaan niistä ei löydä.

library(raster)
library(sp)
library(rgdal)
library(RColorBrewer)

# leaf-off (2011), leaf-on (2013), most recent 2016
yrs <- c(2011,2013, 2016)

# Read data
# shp
vjsuo <- readOGR("vjsuo_rajat.shp")
vjsuo

# load lascanopy results from results folder:
setwd("F:/FOR254/Data/results")

# ALS 
cov <- list() -> vol -> fp95 -> hdom
for ( y in yrs) { 
  cov[[paste0("cov_",y)]] <- raster(paste0("vjsuo", y,"/vjsuo",y,"_suvanto_first_cov.tif"),  proj4string = CRS("+proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs"))
  fp95[[paste0("fp95_",y)]] <- raster(paste0("vjsuo", y,"/vjsuo",y,"_kotivuori_first_p95.tif"), proj4string = CRS("+proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs"))
  hdom[[paste0("hdom_",y)]] <- raster(paste0("vjsuo", y,"/vjsuo",y,"_kotivuori_Hdom.tif"),  proj4string = CRS("+proj=utm +zone=35 +ellps=GRS80 +units=m +no_defs"))
}
#  make stacks
cov <- stack(cov)
fp95 <- stack(fp95)
hdom <- stack(hdom) # not used

# aerial imagery
cir_2015 <-  stack("F:/FOR254/Deciduous/vjsuo_2015_30cm_CIR_copy.tif")# stack("F:/FOR254/Data/Imagery/georef/vjsuo_2015_30cm_CIR/vjsuo_2015_30cm_CIR.tif")
cir_2015
b1 <- aggregate(cir_2015[[1]], fact = 8/0.3)
b2 <- aggregate(cir_2015[[2]], fact = 8/0.3)
b3 <- aggregate(cir_2015[[3]], fact = 8/0.3)

tmp1 <- stack(b1,b2,b3)

# resample to same grid
tmp2 <- resample(tmp1, cov[["cov_2013"]], method="bilinear")
cir_2015_16m <- mask(tmp2, cov[["cov_2013"]])
writeRaster(cir_2015_16m, "cir_2015_16m_bilinear_resample.tif", overwrite = T)

# CIR threshold
b1_over_140 <- cir_2015_16m[[1]] > 140

# ALS changes 2011-2013
plot(growth_over2m <- under_2m_2011-under_2m_2013 == 1)

## fp95
fp95_change <- fp95[["fp95_2013"]]-fp95[["fp95_2011"]]
fp95_rel_change <- (fp95[["fp95_2013"]]-fp95[["fp95_2011"]])/fp95[["fp95_2013"]]

# Plot
par(mfrow=c(1,3))
plot(fp95_change, zlim = c (-3,3), main = "absolute change", col = colorRampPalette(brewer.pal(9,"RdYlGn"))(10))
plot(fp95_rel_change, zlim = c(-1,1), main = "relative change (to 2013", col = colorRampPalette(brewer.pal(9,"RdYlGn"))(10)) 
plot(fp95_rel_change < 0.1, main = "relative change < 0.1 in comparison to 2013")

## cov
cov_change <- cov[["cov_2013"]]-cov[["cov_2011"]]
par(mfrow=c(1,2))
plot(cov_change, col = colorRampPalette(brewer.pal(9,"RdYlGn"))(10))

s1 <- stack(cov_change, fp95_rel_change, growth_over2m)
names(s1) <- c("cov_change", "fp95_rel_change", "growth_over2m")

# ALS
dec1 <- s1[["cov_change"]] > 0.15 &
  s1[["fp95_rel_change"]] < 0.25 &
  s1[["fp95_rel_change"]] > -0.25 &
  s1[["growth_over2m"]] == 0 # cover cutoff is at two meters (lascanopy), mask out pixels that have grown over the threshold between the flights

# CIR
s2 <- stack(fp95[["fp95_2016"]], cir_2015_16m[[1]], growth_over2m)
names(s2) <- c("fp95", "b1","growth_over2m")

dec2 <- s2[["fp95"]] > 8 &
  s2[["b1"]] > 150

plot(dec1)
plot(dec2)

writeRaster(dec1, "deciduous_als.tif", datatype='INT1U', overwrite = T)
writeRaster(dec2, "deciduous_cir.tif", datatype='INT1U', overwrite = T)

DEM-analyysi

Henri Riihimäki

Laserkeilaus tuottaa tietoa paitsi puustosta, myös maanpinnanmuodoista. DEM-analyysissä käytettiin vuoden 2015 laserkeilauksesta tuotettua 1 m digitaalista korkeusmallia. Korkeusmalli muutettiin aluksi .bin -tiedostomuodosta geotiff-tiedostomuotoon, jonka jälkeen DEM tuotiin SAGA GIS -ohjelmistoon (v. 2.1.2.). SAGA GIS on avoimen lähdekoodin ohjelmisto, joka on erityisen hyvä topografisiin analyyseihin. SAGA GIS-ohjelmistossa voidaan helposti laskea erinäisiä topografisia muuttujia, jotka tuottavat hyödyllistä tietoa metsänomistajalla, tai esimerkiksi puunkorjuun suunnitteluun. Pohja-aineistona käytettiin 1 m resoluution korkeusmallia (DEM), joka aggregoitiin muutamaan eri resoluutioon (4 ja 16 m). Resoluutio vaikuttaa ratkaisevasti saataviin tuloksiin. Lopulliseen aineistoon laskettiin rinteen kaltevuuden keskeisiä tunnuslukuja 4 metrin korkeusmallista, 16 metrin hilan sisällä. Esimerkiksi kaltevuuden vaihteluväli ja maksimi 16 m hilaruudun sisällä. Mikäli 16 m ruutua käytettäisiin suoraan, jäisi informaatio pienipiirteisestä topografisesta vaihtelusta huomaamatta (keskiarvoistuminen), mikä saattaa olla keskeistä esim. maaston kuljettavuuden kannalta. Jyrkännetietoa voidaan käyttää myös esimerkiksi metsälain erityisen arvokkaiden elintympäristöjen paikantamiseen (kalliojyrkänteet, kurut).

Lisäksi SAGA GIS -ohjelmistossa laskettiin topografinen positio-indeksi (TPI). Indeksi kuvaa kunkin pikselin suhteellista sijaintia annetulla säteellä. TPI laskettiin kahdella säteellä 50 ja 250 m. Näin saadaan tarkasteltua sijaintia kahdella eri mittakaavalla. Topografinen positio vaikuttaa osaltaan muun muassa tuulituhoriskiin. Negatiiviset arvot kuvaavat sijainteja, jotka ovat ympäristöön alempana (tuulelta suojassa).

GIS-analyysin lopputuotteet

Henri Riihimäki

Lopputuotteena tuotettiin metsälön alueelta 16 m hila polygon-muodossa (ESRI shapefile), johon koottiin kasatusti kaikki lasketut ALS-rasterit, sekä laserkeilauspiirteiden ja Suvannon (2005) sekä Kotivuoren (2016) malleilla tuotettut rasterit. Rasteritieto liitettiin polygoneihin 1. luomalla päällekkäinen hila rastereiden kanssa, sekä hilaruuduille keskipiste. Tämän jälkeen ArcMap 10.3 Extract multivalues to polygon -työkalulla haettiin rasteritieto hilakeskipisteille, jotka liitettiin ID-numeron avulla hilatietoon. Rinteen kaltevuustieto (slope) laskettiin 4 metrin rastereista. Kaltevuusanalyysi tehtiin SAGA GIS v. 2.1.2 ohjelmassa. 16 metrin hilaan laskettiin minimi (min), maksimi (max), vaihteluväli (range), ja keskihajonta (std) kaltevuusarvot, jotka kuvaavat esimerkiksi hilaruudun kulkukelpoisuutta. Aineisto on esillä Paikkatietoikkunassa sekä ladattavissa OneDrive-kansiosta.

ESRI shapefile löytyy vuorijarvi_data.zip kansiosta kokonaisuudessaan. Hilaan on rajattu ruudut, jotka esiintyvät rajojen sisälle.

Muuttuja: Kuvaus:
slope_min 4 m kaltevuusrasterin minimiarvo 16 m hilaruudussa
slope_max 4 m kaltevuusrasterin maksimiarvo 16 m hilaruudussa
slope_range 4 m kaltevuusrasterin vaihteluväli 16 m hilaruudussa
slope_mean 4 m kaltevuusrasterin keskiarvo 16 m hilaruudussa
DirInsMa31 Auringon potentiaalinen suora säteily maaliskuun 31 päivä.
TPI50m_16m Topographic Position Index, 50 m säde (pikselin sijainti vrt. ympäröivä maasto) * Negatiivinen arvo = alempana ympäristöä, Positiivinen = ylempänä ympäristöä. Arvot metrejä.
TPI250m_16m Topographic Position Index, 250 m säde (pikselin sijainti vrt. ympäröivä maasto)
p95 Ensimmäisten laserkaikujen (first return) 95 persentiili
ppa Pohjapinta-ala, laskettu Suvannon et al. 2005 mallilla.
s_vol Tilavuus, laskettu Suvannon et al. 2005 mallilla.
k_vol Tilavuus, laskettu Kotivuoren et al. 2016 mallilla.
cov Latvuspeittävyys; 1. kaiut yli 2 m / kaikki 1. kaiut 16 m hilassa
bm Biomassa, laskettu Kotivuoren et al. 2016 mallilla
dec_als Lehtipuuluokitus leaf-on & leaf-off keilauksista laskettuna (vuodet 2011, 2013)
dec_cir Lehtipuuluokitus, perustuu 2015 CIR-ilmakuvasta tehtyyn kynnysarvoluokitukseen.
clearcut Avohakkuuvuosi (arvio) perustuen laserkeilausaikasarjan muutosanalyysiin
peatland Turvemaaluokitus perustuen maastotietokannan kohteisiin (35411, 35412, 354212).
road Osuuko hila tiehen
road_dist Etäisyys tiestä hilaruutuun

Binääriset luokitukset: 1 = kyllä, 0 = ei.

Vuosi nimen perässä kertoo minkä vuoden laserkeilausaineistosta muuttuja on laskettu.

HUOM. Eri vuosien keilaukset eivät ole keskenään täysin vertailukelpoisia! Keilauksia on toteutettu eri keilaimilla ja keilausgeometria ja ajankohta vaihtelee. Aikasarjavertailua voidaan siis pitää suuntaa-antavana. Keilausten dokumentointi: http://www.helsinki.fi/%7Ekorpela/HYDE_REF/ http://www.helsinki.fi/%7Ekorpela/HYDE_REF/English_documentation.pdf

Viitteet

Kotivuori, E., Korhonen, L. and Packalen, P., 2016. Nationwide airborne laser scanning based models for volume, biomass and dominant height in Finland. Silva Fennica, 50(4), p.28

Suvanto, A., Maltamo, M., Packalén, P. & Kangas, J. 2005. Kuviokohtaisten puustotunnusten ennustaminen laserkeilauksella. Metsätieteen aikakauskirja 4/2005: 413-428.

White, J.C., Wulder, M.A., Varhola, A., Vastaranta, M., Coops, N.C., Cook, B.D., Pitt, D. and Woods, M., 2013. A best practices guide for generating forest inventory attributes from airborne laser scanning data using an area-based approach. The Forestry Chronicle, 89(6), pp.722-723.