inat-ranges / test.R
cboettig's picture
:duck:
cc1034c
source("utils.R")
source("inat-ranges.R")
url <- "https://s3-west.nrp-nautilus.io/public-data/cache/inat/f0108ef86feababffeab3d2be6f09373.h3j"
#url <- "https://minio.carlboettiger.info/public-data/cache/inat/4fd3323845ee860b39609783566b2212.h3j"
url <- "https://minio.carlboettiger.info/public-data/cache/inat/f0108ef86feababffeab3d2be6f09373.h3j"
#x <- jsonlite::read_json(url)
m = maplibre(center = c(-110,37), zoom=3) |>
add_draw_control() |>
add_h3j_source("h3j_source",
url = url
) |>
add_fill_extrusion_layer(
id = "h3j_layer",
source = "h3j_source",
tooltip = "n",
fill_extrusion_color = viridis_pal("height"),
fill_extrusion_height = list(
"interpolate",
list("linear"),
list("zoom"),
0,
0, 1,
list("*", 100000, list("get", "height"))
),
fill_extrusion_opacity = 0.7
)
htmlwidgets::saveWidget(m, "test2.html")
## Illustrate/test core app functionality without shiny
library(dplyr)
library(duckdbfs)
library(ggplot2)
library(mapgl)
library(glue)
library(jsonlite)
load_h3()
load_spatial()
source("utils.R")
source("inat-ranges.R")
duckdbfs::duckdb_secrets()
inat <- open_dataset("s3://public-inat/hex")
aoi <- spData::us_states
aoi <- spData::world
# publish richness at the aoi (bbox or poly)
meta <- richness(inat, aoi)
m <- richness_map(meta)
m
library(htmlwidgets)
htmlwidgets::saveWidget(m, "total-richness.html")
# publish richness at the aoi (bbox or poly)
meta <- richness(inat, aoi, rank = "class", taxon = "Aves")
m <- richness_map(meta)
htmlwidgets::saveWidget(m, "aves-richness.html")
# publish richness at the aoi (bbox or poly)
meta <- richness(inat, aoi, rank = "class", taxon = "Mammalia")
m <- richness_map(meta)
htmlwidgets::saveWidget(m, "mammals-richness.html")
## UGH can't deal with antimeridian
# dropme <- antimeridian_hexes(3)
# dropme <- antimeridian_hexes(4) |> rename(h4 = h3id)
# inat |> anti_join(dropme) |> write_dataset("s3://public-inat/ranges.parquet")
# inat <- open_dataset("s3://public-inat/ranges.parquet", recursive = FALSE)
# mutate(h3 = h3_cell_to_parent(h4, 3L))
m <- maplibre(center = c(-110.5, 34.8), zoom = 4) |> add_draw_control()
richness_map(m, "https://minio.carlboettiger.info/public-data/inat-tmp-ranges.h3j")
library(htmlwidgets)
htmlwidgets::saveWidget(m, "example.html")
amphib = open_dataset("s3://public-inat/polygon/Amphibia.parquet", recursive = FALSE)
gdf <- amphib |>
filter(name == "Ambystoma californiense") |>
to_sf(crs=4326)
maplibre(center = c(-122.5, 37.8), zoom = 4) |>
add_source(id = "gdf", gdf) |>
add_layer("gdf-layer",
type = "fill",
source = "gdf",
paint = list(
"fill-color" = "darkgreen",
"fill-opacity" = .9
)
)
# Access SVI
#svi = open_dataset("https://minio.carlboettiger.info/public-social-vulnerability/2022/SVI2022_US_tract.parquet")
#tracts = open_dataset("https://minio.carlboettiger.info/public-social-vulnerability/2022-tracts-h3-z5.parquet") # Access CalEnviroScreen
# ces = open_dataset("https://minio.carlboettiger.info/public-calenviroscreen/ces_2021.parquet", format="parquet")
# Filter GBIF to our area-of-interest (h-index) and species of interest
ca <- tracts |>
filter(STATE == "California") |>
mutate(h4 = h3_cell_to_parent(h5, 4L)) |>
mutate(h4 = tolower(as.character(h4)))
out <- ca |>
inner_join(inat, by = "h4") |>
count(STATE, COUNTY, FIPS, h5)
# mutate(height = n / max(n)) |>
url = "https://minio.carlboettiger.info/public-data/cache/inat/cec4b3087f0b6c41ecc384da2521f97c.h3j"
maplibre() |>
add_draw_control() |>
add_h3j_source("h3j_source",
url = url
) |>
add_fill_extrusion_layer(
id = "h3j_layer",
source = "h3j_source",
tooltip = "n",
fill_extrusion_color = viridis_pal("height"),
fill_extrusion_height = list(
"interpolate",
list("linear"),
list("zoom"),
0,
0, 1,
list("*", 100000, list("get", "height"))
),
fill_extrusion_opacity = 0.7
)