Code
library(httr)
library(jsonlite)
library(knitr)
library(sf)
sf_use_s2(FALSE)
library(tmap)
tmap_mode('view')
library(tidyverse)
options(knitr.kable.NA = '')
options(scipen=999)library(httr)
library(jsonlite)
library(knitr)
library(sf)
sf_use_s2(FALSE)
library(tmap)
tmap_mode('view')
library(tidyverse)
options(knitr.kable.NA = '')
options(scipen=999)getTwoTaxaPerState <- function(place_ids, preferred_place_id){
# preferred_place_id 7259 for common name = Uruguay
twoTaxaPerState <- tibble(place_id = numeric(),
taxon_name = character(),
iconic_taxon_name = character(),
common_name = character(),
observations_place = numeric(),
observations_iNat = numeric())
api <- 'https://api.inaturalist.org/v1/observations/species_counts'
page <- '&page=1&per_page=10'
for(place_id in place_ids) {
for(taxon_id in c(1, 47126)){ # Animalia, Plantae
call_url_obs <- str_glue('{api}?verifiable=true&place_id={place_id}&rank=species&taxon_id={taxon_id}&locale=es&preferred_place_id={preferred_place_id}&include_ancestors=false')
get_json_call_observations <- GET(url = call_url_obs) %>%
content(as = "text") %>% fromJSON(flatten = TRUE)
results <- as_tibble(get_json_call_observations$results) %>%
slice_head(n=1)
taxaPerState_i <- tibble(place_id = place_id,
kingdom = ifelse(taxon_id == 1, 'Animalia', 'Plantae'),
taxon_name = results$taxon.name,
iconic_taxon_name = results$taxon.iconic_taxon_name,
common_name = results$taxon.preferred_common_name,
observations_place = results$count,
observations_iNat = results$taxon.observations_count)
twoTaxaPerState <- rbind(twoTaxaPerState, taxaPerState_i)
}
}
return(twoTaxaPerState)
}
getPhotoFromiNat <- function(species_list, place_id, license){
species_photos <- tibble(taxon_name = character(),
taxon_id = numeric(),
observation_url = character(),
photo_url = character())
api <- 'https://api.inaturalist.org/v1/observations'
page <- '&page=1&per_page=10'
for(species_name in species_list){
call_url <- str_glue('{api}?photo_license={license}&place_id={place_id}&q={species_name}&order=desc&order_by=votes{page}')
get_json_call <- GET(url = URLencode(call_url)) %>%
content(as = "text") %>% fromJSON(flatten = TRUE)
results <- as_tibble(get_json_call$results) %>%
slice_head(n=1)
species_photos_i <- tibble(taxon_name = species_name,
taxon_id = results$taxon.id,
user_login = results$user.login,
observation_url = str_replace(results$uri,
'inaturalist.org',
'naturalista.uy'),
photo_url = results$photos)
species_photos <- rbind(species_photos, species_photos_i)
}
species_photos <- species_photos %>%
unnest_wider(photo_url, names_sep = "_") %>%
unnest_wider(col=c(photo_url_license_code, photo_url_url), names_sep = "_") %>%
select(-c(photo_url_id, photo_url_attribution,
photo_url_flags, photo_url_moderator_actions,
photo_url_hidden, photo_url_original_dimensions.width,
photo_url_original_dimensions.height)) %>%
relocate(starts_with('photo_url_url'),
.before = starts_with('photo_url_license')) %>%
rename_with(~ str_replace(.x, 'photo_url_url_', 'photo_url_'),
starts_with('photo_url_url_')) %>%
rename_with(~ str_replace(.x, 'photo_url_license', 'photo_license'),
starts_with('photo_url_license'))
return(species_photos)
}place_ids_departamento <- tibble(departamento =
c('Artigas', 'Salto', 'Rivera',
'Tacuarembó', 'Paysandú',
'Cerro Largo', 'Río Negro', 'Durazno',
'Treinta y Tres', 'Soriano',
'Florida', 'Flores', 'Rocha',
'Lavalleja', 'Colonia', 'San José',
'Maldonado', 'Canelones', 'Montevideo'),
place_id = c(12409, 12421, 12418, 12424,
12417, 12411, 12419, 12412,
12425, 12423, 7534, 12413,
12420, 12414, 8007, 12422,
12415, 12410, 12416))
dos_taxa_por_depto <- getTwoTaxaPerState(place_ids = place_ids_departamento$place_id,
preferred_place_id = 7259)
dos_taxa_por_depto <- left_join(place_ids_departamento,
dos_taxa_por_depto)
dos_taxa_por_depto_fotos <- getPhotoFromiNat(species_list = unique(dos_taxa_por_depto$taxon_name),
place_id = 7259,
license = 'cc-by')
dos_taxa_por_depto <- left_join(dos_taxa_por_depto,
dos_taxa_por_depto_fotos)
dos_taxa_por_depto %>%
select(departamento, kingdom, iconic_taxon_name,
taxon_name, common_name, observations_place,
observation_url, photo_url_1) %>%
mutate(photo_url_1 = '') %>%
rename(Departamento = departamento,
Reino = kingdom,
Grupo = iconic_taxon_name,
Especie = taxon_name,
`Nombre común` = common_name,
`N observaciones` = observations_place,
URL = observation_url,
Imagen = photo_url_1) %>%
kableExtra::kable() %>%
kableExtra::column_spec(7, link = dos_taxa_por_depto$observation_url) %>%
kableExtra::column_spec(8, image = kableExtra::spec_image(dos_taxa_por_depto$photo_url_1, 280, 200))| Departamento | Reino | Grupo | Especie | Nombre común | N observaciones | URL | Imagen |
|---|---|---|---|---|---|---|---|
| Artigas | Animalia | Amphibia | Rhinella diptycha | Cururú | 35 | https://www.naturalista.uy/observations/192809014 | |
| Artigas | Plantae | Plantae | Myrcia selloi | Cambuí | 19 | https://www.naturalista.uy/observations/139880873 | |
| Salto | Animalia | Aves | Rhea americana | Ñandú | 45 | https://www.naturalista.uy/observations/196953351 | |
| Salto | Plantae | Plantae | Parodia mammulosa | 23 | https://www.naturalista.uy/observations/193116458 | ||
| Rivera | Animalia | Aves | Hirundinea ferruginea | Viudita colorada | 16 | https://www.naturalista.uy/observations/264568608 | |
| Rivera | Plantae | Plantae | Aloysia gratissima | Vara dulce | 12 | https://www.naturalista.uy/observations/264102350 | |
| Tacuarembó | Animalia | Aves | Theristicus caudatus | Bandurria baya | 35 | https://www.naturalista.uy/observations/108657606 | |
| Tacuarembó | Plantae | Plantae | Lithraea molleoides | chichita | 21 | https://www.naturalista.uy/observations/191840390 | |
| Paysandú | Animalia | Aves | Sporophila cinnamomea | Capuchino corona gris | 24 | https://www.naturalista.uy/observations/104898265 | |
| Paysandú | Plantae | Plantae | Butia yatay | Palmera yatay | 23 | https://www.naturalista.uy/observations/203461200 | |
| Cerro Largo | Animalia | Amphibia | Boana pulchella | Ranita del zarzal | 50 | https://www.naturalista.uy/observations/36323790 | |
| Cerro Largo | Plantae | Plantae | Parodia erinaceus | 51 | https://www.naturalista.uy/observations/276534175 | ||
| Río Negro | Animalia | Mammalia | Axis axis | Axis | 38 | https://www.naturalista.uy/observations/248297709 | |
| Río Negro | Plantae | Plantae | Geoffroea decorticans | Chañar | 27 | https://www.naturalista.uy/observations/203924577 | |
| Durazno | Animalia | Aves | Paroaria coronata | Cardenal copete rojo | 10 | https://www.naturalista.uy/observations/170642751 | |
| Durazno | Plantae | Plantae | Echium plantagineum | Viborera | 7 | https://www.naturalista.uy/observations/106017904 | |
| Treinta y Tres | Animalia | Aves | Sporophila palustris | Capuchino pecho blanco | 19 | https://www.naturalista.uy/observations/169177445 | |
| Treinta y Tres | Plantae | Plantae | Radlkoferotoma cistifolium | 23 | https://www.naturalista.uy/observations/147293154 | ||
| Soriano | Animalia | Amphibia | Boana pulchella | Ranita del zarzal | 79 | https://www.naturalista.uy/observations/36323790 | |
| Soriano | Plantae | Plantae | Vachellia caven | Espinillo | 11 | https://www.naturalista.uy/observations/245327426 | |
| Florida | Animalia | Aves | Geranoaetus melanoleucus | Águila mora | 26 | https://www.naturalista.uy/observations/190576580 | |
| Florida | Plantae | Plantae | Glandularia peruviana | margarita punzó | 12 | https://www.naturalista.uy/observations/60470439 | |
| Flores | Animalia | Aves | Paroaria coronata | Cardenal copete rojo | 27 | https://www.naturalista.uy/observations/170642751 | |
| Flores | Plantae | Plantae | Schinus longifolia | Molle | 19 | https://www.naturalista.uy/observations/245927978 | |
| Rocha | Animalia | Aves | Spheniscus magellanicus | Pingüino de Magallanes | 181 | https://www.naturalista.uy/observations/229745150 | |
| Rocha | Plantae | Plantae | Stevia satureiifolia | 87 | https://www.naturalista.uy/observations/106247762 | ||
| Lavalleja | Animalia | Reptilia | Salvator merianae | Lagarto Overo | 43 | https://www.naturalista.uy/observations/65443175 | |
| Lavalleja | Plantae | Plantae | Parodia erinaceus | 26 | https://www.naturalista.uy/observations/276534175 | ||
| Colonia | Animalia | Aves | Furnarius rufus | Hornero | 70 | https://www.naturalista.uy/observations/62363056 | |
| Colonia | Plantae | Plantae | Erythrina crista-galli | Ceibo | 64 | https://www.naturalista.uy/observations/64559085 | |
| San José | Animalia | Aves | Hymenops perspicillatus | Pico de plata | 35 | https://www.naturalista.uy/observations/272512696 | |
| San José | Plantae | Plantae | Schinus longifolia | Molle | 31 | https://www.naturalista.uy/observations/245927978 | |
| Maldonado | Animalia | Aves | Larus dominicanus | Gaviota cocinera | 218 | http://www.naturalista.uy/observations/87239 | |
| Maldonado | Plantae | Plantae | Parodia erinaceus | 232 | https://www.naturalista.uy/observations/276534175 | ||
| Canelones | Animalia | Insecta | Harmonia axyridis | Catarina asiática | 120 | https://www.naturalista.uy/observations/118261158 | |
| Canelones | Plantae | Plantae | Carpobrotus edulis | Garra de León | 96 | https://www.naturalista.uy/observations/198304124 | |
| Montevideo | Animalia | Aves | Furnarius rufus | Hornero | 169 | https://www.naturalista.uy/observations/62363056 | |
| Montevideo | Plantae | Plantae | Senecio crassiflorus | 156 | https://www.naturalista.uy/observations/193761839 |
uruguay <- geodata::gadm(country = 'UY',
level = 1, path = 'data/') %>%
st_as_sf() %>% st_cast()
planta_por_depto <- left_join(uruguay %>%
select(departamento=NAME_1),
dos_taxa_por_depto %>%
filter(kingdom=='Plantae'))
animal_por_depto <- left_join(uruguay %>%
select(departamento=NAME_1),
dos_taxa_por_depto %>%
filter(kingdom=='Animalia'))
palete <- colorRampPalette(RColorBrewer::brewer.pal(10, 'Paired'))( 19 ) ## (n)tm_shape(planta_por_depto %>%
select(Departamento = departamento,
Grupo = iconic_taxon_name,
Especie = taxon_name,
`Nombre común` = common_name,
`N observaciones` = observations_place)) +
tm_polygons(fill = 'Especie',
fill.scale = tm_scale_categorical(values=palete),
fill.legend = tm_legend_hide()) +
tm_text('Especie', fontfamily = 'monospace',
options = opt_tm_text(remove_overlap = TRUE)) tm_shape(animal_por_depto %>%
select(Departamento = departamento,
Grupo = iconic_taxon_name,
Especie = taxon_name,
`Nombre común` = common_name,
`N observaciones` = observations_place)) +
tm_polygons(fill = 'Especie',
fill.scale = tm_scale_categorical(values=palete),
fill.legend = tm_legend_hide()) +
tm_text('Especie', fontfamily = 'monospace',
options = opt_tm_text(remove_overlap = TRUE))