Denne analysen ble først gjort av Simon Jakobsson, 4 April 2021, i forbindelse med rapporten for skog. Det er noen ting ved den analysen som gjør at jeg har valgt å gjøre de på nytt. Det er blandt annet bedre data tilgjengelig nå. Simon har også regnet ut INON-områder per kommune. Det er en tung opperasjon som ikke er nødvendig for denne nasjonale analysen. Til slutt, det ble lagt på en tilfeldig usikkerhet på 0.05sd, noe jeg ikke syntes blir riktig.
inon2018 <- sf::st_read('P:/41201042_okologisk_tilstand_fastlandsnorge_2020_dataanaly/fjell2021/data/INON/status_2018/statusPolygon.shp')
## Reading layer `statusPolygon' from data source
## `P:\41201042_okologisk_tilstand_fastlandsnorge_2020_dataanaly\fjell2021\data\INON\status_2018\statusPolygon.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 68203 features and 3 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: -77241.87 ymin: 6448384 xmax: 1115026 ymax: 7939974
## Projected CRS: ETRS89 / UTM zone 33N
inon2013 <- sf::st_read('P:/41201042_okologisk_tilstand_fastlandsnorge_2020_dataanaly/fjell2021/data/INON/status_2013/status_2013Polygon.shp')
## Reading layer `status_2013Polygon' from data source
## `P:\41201042_okologisk_tilstand_fastlandsnorge_2020_dataanaly\fjell2021\data\INON\status_2013\status_2013Polygon.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 68398 features and 3 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: -77241.9 ymin: 6448384 xmax: 1115027 ymax: 7939975
## Projected CRS: ETRS89 / UTM zone 33N
inon2008 <- sf::st_read('P:/41201042_okologisk_tilstand_fastlandsnorge_2020_dataanaly/fjell2021/data/INON/status_2008/status_2008Polygon.shp')
## Reading layer `status_2008Polygon' from data source
## `P:\41201042_okologisk_tilstand_fastlandsnorge_2020_dataanaly\fjell2021\data\INON\status_2008\status_2008Polygon.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 69003 features and 3 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: -77241.9 ymin: 6448384 xmax: 1115027 ymax: 7939975
## Projected CRS: ETRS89 / UTM zone 33N
inon1988 <- sf::st_read('P:/41201042_okologisk_tilstand_fastlandsnorge_2020_dataanaly/fjell2021/data/INON/status_1988/status_1988Polygon.shp')
## Reading layer `status_1988Polygon' from data source
## `P:\41201042_okologisk_tilstand_fastlandsnorge_2020_dataanaly\fjell2021\data\INON\status_1988\status_1988Polygon.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 70487 features and 3 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: -77241.87 ymin: 6448384 xmax: 1115026 ymax: 7939974
## Projected CRS: ETRS89 / UTM zone 33N
The polygons are not complete…
inon2018 <- st_make_valid(inon2018)
inon2008 <- st_make_valid(inon2008)
inon2013 <- st_make_valid(inon2013)
inon1988 <- st_make_valid(inon1988)
There are three categories.
table(inon2018$vsone)
##
## 1 2 v
## 13611 37137 17455
VSONE1 is 3-5 km from infrastruktur. VSONE2 is 1-3 km away. And ‘V’ is >5km away. I’m not sure if the polygons overlap or not…
nor <- readRDS('../data/norway_outline.RDS')%>%
st_as_sf()%>%
st_transform(crs=crs(inon2018))
temp <- inon2018[inon2018$vsone=="2",]
par(mfrow=c(1,2))
plot(nor$geometry, xlim=c(5000, 10000),
ylim=c(6880000, 6885000),
axes=T, main="all polygons")
plot(inon2018$geometry, add=T, col = "red")
plot(nor$geometry, xlim=c(5000, 10000),
ylim=c(6880000, 6885000),
axes=T, main = "just sone 2")
plot(temp$geometry, add=T, col = "blue")
The sones do not overlap so I COULD dissolve them to reduce file size (se below for how this could be done), but this operation is so heavy it’s easier to just rasterize (fasterize) at this stage
crs(inon2018)
## CRS arguments:
## +proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m
## +no_defs
inon2018dis <- inon2018 %>%
st_buffer(0.5) %>% # make a buffer of half a meter around all parts (to avoid slivers). CRS is in UTM (ie meters)
st_union() %>% # unite to a geometry object
st_sf() %>% # make the geometry a data frame object
mutate(centrum = T) # return back the data value
Getting the maintain raster
fjell_low <- raster("../output/fjell_1km.tif")
## Warning in showSRID(SRS_string, format = "PROJ", multiline = "NO", prefer_proj
## = prefer_proj): Discarded datum Unknown_based_on_GRS80_ellipsoid in Proj4
## definition
fjell_low_star <- st_as_stars(fjell_low)
fjell_low_star[fjell_low_star[]==0] <- NA
hist(fjell_low_star)
Histogrammet viser at fjellmasken på 1km oppløsning inneholder en del celler med <100% fjell. Vi kutter ut celler mde <50% fjell
fjell_low[fjell_low<0.5] <- 0
fjell_low[fjell_low>=0.5] <- 1
hist(fjell_low)
inon2018r <- fasterize(inon2018, fjell_low)
inon2008r <- fasterize(inon2008, fjell_low)
inon2013r <- fasterize(inon2013, fjell_low)
inon1988r <- fasterize(inon1988, fjell_low)
par(mfrow=c(1,2))
plot(fjell_low, main="fjellmasken")
plot(inon2018r, main="INON")
summary(inon2018r)
## layer
## Min. 1
## 1st Qu. 1
## Median 1
## 3rd Qu. 1
## Max. 1
## NA's 2482689
Alle INON-celler er 1, alle andre er NA. Jeg må sette NA lik null.
inon2018r[is.na(inon2018r)] <- 0
inon2013r[is.na(inon2013r)] <- 0
inon2008r[is.na(inon2008r)] <- 0
inon1988r[is.na(inon1988r)] <- 0
summary(inon2018r)
## layer
## Min. 0
## 1st Qu. 0
## Median 0
## 3rd Qu. 0
## Max. 1
## NA's 0
Så setter jeg alle celler som ikke er i fjell som NA
inon2018r[fjell_low!=1] <- NA
inon2013r[fjell_low!=1] <- NA
inon2008r[fjell_low!=1] <- NA
inon1988r[fjell_low!=1] <- NA
summary(inon2018r)
## layer
## Min. 0
## 1st Qu. 1
## Median 1
## 3rd Qu. 1
## Max. 1
## NA's 2498463
par(mfrow=c(2,2))
hist(inon1988r)
hist(inon2008r)
hist(inon2013r)
hist(inon2018r)
Så henter jeg inn regionene.
reg <- st_read("P:/41201042_okologisk_tilstand_fastlandsnorge_2020_dataanaly/FINAL/Raw_data/Geografisk_oppdeling/regioner_2010/regNorway_wgs84 - MERGED.shp") %>%
st_transform(crs=crs(inon2018))
## Reading layer `regNorway_wgs84 - MERGED' from data source
## `P:\41201042_okologisk_tilstand_fastlandsnorge_2020_dataanaly\FINAL\Raw_data\Geografisk_oppdeling\regioner_2010\regNorway_wgs84 - MERGED.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 5 features and 2 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: 4.087524 ymin: 57.75901 xmax: 31.76159 ymax: 71.38488
## Geodetic CRS: WGS 84
st_intersection(st_as_sf(nor))
## Simple feature collection with 1 feature and 4 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -113472.7 ymin: 6448359 xmax: 1114618 ymax: 7939917
## Projected CRS: ETRS89 / UTM zone 33N
## GID_0 NAME_0 n.overlaps origins geometry
## 1 NOR Norway 1 1 MULTIPOLYGON (((56583.51 64...
reg$INON2018 <- raster::extract(inon2018r, reg, fun = mean, na.rm=T)
reg$INON2013 <- raster::extract(inon2013r, reg, fun = mean, na.rm=T)
reg$INON2008 <- raster::extract(inon2008r, reg, fun = mean, na.rm=T)
reg$INON1988 <- raster::extract(inon1988r, reg, fun = mean, na.rm=T)
Fikser navn
reg$region[reg$region=="Ã\u0098stlandet"] <- "Østlandet"
reg$region[reg$region=="Sørlandet"] <- "Sørlandet"
(INON <- data.frame(reg = rep(reg$region,4),
year = rep(c(2018, 2013, 2008, 1988), each=5),
med = c(reg$INON2018,
reg$INON2013,
reg$INON2008,
reg$INON1988),
low=NA,
upp=NA))
## reg year med low upp
## 1 Nord-Norge 2018 0.8426396 NA NA
## 2 Midt-Norge 2018 0.8327776 NA NA
## 3 Østlandet 2018 0.7596516 NA NA
## 4 Vestlandet 2018 0.6596869 NA NA
## 5 Sørlandet 2018 0.7312067 NA NA
## 6 Nord-Norge 2013 0.8445106 NA NA
## 7 Midt-Norge 2013 0.8349642 NA NA
## 8 Østlandet 2013 0.7602185 NA NA
## 9 Vestlandet 2013 0.6638651 NA NA
## 10 Sørlandet 2013 0.7328710 NA NA
## 11 Nord-Norge 2008 0.8465606 NA NA
## 12 Midt-Norge 2008 0.8390641 NA NA
## 13 Østlandet 2008 0.7629504 NA NA
## 14 Vestlandet 2008 0.6693881 NA NA
## 15 Sørlandet 2008 0.7343967 NA NA
## 16 Nord-Norge 1988 0.8594624 NA NA
## 17 Midt-Norge 1988 0.8548625 NA NA
## 18 Østlandet 1988 0.7694964 NA NA
## 19 Vestlandet 1988 0.6908558 NA NA
## 20 Sørlandet 1988 0.7452150 NA NA
Legg til Norge. Her ønsker vi at verdien for Norge skal være gjennomsnittet av verdein for regionene, MEN i dette tilfelle er det nok et veid gjennomsnitt som er mest riktig, ndvs veid etter andelen av det totale fjellarealet. Rike fjellregioner teller mer. Og dette blir det samme som å ta gjenomsnittet over hele Norge, uavhengig av regioner.
heleNorge <- c(mean(inon2018r[], na.rm=T),
mean(inon2013r[], na.rm=T),
mean(inon2008r[], na.rm=T),
mean(inon1988r[], na.rm=T)
)
norgetbl <- data.frame(reg = rep("Norge", 4),
year = c(2018, 2013, 2008, 1988),
med = heleNorge,
low=NA,
upp=NA)
INON <- rbind(INON, norgetbl)
Jeg kan for nysgjerrighetens skjyld sammenligne disse tallene med resultatet om man bare hadde tatt gjennomsnitte av regionen.
norge <- aggregate(data=INON,
med~year,
FUN=mean)
temp <- data.frame(reg = rep(c("summert metode",
"gjennomsnitt av regioner"),
each=4),
year = rep(norge$year,2),
med = c(heleNorge, norge$med))
ggplot(data=temp)+
geom_bar(aes(y=med, x=year, fill=reg),
stat = "identity", position='dodge')
Den metoden vi bruker nå gir en del høyere tall.
ggplot(data=INON)+
geom_bar(aes(y=med, x=year, fill=reg),
stat = "identity", position='dodge')
Grunnen til det ser vi over - verdiene for Nord-Norge er de høyeste, og det er også der det er mest fjell.
Getting the plotting function. ‘Source’ doesnt work due to special characters
eval(parse("indicator_plots.R", encoding="UTF-8"))
png("../output/indicatorPlots/inon.png", units="in", width=12, height=7, res=300)
par(mfrow=c(1,1), mar=c(4.5,
5.5,
0,
2))
indicator_plot(dataset = INON,
yAxisTitle = "Andel inngrepsfri natur i fjellet",
lowYlimit = 0,
upperYlimit = 1,
yStep = .2,
minyear = 1985,
maxyear = 2021,
#errors = FALSE,
legendPosition = "bottom",
legendInset = 0.2
)
dev.off()
DT::datatable(
INON,
extensions = "FixedColumns",
options = list(
scrollX = TRUE,
scrollY=T,
pageLength = 10
))
Det blir ingen usikkerheter eller bootstrapping i dette tilfellet
INONout <- select(INON, reg, year, med)
INONout$reg[INONout$reg=="Østlandet"] <- "E"
INONout$reg[INONout$reg=="Nord-Norge"] <- "N"
INONout$reg[INONout$reg=="Sørlandet"] <- "S"
INONout$reg[INONout$reg=="Midt-Norge"] <- "C"
INONout$reg[INONout$reg=="Vestlandet"] <- "W"
names(INONout)[3] <- "val"
#write.csv(INONout, "../output/indicator_values/inon.csv", row.names = F)