knitr::opts_chunk$set(cache = TRUE, dev = c("png", "pdf"))
library(eucs)
library(leaflet)
library(sp)

source("euctraits_targets.R")
taxa_available_region <- function(occupancy, bb) {
  ans <- subset(
    occupancy,
    longitude_gda94 > bb[[1]] & latitude_gda94 > bb[[2]] &
    longitude_gda94 < bb[[3]] & latitude_gda94 < bb[[4]]
  )
  ans <- do.call(rbind, ans$occupancy)
  data.frame(taxon = names(which(colMeans(ans) > 0)))
}

map_taxa <- function(occupancy, taxon, bb) {
  occupancy <- occupancy[
    occupancy$occupancy &
    occupancy$taxon %in% taxon &
    occupancy$longitude_gda94 > bb[[1]] &
    occupancy$latitude_gda94  > bb[[2]] &
    occupancy$longitude_gda94 < bb[[3]] &
    occupancy$latitude_gda94  < bb[[4]],
    c("longitude_gda94", "latitude_gda94", "taxon", "occupancy")
  ]
  occupancy$color <- factor(occupancy$taxon)
  occupancy$color <- rainbow(nlevels(occupancy$color))[occupancy$color]
  m <- leaflet(occupancy)
  m <- addTiles(m)
  addCircleMarkers(
    m,
    lat   = ~jitter(latitude_gda94, amount = .001),
    lng   = ~jitter(longitude_gda94, amount = .001),
    label = ~taxon,
    color = ~color
  )
}

ACT region

act_bb <- list(147.372239, -36.915181, 150.827778, -34.528067)
plot(map_southeast)
do.call(rect, c(act_bb, lty = 3))

Taxa in the ACT region

(taxa_available_act <-
  taxa_available_region(occupancy_southeast, act_bb))
map_taxa(
  long_southeast,
  which_match(
    taxa_available_act$taxon,
    subset(taxa_sampled, trees > 5)$taxon,
    invert = TRUE
  ),
  act_bb
)
IycgLS0tCiMnIHRpdGxlOiAiVGFyZ2V0IHRheGEgaW4gdGhlIEFDVCByZWdpb24iCiMnIGF1dGhvcjogIldpbGxpYW0gSy4gTW9ycmlzIgojJyBkYXRlOiAiYHIgU3lzLkRhdGUoKWAiCiMnIG91dHB1dDoKIycgICBybWFya2Rvd246Omh0bWxfbm90ZWJvb2s6CiMnICAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKIycgLS0tCgojKyBzZXR1cCwgbWVzc2FnZT1GQUxTRSwgZmlnLnNob3c9ImhpZGUiLCByZXN1bHRzPSJoaWRlIgprbml0cjo6b3B0c19jaHVuayRzZXQoY2FjaGUgPSBUUlVFLCBkZXYgPSBjKCJwbmciLCAicGRmIikpCmxpYnJhcnkoZXVjcykKbGlicmFyeShsZWFmbGV0KQpsaWJyYXJ5KHNwKQoKc291cmNlKCJldWN0cmFpdHNfdGFyZ2V0cy5SIikKCnRheGFfYXZhaWxhYmxlX3JlZ2lvbiA8LSBmdW5jdGlvbihvY2N1cGFuY3ksIGJiKSB7CiAgYW5zIDwtIHN1YnNldCgKICAgIG9jY3VwYW5jeSwKICAgIGxvbmdpdHVkZV9nZGE5NCA+IGJiW1sxXV0gJiBsYXRpdHVkZV9nZGE5NCA+IGJiW1syXV0gJgogICAgbG9uZ2l0dWRlX2dkYTk0IDwgYmJbWzNdXSAmIGxhdGl0dWRlX2dkYTk0IDwgYmJbWzRdXQogICkKICBhbnMgPC0gZG8uY2FsbChyYmluZCwgYW5zJG9jY3VwYW5jeSkKICBkYXRhLmZyYW1lKHRheG9uID0gbmFtZXMod2hpY2goY29sTWVhbnMoYW5zKSA+IDApKSkKfQoKbWFwX3RheGEgPC0gZnVuY3Rpb24ob2NjdXBhbmN5LCB0YXhvbiwgYmIpIHsKICBvY2N1cGFuY3kgPC0gb2NjdXBhbmN5WwogICAgb2NjdXBhbmN5JG9jY3VwYW5jeSAmCiAgICBvY2N1cGFuY3kkdGF4b24gJWluJSB0YXhvbiAmCiAgICBvY2N1cGFuY3kkbG9uZ2l0dWRlX2dkYTk0ID4gYmJbWzFdXSAmCiAgICBvY2N1cGFuY3kkbGF0aXR1ZGVfZ2RhOTQgID4gYmJbWzJdXSAmCiAgICBvY2N1cGFuY3kkbG9uZ2l0dWRlX2dkYTk0IDwgYmJbWzNdXSAmCiAgICBvY2N1cGFuY3kkbGF0aXR1ZGVfZ2RhOTQgIDwgYmJbWzRdXSwKICAgIGMoImxvbmdpdHVkZV9nZGE5NCIsICJsYXRpdHVkZV9nZGE5NCIsICJ0YXhvbiIsICJvY2N1cGFuY3kiKQogIF0KICBvY2N1cGFuY3kkY29sb3IgPC0gZmFjdG9yKG9jY3VwYW5jeSR0YXhvbikKICBvY2N1cGFuY3kkY29sb3IgPC0gcmFpbmJvdyhubGV2ZWxzKG9jY3VwYW5jeSRjb2xvcikpW29jY3VwYW5jeSRjb2xvcl0KICBtIDwtIGxlYWZsZXQob2NjdXBhbmN5KQogIG0gPC0gYWRkVGlsZXMobSkKICBhZGRDaXJjbGVNYXJrZXJzKAogICAgbSwKICAgIGxhdCAgID0gfmppdHRlcihsYXRpdHVkZV9nZGE5NCwgYW1vdW50ID0gLjAwMSksCiAgICBsbmcgICA9IH5qaXR0ZXIobG9uZ2l0dWRlX2dkYTk0LCBhbW91bnQgPSAuMDAxKSwKICAgIGxhYmVsID0gfnRheG9uLAogICAgY29sb3IgPSB+Y29sb3IKICApCn0KCiMnIEFDVCByZWdpb24KIysgYWN0X21hcAphY3RfYmIgPC0gbGlzdCgxNDcuMzcyMjM5LCAtMzYuOTE1MTgxLCAxNTAuODI3Nzc4LCAtMzQuNTI4MDY3KQpwbG90KG1hcF9zb3V0aGVhc3QpCmRvLmNhbGwocmVjdCwgYyhhY3RfYmIsIGx0eSA9IDMpKQoKIycgVGF4YSBpbiB0aGUgQUNUIHJlZ2lvbgojKyB0YXhhX2F2YWlsYWJsZV9hY3QKKHRheGFfYXZhaWxhYmxlX2FjdCA8LQogIHRheGFfYXZhaWxhYmxlX3JlZ2lvbihvY2N1cGFuY3lfc291dGhlYXN0LCBhY3RfYmIpKQoKbWFwX3RheGEoCiAgbG9uZ19zb3V0aGVhc3QsCiAgd2hpY2hfbWF0Y2goCiAgICB0YXhhX2F2YWlsYWJsZV9hY3QkdGF4b24sCiAgICBzdWJzZXQodGF4YV9zYW1wbGVkLCB0cmVlcyA+IDUpJHRheG9uLAogICAgaW52ZXJ0ID0gVFJVRQogICksCiAgYWN0X2JiCikK