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
  )
}

Northeast Victoria region

northeast_bb <- list(145.966, -36.883, 147.288, -36.007)
plot(map_southeast)
do.call(rect, c(northeast_bb, lty = 3))

Taxa in northeast

(taxa_available_northeast <-
  taxa_available_region(occupancy_southeast, northeast_bb))
map_taxa(
  long_southeast,
  which_match(
    taxa_available_northeast$taxon,
    subset(taxa_sampled, trees > 3)$taxon,
    invert = TRUE
  ),
  northeast_bb
)
IycgLS0tCiMnIHRpdGxlOiAiVGFyZ2V0IHRheGEgaW4gTm9ydGgtZWFzdCBWaWN0b3JpYSIKIycgYXV0aG9yOiAiV2lsbGlhbSBLLiBNb3JyaXMiCiMnIGRhdGU6ICJgciBTeXMuRGF0ZSgpYCIKIycgb3V0cHV0OgojJyAgIHJtYXJrZG93bjo6aHRtbF9ub3RlYm9vazoKIycgICAgIGNvZGVfZm9sZGluZzogaGlkZQojJyAtLS0KCiMrIHNldHVwLCBtZXNzYWdlPUZBTFNFLCBmaWcuc2hvdz0iaGlkZSIsIHJlc3VsdHM9ImhpZGUiCmtuaXRyOjpvcHRzX2NodW5rJHNldChjYWNoZSA9IFRSVUUsIGRldiA9IGMoInBuZyIsICJwZGYiKSkKbGlicmFyeShldWNzKQpsaWJyYXJ5KGxlYWZsZXQpCmxpYnJhcnkoc3ApCgpzb3VyY2UoImV1Y3RyYWl0c190YXJnZXRzLlIiKQoKdGF4YV9hdmFpbGFibGVfcmVnaW9uIDwtIGZ1bmN0aW9uKG9jY3VwYW5jeSwgYmIpIHsKICBhbnMgPC0gc3Vic2V0KAogICAgb2NjdXBhbmN5LAogICAgbG9uZ2l0dWRlX2dkYTk0ID4gYmJbWzFdXSAmIGxhdGl0dWRlX2dkYTk0ID4gYmJbWzJdXSAmCiAgICBsb25naXR1ZGVfZ2RhOTQgPCBiYltbM11dICYgbGF0aXR1ZGVfZ2RhOTQgPCBiYltbNF1dCiAgKQogIGFucyA8LSBkby5jYWxsKHJiaW5kLCBhbnMkb2NjdXBhbmN5KQogIGRhdGEuZnJhbWUodGF4b24gPSBuYW1lcyh3aGljaChjb2xNZWFucyhhbnMpID4gMCkpKQp9CgptYXBfdGF4YSA8LSBmdW5jdGlvbihvY2N1cGFuY3ksIHRheG9uLCBiYikgewogIG9jY3VwYW5jeSA8LSBvY2N1cGFuY3lbCiAgICBvY2N1cGFuY3kkb2NjdXBhbmN5ICYKICAgIG9jY3VwYW5jeSR0YXhvbiAlaW4lIHRheG9uICYKICAgIG9jY3VwYW5jeSRsb25naXR1ZGVfZ2RhOTQgPiBiYltbMV1dICYKICAgIG9jY3VwYW5jeSRsYXRpdHVkZV9nZGE5NCAgPiBiYltbMl1dICYKICAgIG9jY3VwYW5jeSRsb25naXR1ZGVfZ2RhOTQgPCBiYltbM11dICYKICAgIG9jY3VwYW5jeSRsYXRpdHVkZV9nZGE5NCAgPCBiYltbNF1dLAogICAgYygibG9uZ2l0dWRlX2dkYTk0IiwgImxhdGl0dWRlX2dkYTk0IiwgInRheG9uIiwgIm9jY3VwYW5jeSIpCiAgXQogIG9jY3VwYW5jeSRjb2xvciA8LSBmYWN0b3Iob2NjdXBhbmN5JHRheG9uKQogIG9jY3VwYW5jeSRjb2xvciA8LSByYWluYm93KG5sZXZlbHMob2NjdXBhbmN5JGNvbG9yKSlbb2NjdXBhbmN5JGNvbG9yXQogIG0gPC0gbGVhZmxldChvY2N1cGFuY3kpCiAgbSA8LSBhZGRUaWxlcyhtKQogIGFkZENpcmNsZU1hcmtlcnMoCiAgICBtLAogICAgbGF0ICAgPSB+aml0dGVyKGxhdGl0dWRlX2dkYTk0LCBhbW91bnQgPSAuMDAxKSwKICAgIGxuZyAgID0gfmppdHRlcihsb25naXR1ZGVfZ2RhOTQsIGFtb3VudCA9IC4wMDEpLAogICAgbGFiZWwgPSB+dGF4b24sCiAgICBjb2xvciA9IH5jb2xvcgogICkKfQoKIycgTm9ydGhlYXN0IFZpY3RvcmlhIHJlZ2lvbgojKyBub3J0aGVhc3RfbWFwCm5vcnRoZWFzdF9iYiA8LSBsaXN0KDE0NS45NjYsIC0zNi44ODMsIDE0Ny4yODgsIC0zNi4wMDcpCnBsb3QobWFwX3NvdXRoZWFzdCkKZG8uY2FsbChyZWN0LCBjKG5vcnRoZWFzdF9iYiwgbHR5ID0gMykpCgojJyBUYXhhIGluIG5vcnRoZWFzdAojKyB0YXhhX2F2YWlsYWJsZV9ub3J0aGVhc3QKKHRheGFfYXZhaWxhYmxlX25vcnRoZWFzdCA8LQogIHRheGFfYXZhaWxhYmxlX3JlZ2lvbihvY2N1cGFuY3lfc291dGhlYXN0LCBub3J0aGVhc3RfYmIpKQoKbWFwX3RheGEoCiAgbG9uZ19zb3V0aGVhc3QsCiAgd2hpY2hfbWF0Y2goCiAgICB0YXhhX2F2YWlsYWJsZV9ub3J0aGVhc3QkdGF4b24sCiAgICBzdWJzZXQodGF4YV9zYW1wbGVkLCB0cmVlcyA+IDMpJHRheG9uLAogICAgaW52ZXJ0ID0gVFJVRQogICksCiAgbm9ydGhlYXN0X2JiCikK