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==