knitr::opts_chunk$set(cache = TRUE, dev = c("png", "pdf"))
library(eucs)
library(raster)
library(sp)
rasters <- read.csv("../../data-cache/rasters.csv", stringsAsFactors = FALSE)
grampians <- subset(map_ibra_southeast, IBRA_SUB_N == "Greater Grampians")
grampians_json <- tempfile(fileext = ".json")
rgdal::writeOGR(grampians, grampians_json, "grampians", driver = "GeoJSON")
se_aus <- subset(
map_ibra_southeast,
IBRA_SUB_N %in% unique(
subset(occupancy_southeast, ibra_subregion_coverage > .5)$ibra_subregion
)
)
se_aus@data$ID <- 1
se_aus <- aggregate(se_aus, by = "ID")
se_aus_json <- tempfile(fileext = ".json")
rgdal::writeOGR(se_aus, se_aus_json, "se_aus", driver = "GeoJSON")
nms <- c(
`62` = "Mean Moisture Index\nLowest Quarter",
`24` = "Topographic Wetness\nIndex",
`22` = "Relief 1000m\nRadius",
`8` = "Total Nitrogen"
)
zlims <- list(
`62` = c(0.09091329, 1),
`24` = c(0, 19.50653),
`22` = c(0, 1110.44),
`8` = c(0, 0.1795395)
)
par(mfrow = c(4, 2), oma = c(1, 1, 1, 1))
for (x in c(62, 24, 22, 8)) {
src_file <- paste0("../../", rasters$File[[x]])
info <- attr(rgdal::GDALinfo(src_file, returnStats = FALSE), "df")
gdtype <- as.character(info$GDType[[1]])
r_crs <- if (tools::file_ext(src_file) == "vrt") {
gdalUtils::gdalsrsinfo(src_file, as.CRS = TRUE)
} else {
crs(raster::raster(src_file))
}
r_crs <- if (is.na(r_crs)) "+init=epsg:4326" else as.character(r_crs)
tmp <- tempfile()
srcnodata <- if (gdtype == "Byte") 255 else c(-3.40282346638528e+38, -9999)
if (x %in% 70:71) srcnodata <- info$NoDataValue[[1]]
gdalUtils::gdalwarp(
src_file, tmp, r_crs, "+init=epsg:4326", ot = "Float32",
srcnodata = srcnodata, dstnodata = -3.40282346638528e+38,
cutline = grampians_json, crop_to_cutline = TRUE, dstalpha = TRUE,
overwrite = TRUE
)
r_gr <- raster(tmp)
tmp2 <- tempfile()
gdalUtils::gdalwarp(
src_file, tmp2, r_crs, "+init=epsg:4326", ot = "Float32",
srcnodata = srcnodata, dstnodata = -3.40282346638528e+38,
cutline = se_aus_json, crop_to_cutline = TRUE, dstalpha = TRUE,
overwrite = TRUE
)
r_se <- raster(tmp2)
zlim <- zlims[[as.character(x)]]
cols <- grey.colors(256, 1, 0)
par(mar = c(0, .5, 0, 0))
plot(
grampians,
border = rgb(1, 1, 1, 0),
panel.first = grid()
)
plot(
r_gr, col=cols, add = TRUE,
legend = FALSE, zlim = zlim
)
if (x == 8) axis(1, tick = FALSE, line = -1, hadj = 0)
axis(2, las = 1, tick = FALSE, padj = 0, line = -2)
text(141.6, -36.9, nms[[as.character(x)]], pos = 4)
par(mar = c(0, .5, 0, 1))
plot(
se_aus,
border = rgb(1, 1, 1, 0),
panel.first = grid()
)
plot(
r_se, col=cols, add = TRUE, zlim = zlim,
legend.shrink = .87
)
axis(2, las = 1, tick = FALSE, padj = 0, line = -2)
if (x == 8) axis(1, tick = FALSE, line = -1, hadj = 0)
}

IycgLS0tCiMnIHRpdGxlOiAiTWFwcyBvZiBtb2RlbCBjb3ZhcmlhdGVzIgojJyBhdXRob3I6ICJXaWxsaWFtIEsuIE1vcnJpcyIKIycgZGF0ZTogImByIFN5cy5EYXRlKClgIgojJyBvdXRwdXQ6CiMnICAgcm1hcmtkb3duOjpodG1sX25vdGVib29rOgojJyAgICAgY29kZV9mb2xkaW5nOiBoaWRlCiMnIC0tLQoKIysgbWVzc2FnZT1GQUxTRQprbml0cjo6b3B0c19jaHVuayRzZXQoY2FjaGUgPSBUUlVFLCBkZXYgPSBjKCJwbmciLCAicGRmIikpCmxpYnJhcnkoZXVjcykKbGlicmFyeShyYXN0ZXIpCmxpYnJhcnkoc3ApCgojKyBpbnB1dC1kYXRhLCBtZXNzYWdlPUZBTFNFLCBjYWNoZT1GQUxTRQpyYXN0ZXJzIDwtIHJlYWQuY3N2KCIuLi8uLi9kYXRhLWNhY2hlL3Jhc3RlcnMuY3N2Iiwgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQoKZ3JhbXBpYW5zIDwtIHN1YnNldChtYXBfaWJyYV9zb3V0aGVhc3QsIElCUkFfU1VCX04gPT0gIkdyZWF0ZXIgR3JhbXBpYW5zIikKZ3JhbXBpYW5zX2pzb24gPC0gdGVtcGZpbGUoZmlsZWV4dCA9ICIuanNvbiIpCnJnZGFsOjp3cml0ZU9HUihncmFtcGlhbnMsIGdyYW1waWFuc19qc29uLCAiZ3JhbXBpYW5zIiwgZHJpdmVyID0gIkdlb0pTT04iKQoKc2VfYXVzIDwtIHN1YnNldCgKICBtYXBfaWJyYV9zb3V0aGVhc3QsCiAgSUJSQV9TVUJfTiAlaW4lIHVuaXF1ZSgKICAgIHN1YnNldChvY2N1cGFuY3lfc291dGhlYXN0LCBpYnJhX3N1YnJlZ2lvbl9jb3ZlcmFnZSA+IC41KSRpYnJhX3N1YnJlZ2lvbgogICkKKQpzZV9hdXNAZGF0YSRJRCA8LSAxCnNlX2F1cyA8LSBhZ2dyZWdhdGUoc2VfYXVzLCBieSA9ICJJRCIpCnNlX2F1c19qc29uIDwtIHRlbXBmaWxlKGZpbGVleHQgPSAiLmpzb24iKQpyZ2RhbDo6d3JpdGVPR1Ioc2VfYXVzLCBzZV9hdXNfanNvbiwgInNlX2F1cyIsIGRyaXZlciA9ICJHZW9KU09OIikKCiMrIHBsb3Rjb3Zhcm1hcHMsIGZpZy5oZWlnaHQ9OSwgZmlnLndpZHRoPTcuNQpubXMgPC0gYygKICBgNjJgID0gIk1lYW4gTW9pc3R1cmUgSW5kZXhcbkxvd2VzdCBRdWFydGVyIiwKICBgMjRgID0gIlRvcG9ncmFwaGljIFdldG5lc3NcbkluZGV4IiwKICBgMjJgID0gIlJlbGllZiAxMDAwbVxuUmFkaXVzIiwKICBgOGAgID0gIlRvdGFsIE5pdHJvZ2VuIgopCgp6bGltcyA8LSBsaXN0KAogIGA2MmAgPSBjKDAuMDkwOTEzMjksIDEpLAogIGAyNGAgPSAgYygwLCAxOS41MDY1MyksCiAgYDIyYCA9IGMoMCwgMTExMC40NCksCiAgYDhgICA9IGMoMCwgMC4xNzk1Mzk1KQopCgpwYXIobWZyb3cgPSBjKDQsIDIpLCBvbWEgPSBjKDEsIDEsIDEsIDEpKQpmb3IgKHggaW4gYyg2MiwgMjQsIDIyLCA4KSkgewogIHNyY19maWxlIDwtIHBhc3RlMCgiLi4vLi4vIiwgcmFzdGVycyRGaWxlW1t4XV0pCgogIGluZm8gPC0gYXR0cihyZ2RhbDo6R0RBTGluZm8oc3JjX2ZpbGUsIHJldHVyblN0YXRzID0gRkFMU0UpLCAiZGYiKQoKICBnZHR5cGUgPC0gYXMuY2hhcmFjdGVyKGluZm8kR0RUeXBlW1sxXV0pCgogIHJfY3JzIDwtIGlmICh0b29sczo6ZmlsZV9leHQoc3JjX2ZpbGUpID09ICJ2cnQiKSB7CiAgICBnZGFsVXRpbHM6OmdkYWxzcnNpbmZvKHNyY19maWxlLCBhcy5DUlMgPSBUUlVFKQogIH0gZWxzZSB7CiAgICBjcnMocmFzdGVyOjpyYXN0ZXIoc3JjX2ZpbGUpKQogIH0KCiAgcl9jcnMgPC0gaWYgKGlzLm5hKHJfY3JzKSkgIitpbml0PWVwc2c6NDMyNiIgZWxzZSBhcy5jaGFyYWN0ZXIocl9jcnMpCgogIHRtcCA8LSB0ZW1wZmlsZSgpCgogIHNyY25vZGF0YSA8LSBpZiAoZ2R0eXBlID09ICJCeXRlIikgMjU1IGVsc2UgYygtMy40MDI4MjM0NjYzODUyOGUrMzgsIC05OTk5KQogIGlmICh4ICVpbiUgNzA6NzEpICBzcmNub2RhdGEgPC0gaW5mbyROb0RhdGFWYWx1ZVtbMV1dCgogIGdkYWxVdGlsczo6Z2RhbHdhcnAoCiAgICBzcmNfZmlsZSwgdG1wLCByX2NycywgIitpbml0PWVwc2c6NDMyNiIsIG90ID0gIkZsb2F0MzIiLAogICAgc3Jjbm9kYXRhID0gc3Jjbm9kYXRhLCBkc3Rub2RhdGEgPSAtMy40MDI4MjM0NjYzODUyOGUrMzgsCiAgICBjdXRsaW5lID0gZ3JhbXBpYW5zX2pzb24sIGNyb3BfdG9fY3V0bGluZSA9IFRSVUUsIGRzdGFscGhhID0gVFJVRSwKICAgIG92ZXJ3cml0ZSA9IFRSVUUKICApCgogIHJfZ3IgPC0gcmFzdGVyKHRtcCkKCiAgdG1wMiA8LSB0ZW1wZmlsZSgpCgogIGdkYWxVdGlsczo6Z2RhbHdhcnAoCiAgICBzcmNfZmlsZSwgdG1wMiwgcl9jcnMsICIraW5pdD1lcHNnOjQzMjYiLCBvdCA9ICJGbG9hdDMyIiwKICAgIHNyY25vZGF0YSA9IHNyY25vZGF0YSwgZHN0bm9kYXRhID0gLTMuNDAyODIzNDY2Mzg1MjhlKzM4LAogICAgY3V0bGluZSA9IHNlX2F1c19qc29uLCBjcm9wX3RvX2N1dGxpbmUgPSBUUlVFLCBkc3RhbHBoYSA9IFRSVUUsCiAgICBvdmVyd3JpdGUgPSBUUlVFCiAgKQoKICByX3NlIDwtIHJhc3Rlcih0bXAyKQoKICB6bGltIDwtIHpsaW1zW1thcy5jaGFyYWN0ZXIoeCldXQogIGNvbHMgPC0gZ3JleS5jb2xvcnMoMjU2LCAxLCAwKQoKICBwYXIobWFyID0gYygwLCAuNSwgMCwgMCkpCiAgcGxvdCgKICAgIGdyYW1waWFucywKICAgIGJvcmRlciA9IHJnYigxLCAxLCAxLCAwKSwKICAgIHBhbmVsLmZpcnN0ID0gZ3JpZCgpCiAgKQogIHBsb3QoCiAgICByX2dyLCBjb2w9Y29scywgYWRkID0gVFJVRSwKICAgIGxlZ2VuZCA9IEZBTFNFLCB6bGltID0gemxpbQogICkKICBpZiAoeCA9PSA4KSBheGlzKDEsIHRpY2sgPSBGQUxTRSwgbGluZSA9IC0xLCBoYWRqID0gMCkKICBheGlzKDIsIGxhcyA9IDEsIHRpY2sgPSBGQUxTRSwgcGFkaiA9IDAsIGxpbmUgPSAtMikKICB0ZXh0KDE0MS42LCAtMzYuOSwgbm1zW1thcy5jaGFyYWN0ZXIoeCldXSwgcG9zID0gNCkKICBwYXIobWFyID0gYygwLCAuNSwgMCwgMSkpCiAgcGxvdCgKICAgIHNlX2F1cywKICAgIGJvcmRlciA9IHJnYigxLCAxLCAxLCAwKSwKICAgIHBhbmVsLmZpcnN0ID0gZ3JpZCgpCiAgKQogIHBsb3QoCiAgICByX3NlLCBjb2w9Y29scywgYWRkID0gVFJVRSwgemxpbSA9IHpsaW0sCiAgICBsZWdlbmQuc2hyaW5rID0gLjg3CiAgKQogIGF4aXMoMiwgbGFzID0gMSwgdGljayA9IEZBTFNFLCBwYWRqID0gMCwgbGluZSA9IC0yKQogIGlmICh4ID09IDgpIGF4aXMoMSwgdGljayA9IEZBTFNFLCBsaW5lID0gLTEsIGhhZGogPSAwKQp9Cg==