library(rinat)
library(dplyr)
library(lubridate)
library(sf)
library(mapview)
library(leafpop)A walk around the Manly dam
R
rinat
mapview
Sydney
NSW
Tools and Libraries
I will be using R with the following selection of libraries in this blog post:
I use the library here to manage relative paths of the project:
here::i_am("regions/Manly-dam.qmd")here() starts at /Users/z3529065/proyectos/CES/code-4-iNat
I save the downloaded inat data into this data folder at the root of the project folder:
if (!dir.exists(here::here("data")))
dir.create(here::here("data"))
inat_obs_data <- here::here("data", "inat-obs.rds")This will query all the observations from my iNaturalist user. I will save this to a data folder:
if (file.exists(inat_obs_data)) {
user_obs <- readRDS(inat_obs_data)
} else {
user_obs <- get_inat_obs_user("NeoMapas",maxresults = 5000) |>
mutate(dts=date(datetime), year=year(dts), month=month(dts))
saveRDS(user_obs, inat_obs_data)
}I can make this object spatially explicit using the function st_to_sf from package sf:
user_obs_xy <- st_as_sf(user_obs,coords=c("longitude","latitude"), crs=4326)For this post, I am focusing on the observation made on the 9 March 2025:
manly_dam_obs <- filter(user_obs_xy, dts == "2025-03-09")This is the number of observations for that day:
nrow(manly_dam_obs)[1] 38
And this is the approximate number of species (or other taxa) included in those observaitons:
n_distinct(manly_dam_obs$species_guess)[1] 34
A quick map with the default image of each observation can be made with mapview:
mapview(manly_dam_obs,
map.types = c("OpenStreetMap.DE", "Esri.WorldImagery"),
layer.name = c("A walk around the Manly Dam"),
popup =
popupImage(manly_dam_obs$image_url, src = "remote"))That’s fantastic!
Session info
sessionInfo()R version 4.5.0 (2025-04-11)
Platform: aarch64-apple-darwin20
Running under: macOS Sequoia 15.6.1
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/lib/libRlapack.dylib; LAPACK version 3.12.1
locale:
[1] en_AU.UTF-8/en_AU.UTF-8/en_AU.UTF-8/C/en_AU.UTF-8/en_AU.UTF-8
time zone: Australia/Sydney
tzcode source: internal
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] leafpop_0.1.0 mapview_2.11.2 sf_1.0-21 lubridate_1.9.4
[5] dplyr_1.1.4 rinat_0.1.9
loaded via a namespace (and not attached):
[1] generics_0.1.4 class_7.3-23 KernSmooth_2.23-26
[4] lattice_0.22-7 digest_0.6.37 magrittr_2.0.3
[7] evaluate_1.0.3 grid_4.5.0 timechange_0.3.0
[10] RColorBrewer_1.1-3 fastmap_1.2.0 maps_3.4.3
[13] rprojroot_2.0.4 plyr_1.8.9 jsonlite_2.0.0
[16] e1071_1.7-16 DBI_1.2.3 httr_1.4.7
[19] crosstalk_1.2.1 scales_1.4.0 brew_1.0-10
[22] jquerylib_0.1.4 textshaping_1.0.1 codetools_0.2-20
[25] cli_3.6.5 rlang_1.1.6 units_0.8-7
[28] base64enc_0.1-3 yaml_2.3.10 tools_4.5.0
[31] raster_3.6-32 uuid_1.2-1 colorspace_2.1-1
[34] ggplot2_3.5.2 here_1.0.1 curl_6.4.0
[37] vctrs_0.6.5 R6_2.6.1 png_0.1-8
[40] stats4_4.5.0 proxy_0.4-27 lifecycle_1.0.4
[43] classInt_0.4-11 leaflet_2.2.2 leaflet.providers_2.0.0
[46] htmlwidgets_1.6.4 pkgconfig_2.0.3 terra_1.8-60
[49] pillar_1.11.0 gtable_0.3.6 glue_1.8.0
[52] Rcpp_1.1.0 systemfonts_1.2.3 xfun_0.52
[55] tibble_3.3.0 tidyselect_1.2.1 knitr_1.50
[58] dichromat_2.0-0.1 farver_2.1.2 htmltools_0.5.8.1
[61] svglite_2.2.1 leafem_0.2.4 rmarkdown_2.29
[64] satellite_1.0.5 compiler_4.5.0 sp_2.2-0