avephill's picture
Update R/setup.R
ceb0819 verified
# ============================================================================
# Setup: HuggingFace-optimized data loading
# ============================================================================
# This version uses GDAL virtual file system and temporary downloads
# for efficient loading in cloud/ephemeral environments like HuggingFace Spaces.
# For local development with persistent caching, use setup_local.R instead.
require(shinyjs)
library(shiny)
library(shinydashboard)
library(leaflet)
library(mapboxapi)
library(tidyverse)
library(tidycensus)
library(sf)
library(DT)
library(RColorBrewer)
library(terra)
library(data.table)
library(mapview)
library(sjPlot)
library(sjlabelled)
library(bslib)
library(shinycssloaders)
# ============================================================================
# API Keys
# ============================================================================
mapbox_token <- "pk.eyJ1Ijoia3dhbGtlcnRjdSIsImEiOiJjbHc3NmI0cDMxYzhyMmt0OXBiYnltMjVtIn0.Thtu6WqIhOfin6AykskM2g"
# ============================================================================
# Load Data from HuggingFace
# ============================================================================
# -- Greenspace (read directly from URL via GDAL virtual file system)
osm_greenspace <- st_read("/vsicurl/https://huggingface.co/datasets/boettiger-lab/sf_biodiv_access/resolve/main/greenspaces_osm_nad83.shp", quiet = TRUE) |>
st_transform(4326)
if (!"name" %in% names(osm_greenspace)) {
osm_greenspace$name <- "Unnamed Greenspace"
}
# -- Greenspace Distance Rasters (read directly from URL via GDAL virtual file system)
greenspace_dist_raster <- terra::rast("/vsicurl/https://huggingface.co/datasets/boettiger-lab/sf_biodiv_access/resolve/main/nearest_greenspace_dist.tif")
greenspace_osmid_raster <- terra::rast("/vsicurl/https://huggingface.co/datasets/boettiger-lab/sf_biodiv_access/resolve/main/nearest_greenspace_osmid.tif")
# -- NDVI Raster (read directly from URL via GDAL virtual file system)
ndvi <- terra::rast("/vsicurl/https://huggingface.co/datasets/boettiger-lab/sf_biodiv_access/resolve/main/SF_EastBay_NDVI_Sentinel_10.tif")
# -- GBIF data (loaded via DuckDB parquet in app.R server function)
# DuckDB can read parquet files directly from URLs
gbif_parquet <- "https://huggingface.co/datasets/boettiger-lab/sf_biodiv_access/resolve/main/gbif_census_ndvi_anno.parquet"
# -- Precomputed CBG data (download to /tmp and load)
download.file(
'https://huggingface.co/datasets/boettiger-lab/sf_biodiv_access/resolve/main/cbg_vect_sf.Rdata',
'/tmp/cbg_vect_sf.Rdata'
)
load('/tmp/cbg_vect_sf.Rdata')
if (!"unique_species" %in% names(cbg_vect_sf)) {
cbg_vect_sf$unique_species <- cbg_vect_sf$n_species
}
if (!"n_observations" %in% names(cbg_vect_sf)) {
cbg_vect_sf$n_observations <- cbg_vect_sf$n
}
if (!"median_inc" %in% names(cbg_vect_sf)) {
cbg_vect_sf$median_inc <- cbg_vect_sf$medincE
}
if (!"ndvi_mean" %in% names(cbg_vect_sf)) {
cbg_vect_sf$ndvi_mean <- cbg_vect_sf$ndvi_sentinel
}
# -- Hotspots/Coldspots (read directly from URL via GDAL virtual file system)
biodiv_hotspots <- st_read("/vsicurl/https://huggingface.co/datasets/boettiger-lab/sf_biodiv_access/resolve/main/hotspots.shp", quiet = TRUE) |>
st_transform(4326)
biodiv_coldspots <- st_read("/vsicurl/https://huggingface.co/datasets/boettiger-lab/sf_biodiv_access/resolve/main/coldspots.shp", quiet = TRUE) |>
st_transform(4326)
# -- RSF Program Projects (read directly from URL via GDAL virtual file system)
rsf_projects <- st_read("/vsicurl/https://huggingface.co/datasets/boettiger-lab/sf_biodiv_access/resolve/main/RSF_Program_Projects_polygons.gpkg", quiet = TRUE) |>
st_transform(4326)