Supplementary Information

Author

Florencia Grattarola

Published

November 24, 2023

Status of the invasion of Carpobrotus edulis in Uruguay based on community science records

Carpobrotus edulis

Data download

To download the data we used the iNaturalist API, considering:

  • ‘Uruguay’ as location: place_id=7259
  • ‘Carpobrotus edulis’ as taxon: taxon_id=49322
  • ‘Research grade’ as data quality assessment: quality_grade=research
library(httr)
library(jsonlite)
library(tidyverse)

getCarpobrotusObservations <- function(place_id, taxon_id, quality_grade){

  total_results = NULL
  page = 1 
  delay = 1.0
  results = tibble()
  
  while(is.null(total_results) || nrow(results) < total_results) {
    
    call_url <- str_glue('https://api.inaturalist.org/v1/observations?',
                         'place_id={place_id}&taxon_id={taxon_id}',
                         '&captive=false&geoprivacy=open',
                         '&quality_grade={quality_grade}',
                         '&per_page=200&page={page}')
    
    get_json_call <- GET(url = call_url) %>% 
      content(as = "text") %>% fromJSON(flatten = TRUE)
    
    if (!is.null(get_json_call)) {
      if (is.null(total_results)) {
        total_results <- get_json_call$total_results # number of results of the call
      }
      results_i <- as_tibble(get_json_call$results) %>% 
        select(taxon.name, taxon.rank, identifications_count, 
               created_at, observed_on, 
               geojson.coordinates, positional_accuracy,
               user.login, user.id, user.name, user.observations_count,
               user.identifications_count, user.activity_count, 
               license_code, num_identification_agreements, uri) %>%
        unnest_wider(geojson.coordinates, names_sep = "_") %>%
        rename(longitude=geojson.coordinates_1, latitude=geojson.coordinates_2)
      results <- rbind(results, results_i)
      page <- page + 1
      Sys.sleep(delay)
    }
  }
  return(results)
}
  
datos_carpobrotus <- getCarpobrotusObservations(place_id=7259,
                                                taxon_id=49322,
                                      quality_grade='research')

datos_carpobrotus <- datos_carpobrotus %>% filter(created_at<='2023-06-09')
Download date

9th of June, 2023

Spatial and temporal analyses

Data preparation

To download the polygon for Uruguay, I used the geouy package, with geouy::load_geouy('Dptos'). I saved this object to avoid downloading it manually again. The CRS of the sf object is: EPSG:32721. I also used the package geonames to get the department (stateProvince) for each record.

Code
library(lubridate)
library(geonames)
options(geonamesUsername="biodiversidata") # A (free) username is required and rate limits exist
library(sf)
sf::sf_use_s2(FALSE)
# options
options(scipen = 999)

uruguay <- readRDS('data/Uruguay.rds')
deptos_costeros <- c('MONTEVIDEO','MALDONADO','CANELONES', 'ROCHA')
costa_uruguay <- uruguay %>% filter(nombre %in% deptos_costeros)
costa_entera_uruguay <- uruguay %>% filter(nombre %in% c(deptos_costeros, 'SAN JOSÉ'))
localidades <- readRDS('data/localidades.RDS')
localidades_costa <- localidades %>% filter(NOMBDEPTO %in% deptos_costeros)
areas_protegidas <- read_sf('data/areas_protegidas/c397Polygon.shp',  options = 'ENCODING=WINDOWS-1252') %>% 
  st_transform(32721) %>% st_cast()

areas_protegidas_costa <- areas_protegidas %>% 
  filter(nombre %in%  c('Cerro Verde', 'Cabo Polonio', 'Laguna de Rocha', 'Laguna Garzón', 'Isla de Flores', 'Humedales del Santa Lucla'))

getStateProvince <- function(lat, lng){
  subdivision <- try(GNcountrySubdivision(lat, lng, radius = "1", maxRows = 1), silent = TRUE)
  Sys.sleep(1.0)
  if(class(subdivision)=='try-error'){
    subdivision$adminName1 <- NA
  }
  else if (length(subdivision$adminName1)==0){
    subdivision$adminName1 <- NA
  }
  return(subdivision$adminName1)
}

# stateProvince of earch record
datos_carpobrotus<- datos_carpobrotus %>%
  mutate(stateProvince=map2_chr(latitude, longitude, getStateProvince)) 

datos_carpobrotus <- datos_carpobrotus %>% 
  mutate(stateProvince =case_when(stateProvince=='Rocha Department' ~ 'Rocha',
                                  stateProvince=='Montevideo Department' ~ 'Montevideo',
                                  TRUE ~ stateProvince))

# estación del año
datos_carpobrotus<- datos_carpobrotus %>% 
  mutate(observed_on=as_date(observed_on)) %>% 
  mutate(season=lubridate::quarter(observed_on)) %>% 
  mutate(season=ifelse(season==1, 'summer', 
                       ifelse(season==2, 'autumn', 
                              ifelse(season==3, 'winter', 'spring'))))

saveRDS(datos_carpobrotus, 'data/datos_carpobrotus.rds')
write_excel_csv(datos_carpobrotus, 'data/datos_carpobrotus.csv', na = '')

Spatial coverage

Code
library(tmap)
tmap_mode("view")

sf_carpobrotus <- datos_carpobrotus %>% 
    st_as_sf(coords = c("longitude", "latitude")) %>% 
    st_set_crs(4326) %>% 
    st_transform(32721)


tm_graticules(alpha = 0.3) +
    tm_shape(areas_protegidas_costa) +
    tm_fill('darkgreen', alpha = 0.4) +
    tm_shape(localidades_costa %>% filter(AREA>5000000)) +
    tm_fill(col='blue', alpha = 0.4) +
    tm_shape(sf_carpobrotus) +
    tm_dots(alpha = 0.4)
Code
mapa.carpobrotus <- tm_graticules(alpha = 0.3) +
    tm_shape(uruguay, bbox = costa_entera_uruguay) +
    tm_fill(col='grey97') +
    tm_borders(col='grey80', alpha = 0.4) +
    tm_shape(costa_uruguay) +
    tm_fill(col='grey90') +
    tm_borders(col='grey60', alpha = 0.4) +
    tm_shape(st_intersection(areas_protegidas_costa, uruguay)) +
    tm_fill('darkgreen', alpha = 0.4) +
    tm_shape(localidades_costa %>% filter(AREA>5000000)) +
    tm_fill(col='blue', alpha = 0.4) +
    tm_shape(sf_carpobrotus) +
    tm_dots(alpha = 0.4) + 
    tm_layout(scale = 2)

tmap_save(mapa.carpobrotus, 'figs/mapa.carpobrotus.svg')
Departments
Code
library(knitr)

datos_carpobrotus %>% 
  group_by(stateProvince) %>%
  count() %>%  rename(Department=stateProvince,
                      `Number of records`=n) %>% 
  kable()
Department Number of records
Canelones 46
Maldonado 98
Montevideo 12
Rocha 48
Protected areas
Code
carpobrotus_areas_protegidas <- st_join(areas_protegidas_costa,
                                   sf_carpobrotus) %>% 
  group_by(id, nombre) %>% 
  summarise(NR=ifelse(n_distinct(taxon.name, na.rm=T)!=0, n(), 0),
            presence=ifelse(NR>0, 1, 0)) %>% 
  st_cast()

mapa.carpobrotus.areas_protegidas <-  tm_graticules(alpha = 0.3) +
    tm_shape(uruguay, bbox = costa_entera_uruguay) +
    tm_fill(col='grey97') +
    tm_borders(col='grey80', alpha = 0.4) +
    tm_shape(costa_uruguay) +
    tm_fill(col='grey90') +
    tm_borders(col='grey60', alpha = 0.4) +
    tm_shape(carpobrotus_areas_protegidas) +
    tm_fill('presence', alpha = 0.4, style = 'cat', palette = 'Set1')  

mapa.carpobrotus.areas_protegidas

Temporal coverage

A total of 78 users recorded 204 observations of Carpobrotus edulis. The first records is from 2008-03-16 and the last is from 2023-05-10.

Seasons
Code
library(patchwork)

timeline.plot <- datos_carpobrotus %>% 
    add_count(taxon.name, year=year(observed_on), 
              name='records_per_year') %>% 
    ggplot(., aes(x=observed_on, y=records_per_year)) +
    geom_line(show.legend = FALSE, linewidth=1) +
    scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
    theme_bw()+
    labs(x='', y= 'Number of records')

  
season.year.plot <- datos_carpobrotus %>% 
    add_count(taxon.name, season, name='records_per_season') %>% 
    mutate(season=factor(season, 
                         levels = c('summer', 'autumn', 'winter', 'spring'))) %>%
    ggplot(aes(x=season, y=observed_on)) +  
    geom_jitter(aes(col = season), width = 0.01, show.legend = FALSE) + 
    stat_summary(fun = mean, fun.min = min, fun.max = max) +
    theme_bw() +
    labs(x='', y= 'Date')

season.n.plot <- datos_carpobrotus %>% 
    add_count(taxon.name, season, name='records_per_season') %>% 
    mutate(season=factor(season, 
                         levels = c('summer', 'autumn', 'winter', 'spring'))) %>% 
    ggplot(aes(x=season, y=records_per_season)) +  
    geom_segment(aes(x=season, xend=season, y=0, 
                     yend=records_per_season, col=season), show.legend = FALSE) +
    geom_point(aes(col=season), show.legend = FALSE) +
    theme_bw() +
    labs(x='', y= 'Number of records')

timeline.plot / (season.year.plot | season.n.plot)

Code
ggsave(timeline.plot, filename='figs/timeline.plot.svg', device = 'svg', width=6, height=3, dpi=300)
ggsave(season.n.plot, filename='figs/season.n.plot.svg', device = 'svg', width=3, height=3, dpi=300)

Photographic analyses

We assessed the following attributes:

  • Density: high, medium, low
  • Phenology: no evidence of flowering/fruiting, flowering, flower budding , fruiting, flowering/flower budding, flowering/fruiting
  • Presence of humann infraestructure: present, absent
Code
photo_evaluation <- read_csv('data/photo_evalutaion.csv')

photo_evaluation_carpobrotus <- left_join(datos_carpobrotus, 
                                          photo_evaluation %>% select(uri, density, phenology, infrastructure)) %>% 
  mutate(density = case_when(density=='alta'|density=='alta/media' ~ 'high',
                             density=='media'|density=='media/alta' ~ 'medium',
                             density=='baja' ~ 'low',
                             is.na(density) ~ 'not assessed')) %>% 
  mutate(phenology=ifelse(phenology=='No evidence of flowering', 
                          'no evidence of flowering/fruiting', phenology)) %>% 
  mutate(infrastructure = case_when(infrastructure==0 ~ 'absent',
                                    infrastructure==1 ~ 'present',
                                    is.na(infrastructure) ~ 'not assessed')) %>%
   mutate(density=fct_relevel(density, c('high', 'medium', 'low', 'not assessed')))

sf_photo_evaluation_carpobrotus <- photo_evaluation_carpobrotus %>% 
    st_as_sf(coords = c("longitude", "latitude")) %>% 
    st_set_crs(4326) %>% 
    st_transform(32721)

Density

Code
photo_evaluation_carpobrotus %>% 
  group_by(density) %>% 
  summarise(count = n()) %>% 
  mutate(freq = scales::label_percent()(count / sum(count))) %>% 
  arrange(desc(count)) %>%
  rename(Density=density, N=count, `%`=freq) %>%
  kable()
Density N %
high 75 36.8%
medium 67 32.8%
not assessed 33 16.2%
low 29 14.2%
Code
tmap_mode("view")
# interactivos

tm_graticules(alpha = 0.3) +
    tm_shape(localidades_costa %>% filter(AREA>5000000)) +
    tm_fill(col='grey10', alpha = 0.4) +
    tm_shape(sf_photo_evaluation_carpobrotus %>% 
                 mutate(density=ifelse(density=='not assessed', NA, density))) +
    tm_dots(col = 'density', title = 'Density',
            palette = 'PRGn', showNA=F, labels=c('high', 'medium', 'low')) +
    tm_shape(costa_uruguay) +
    tm_borders(col='grey60', alpha = 0.4)

Phenology

Code
photo_evaluation_carpobrotus %>% 
  group_by(phenology) %>% 
  summarise(count = n()) %>% 
  mutate(freq = scales::label_percent()(count / sum(count))) %>% 
  arrange(desc(count)) %>%
  rename(Phenology=phenology, N=count, `%`=freq) %>%
  kable()
Phenology N %
no evidence of flowering/fruiting 117 57.35%
fruiting 42 20.59%
flowering 27 13.24%
flowering/flower budding 11 5.39%
flowering/fruiting 4 1.96%
flower budding 3 1.47%
Code
phenology.plot <- photo_evaluation_carpobrotus %>% 
    filter(!phenology %in% c('flower budding', 'flowering/fruiting' )) %>% 
    add_count(phenology, month=(month(observed_on)), 
              name='records_per_month') %>% 
    select(month, records_per_month, phenology) %>% 
    group_by(month) %>% distinct(phenology,.keep_all = T) %>% 
    mutate(total_phenology_per_month=sum(records_per_month)) %>% ungroup() %>% 
    mutate(percentage=records_per_month*100/total_phenology_per_month) %>% 
    complete(month, phenology, fill = list(percentage = 0)) %>% 
    ggplot(., aes(x=(month), #strftime(observed_on, format="%b"),
                  y=percentage,
                  col=phenology)) +
    geom_line(size=2) +
    scale_color_brewer(palette='Set2') + 
    scale_x_continuous(breaks= c(1,2,3,4,5,6,7,8,9,10,11,12),
                       labels = c('Jan', 'Feb', 'Mar',
                                  'Apr','May','Jun','Jul',
                                  'Aug','Sep','Oct','Nov','Dec'))+
    scale_y_continuous(labels = scales::percent_format(scale = 1)) +
    theme_bw() +
    labs(x='Months', y= '% of records', col='Phenology')

phenology.plot

Code
ggsave(phenology.plot, filename='figs/phenology.plot.svg', device = 'svg', width=7.2, height=5.2, dpi=300)

Infraestructure

Code
photo_evaluation_carpobrotus %>% 
  group_by(infrastructure) %>% 
  summarise(count = n()) %>% 
  mutate(freq = scales::label_percent()(count / sum(count))) %>% 
  arrange(desc(count)) %>%
  rename(Infrastructure=infrastructure, N=count, `%`=freq) %>% 
  kable()
Infrastructure N %
absent 120 58.8%
present 46 22.5%
not assessed 38 18.6%
Code
tmap_mode("view")
tm_graticules(alpha = 0.3) +
    tm_shape(localidades_costa %>% filter(AREA>5000000)) +
    tm_fill(col='grey10', alpha = 0.4) +
    tm_shape(sf_photo_evaluation_carpobrotus) +
    tm_dots(col = 'infrastructure', title = 'Infrastructure',
            palette = 'Set1', labels=c('absent', 'present','not assessed')) +
    tm_shape(costa_uruguay) +
    tm_borders(col='grey60', alpha = 0.4)

All records on NaturalistaUY

Data download (Montevideo, Canelones, Maldonado and Rocha)

Because iNat’s API doesn’t allow to download more than 10,000 records, we downloaded the data directly from the website naturalista.uy/observations/export. We considered:

  • ‘Montevideo’, ‘Canelones’, ‘Maldonado’ and ‘Rocha’ as location: place_id=12416, place_id=12410, place_id=12415, place_id=12420
  • ‘FALSE’ as captive/cultivated quality assessment: captive=false
  • ‘open’ as geoprivacy: geoprivacy=open
Download date

9th of June, 2023

Code
allObservations <- read_csv('data/observations-334644.csv', guess_max = 72000)

allObservations <- allObservations %>% 
  filter(coordinates_obscured==FALSE & 
           !is.na(taxon_species_name) & 
           captive_cultivated == FALSE) %>% 
  select(kingdom=taxon_kingdom_name, phylum=taxon_phylum_name, 
         class=taxon_class_name, order=taxon_order_name,
         family=taxon_family_name, genus=taxon_genus_name, 
         species=taxon_species_name, scientific_name,
         quality_grade, observed_on, user_login, user_id,
         state_province=place_admin1_name, 
         longitude, latitude)

# filter plant data
all_records_time <- left_join(
    datos_carpobrotus %>% mutate(year=year(observed_on)) %>% 
        add_count(taxon.name, year=year(observed_on), 
                  name='records_per_year') %>% 
      select(observed_on, year, carpobrotus_records_per_year= records_per_year),
    allObservations %>% mutate(year=year(observed_on)) %>% 
      filter(kingdom=='Plantae') %>% 
        add_count(year=year(observed_on), 
                  name='records_per_year') %>% 
        select(year, all_records_per_year=records_per_year)  %>% 
        distinct(year, all_records_per_year)
)

Temporal coverage

Code
coef <- 100

double_temporal_plot <- ggplot(data=all_records_time %>% filter(observed_on<'2022-12-31'),
                               aes(x=observed_on)) +
  geom_line(aes(y=carpobrotus_records_per_year, col='Carpobrotus'), size=1) +
  geom_line(aes(y=all_records_per_year/coef, col='Plantae'), size=1, show.legend = F) +
  scale_y_continuous(name = expression(paste('Number of ', italic('Carpobrotus edulis'), ' records')),
                     sec.axis = sec_axis(~.*coef,
                                         name= 'Number of Plant records')) +
  scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
  theme_bw() + labs(x='', col='')

double_temporal_plot

Code
ggsave(double_temporal_plot, filename='figs/double.temporal.plot.svg', device = 'svg',  width=6, height=3, dpi=300)

Spatial analyses

Creation of grid cell (10x10km)

allObservations_sf <- allObservations %>% 
    st_as_sf(coords = c("longitude", "latitude")) %>% 
    st_set_crs(4326) %>% 
    st_transform(32721)

costa_uruguay_grillas <- st_make_grid(st_union(costa_uruguay), 10000) %>%
  st_intersection(st_union(costa_uruguay)) %>% 
  st_sf(gridID=1:length(.), geometry= .) %>% 
  st_make_valid() %>% st_cast() 

Intersection of grid cells with all the data and the data of Caprobrotus edulis

grillas_allObservations <- st_join(costa_uruguay_grillas,
                                   allObservations_sf) %>% 
  group_by(gridID) %>% 
  summarise(NR=ifelse(n_distinct(species, na.rm=T)!=0, n(), 0),
            SR=n_distinct(species, na.rm = T),
            spsList = paste(species, collapse = ';')) %>% 
  st_cast()

grillas_carpobrotus <- st_join(costa_uruguay_grillas, sf_carpobrotus) %>% 
  group_by(gridID) %>% 
  summarise(NR=ifelse(n_distinct(taxon.name, na.rm=T)!=0, n(), 0)) %>% 
  st_cast()

Estimation of sampling effort per grid cell

We used the function get_gridsSlopes() created by Biodiversidata (Grattarola et al. 2020).

The code is available at the GitHub repo: Multiple forms of hotspots of tetrapod biodiversity and the challenges of open-access data scarcity.

To identify the areas of ignorance we quantified the levels of inventory incompleteness for each group by using curvilinearity of smoothed species accumulation curves (SACs). This method assumes that SACs of poorly sampled grids tend towards a straight line, while those of better sampled ones have a higher degree of curvature. As a proxy for inventory incompleteness we calculated the degree of curvilinearity as the mean slope of the last 10% of SACs.

Code
# The function ```get_gridsSlopes``` finds a species accumulation curve (SAC) for each grid-cell using the method ‘exact’ of the function ```specaccum``` of the vegan package and then calculates the degree of curvilinearity as the mean slope of the last 10% of the curve. 

library(vegan)
library(spaa)

get_gridsSlopes <- function(data_abundance){
  gridSlope <- data.frame(gridID=integer(), slope=numeric(), stringsAsFactors=FALSE)
  data_abundance <- as.data.frame(data_abundance) 
  data_abundance$abundance <- as.integer(1)
  cells <- unique(data_abundance$gridID)
  splistT <- list()
  spaccum <- list()
  slope <- list()
  for (i in cells) {
    splist <- data_abundance[data_abundance$gridID == i,c(2:4)]
    splistT[[i]] = data2mat(splist) 
    spaccum[[i]] = specaccum(splistT[[i]], method = "exact")
    slope[[i]] = (spaccum[[i]][[4]][length(spaccum[[i]][[4]])]-
                    spaccum[[i]][[4]][ceiling(length(spaccum[[i]][[4]])*0.9)])/
      (length(spaccum[[i]][[4]])- ceiling(length(spaccum[[i]][[4]])*0.9))
    gridSlope_i <- data.frame(gridID=i, slope=slope[[i]], stringsAsFactors=FALSE)
    gridSlope <- rbind(gridSlope, gridSlope_i) 
  }
  gridSlope <- gridSlope %>% as_tibble() %>% 
    mutate(slope=ifelse(is.nan(slope), NA, slope))
  return(gridSlope)
}

allObservations.SACs <- grillas_allObservations %>% as_tibble() %>% 
    mutate(species=str_split(spsList, ';')) %>% 
    unnest(species) %>% 
    group_by(spsList) %>% mutate(sample = row_number()) %>% 
    ungroup() %>% 
    mutate(sample=ifelse(is.na(species), 0 , sample)) %>% 
    select(gridID, sample, species)

allObservations.incompleteness <- get_gridsSlopes(allObservations.SACs)

Spatian join

All the data per grid cell: total number of records, species richness, incompleteness curve (national sampling effort), and number of records of Carpobrotus edulis.

costa_uruguay.incompleteness <- left_join(grillas_allObservations,
          allObservations.incompleteness) %>%
  left_join(., grillas_carpobrotus %>% 
              rename(carpobrotus=NR) %>% 
              st_drop_geometry())

Sampling bias

Maps

Correlations (non-spatial)

Code
library(ggpubr)

tabla.final <- costa_uruguay.incompleteness %>% 
    st_drop_geometry() %>% 
    select(grilla=gridID, NR, SR, carpobrotus, slope)

summary(lm(carpobrotus ~ NR, data=tabla.final)) 

Call:
lm(formula = carpobrotus ~ NR, data = tabla.final)

Residuals:
     Min       1Q   Median       3Q      Max 
-13.3254  -0.1541   0.0797   0.1381  23.3044 

Coefficients:
              Estimate Std. Error t value            Pr(>|t|)    
(Intercept) -0.1381389  0.1583721  -0.872               0.384    
NR           0.0073048  0.0005093  14.342 <0.0000000000000002 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.365 on 259 degrees of freedom
Multiple R-squared:  0.4426,    Adjusted R-squared:  0.4405 
F-statistic: 205.7 on 1 and 259 DF,  p-value: < 0.00000000000000022
Code
nr.caprobrotus <- tabla.final %>% filter(carpobrotus>0) %>% 
    ggplot(aes(x=NR, y=carpobrotus)) +
    geom_jitter() + 
    geom_smooth(method = 'lm') + 
    stat_regline_equation(label.y = 30, aes(label = ..eq.label..)) +
    stat_regline_equation(label.y = 28, aes(label = ..adj.rr.label..)) +
    labs(x='Number of records per grid cell', y='Caprobrotus edulis records per grid cell') +
    theme_bw()

summary(lm(carpobrotus ~ slope, data=tabla.final)) 

Call:
lm(formula = carpobrotus ~ slope, data = tabla.final)

Residuals:
    Min      1Q  Median      3Q     Max 
-5.5117 -1.6170 -0.3330  0.8455 29.9189 

Coefficients:
            Estimate Std. Error t value       Pr(>|t|)    
(Intercept)    7.202      1.004   7.172 0.000000000044 ***
slope         -8.586      1.404  -6.118 0.000000009632 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.788 on 135 degrees of freedom
  (124 observations deleted due to missingness)
Multiple R-squared:  0.2171,    Adjusted R-squared:  0.2113 
F-statistic: 37.43 on 1 and 135 DF,  p-value: 0.000000009632
Code
incompleteness.caprobrotus <- tabla.final %>% filter(carpobrotus>0) %>% 
    ggplot(aes(x=slope, y=carpobrotus)) +
    geom_point() + geom_smooth(method = 'lm') + 
    stat_regline_equation(label.y = 30, label.x = 0.65, aes(label = ..eq.label..)) +
    stat_regline_equation(label.y = 28, label.x = 0.65, aes(label = ..adj.rr.label..)) +
    labs(x='Sampling incompleteness per grid cell', y='Caprobrotus edulis records per grid cell') +
    theme_bw()

nr.caprobrotus / incompleteness.caprobrotus

Code
ggsave(nr.caprobrotus | incompleteness.caprobrotus, filename='figs/correlation.plot.svg', device = 'svg', width=9.2, height=5.2, dpi=300)

Spatial correlations

Code
library(SpatialPack)

XY_costa_uruguay.incompleteness <- st_centroid(costa_uruguay.incompleteness) %>%
                                                 st_coordinates() %>% as_tibble()


costa_uruguay.incompleteness.cor <- modified.ttest(costa_uruguay.incompleteness$NR,
                                 costa_uruguay.incompleteness$carpobrotus,
                                 XY_costa_uruguay.incompleteness)

CORR_NR <- tibble(Cor = 'total number of records vs records of C. edulis',
               R = costa_uruguay.incompleteness.cor$corr,
               p.value = costa_uruguay.incompleteness.cor$p.value,
               Fstat = costa_uruguay.incompleteness.cor$Fstat,
               dof = costa_uruguay.incompleteness.cor$dof)

CORR_NR %>% 
  kable(digits = 3)
Cor R p.value Fstat dof
total number of records vs records of C. edulis 0.665 0 0.794 153.634
Code
demografia_hogares <- readRDS('data/demografia_hogares.rds')

pop_por_grilla <- st_join(costa_uruguay_grillas, demografia_hogares) %>% 
    group_by(gridID) %>%
    summarise(pop=sum(h_tot, na.rm = T)) %>% 
    st_cast()

pop_por_grilla.cor <- modified.ttest(costa_uruguay.incompleteness$NR,
                                 pop_por_grilla$pop,
                                 XY_costa_uruguay.incompleteness)

CORR_POP <- tibble(Cor = 'number of inhabitants vs records of C. edulis',
               R = pop_por_grilla.cor$corr,
               p.value = pop_por_grilla.cor$p.value,
               Fstat = pop_por_grilla.cor$Fstat,
               dof = pop_por_grilla.cor$dof)

CORR_POP %>% 
  kable(digits = 3)
Cor R p.value Fstat dof
number of inhabitants vs records of C. edulis 0.299 0.012 0.099 67.403
Code
tmap_mode("view")
tm_graticules(alpha = 0.3) +
  tm_shape(pop_por_grilla) + 
  tm_fill(col='pop', n = 6, style='jenks', title='Population') +
  tm_shape(costa_uruguay) +
  tm_borders(col='grey60', alpha = 0.4)

Final table

Data per grid cell:

  • Number of records: total number of records on NaturalistaUY (all species)
  • Species richness: total number of species on NaturalistaUY
  • Carpobrotus records: number of records of Carpobrotus edulis on NaturalistaUY
  • Incompleteness: slope of the SAC, a measure of sampling effort (values close to 0 indicate well sampled grid cells)
Code
tabla.final %>% filter(carpobrotus>0) %>% arrange(slope) %>% 
  select(`Number of records`=NR,
         `Species richness`=SR,
         `Carpobrotus record`=carpobrotus, 
         Incompleteness=slope) %>% 
  kable(digits = 3)
Number of records Species richness Carpobrotus record Incompleteness
1980 792 1 0.204
1507 620 2 0.219
992 424 10 0.246
1620 691 35 0.247
1093 493 13 0.267
1213 572 8 0.274
1040 493 14 0.289
1066 508 13 0.293
996 541 7 0.312
1297 681 4 0.335
635 345 3 0.345
480 250 1 0.355
1001 568 11 0.370
735 433 19 0.393
443 258 6 0.400
347 205 4 0.410
481 304 8 0.453
326 216 1 0.461
419 267 8 0.461
202 130 1 0.462
122 82 4 0.471
547 365 3 0.481
254 184 4 0.566
239 179 4 0.604
159 122 2 0.615
103 85 3 0.698
89 80 1 0.815

Final dataset

Code
datos_carpobrotus %>% mutate(country='Uruguay') %>% 
  select(species=taxon.name, 
         `URL`=uri, 
         `geographic area`=stateProvince, 
         country, 
         `observed on`=observed_on) %>% 
  kable()
species URL geographic area country observed on
Carpobrotus edulis https://www.inaturalist.org/observations/165758448 Canelones Uruguay 2023-05-10
Carpobrotus edulis https://www.inaturalist.org/observations/160747945 Montevideo Uruguay 2023-05-09
Carpobrotus edulis https://www.inaturalist.org/observations/160665773 Rocha Uruguay 2023-05-07
Carpobrotus edulis https://www.inaturalist.org/observations/160469238 Canelones Uruguay 2023-05-07
Carpobrotus edulis https://www.inaturalist.org/observations/160107383 Montevideo Uruguay 2023-05-06
Carpobrotus edulis https://www.inaturalist.org/observations/160107298 Montevideo Uruguay 2023-05-06
Carpobrotus edulis https://www.inaturalist.org/observations/157858181 Canelones Uruguay 2023-04-29
Carpobrotus edulis https://www.inaturalist.org/observations/157424891 Maldonado Uruguay 2023-04-27
Carpobrotus edulis https://www.inaturalist.org/observations/156602647 Maldonado Uruguay 2023-04-25
Carpobrotus edulis https://www.inaturalist.org/observations/156316414 Maldonado Uruguay 2023-04-23
Carpobrotus edulis https://www.inaturalist.org/observations/156316292 Maldonado Uruguay 2023-04-23
Carpobrotus edulis https://www.inaturalist.org/observations/154544864 Maldonado Uruguay 2023-04-06
Carpobrotus edulis https://www.inaturalist.org/observations/154140599 Montevideo Uruguay 2023-04-09
Carpobrotus edulis https://www.inaturalist.org/observations/154140160 Montevideo Uruguay 2023-04-09
Carpobrotus edulis https://www.inaturalist.org/observations/154140050 Montevideo Uruguay 2023-04-09
Carpobrotus edulis https://www.inaturalist.org/observations/154139981 Montevideo Uruguay 2023-04-09
Carpobrotus edulis https://www.inaturalist.org/observations/154006507 Canelones Uruguay 2023-04-07
Carpobrotus edulis https://www.inaturalist.org/observations/153844993 Maldonado Uruguay 2023-04-05
Carpobrotus edulis https://www.inaturalist.org/observations/153844895 Maldonado Uruguay 2023-04-05
Carpobrotus edulis https://www.inaturalist.org/observations/153824614 Canelones Uruguay 2023-04-07
Carpobrotus edulis https://www.inaturalist.org/observations/153610798 Maldonado Uruguay 2023-04-05
Carpobrotus edulis https://www.inaturalist.org/observations/153574035 Maldonado Uruguay 2023-03-08
Carpobrotus edulis https://www.inaturalist.org/observations/153350214 Maldonado Uruguay 2023-04-02
Carpobrotus edulis https://www.inaturalist.org/observations/152541633 Maldonado Uruguay 2023-03-08
Carpobrotus edulis https://www.inaturalist.org/observations/152438876 Canelones Uruguay 2023-03-26
Carpobrotus edulis https://www.inaturalist.org/observations/151143893 Maldonado Uruguay 2023-03-14
Carpobrotus edulis https://www.inaturalist.org/observations/151143845 Maldonado Uruguay 2023-03-14
Carpobrotus edulis https://www.inaturalist.org/observations/150497307 Maldonado Uruguay 2023-03-07
Carpobrotus edulis https://www.inaturalist.org/observations/150497260 Maldonado Uruguay 2023-03-07
Carpobrotus edulis https://www.inaturalist.org/observations/150245299 Maldonado Uruguay 2023-03-04
Carpobrotus edulis https://www.inaturalist.org/observations/150245186 Maldonado Uruguay 2023-03-04
Carpobrotus edulis https://www.inaturalist.org/observations/150245008 Maldonado Uruguay 2023-03-04
Carpobrotus edulis https://www.inaturalist.org/observations/149666564 Rocha Uruguay 2023-02-25
Carpobrotus edulis https://www.inaturalist.org/observations/149431100 Maldonado Uruguay 2023-02-22
Carpobrotus edulis https://www.inaturalist.org/observations/149265269 Maldonado Uruguay 2023-02-20
Carpobrotus edulis https://www.inaturalist.org/observations/149239474 Maldonado Uruguay 2023-02-20
Carpobrotus edulis https://www.inaturalist.org/observations/149203139 Maldonado Uruguay 2023-02-19
Carpobrotus edulis https://www.inaturalist.org/observations/149169295 Maldonado Uruguay 2023-02-19
Carpobrotus edulis https://www.inaturalist.org/observations/149168987 Maldonado Uruguay 2023-02-19
Carpobrotus edulis https://www.inaturalist.org/observations/148868594 Maldonado Uruguay 2023-01-24
Carpobrotus edulis https://www.inaturalist.org/observations/148838888 Maldonado Uruguay 2023-02-15
Carpobrotus edulis https://www.inaturalist.org/observations/148609917 Maldonado Uruguay 2023-02-12
Carpobrotus edulis https://www.inaturalist.org/observations/147333000 Maldonado Uruguay 2023-01-25
Carpobrotus edulis https://www.inaturalist.org/observations/147268384 Maldonado Uruguay 2023-01-24
Carpobrotus edulis https://www.inaturalist.org/observations/147268334 Maldonado Uruguay 2023-01-24
Carpobrotus edulis https://www.inaturalist.org/observations/147245932 Maldonado Uruguay 2023-01-23
Carpobrotus edulis https://www.inaturalist.org/observations/147122640 Canelones Uruguay 2023-01-22
Carpobrotus edulis https://www.inaturalist.org/observations/146999721 Maldonado Uruguay 2023-01-21
Carpobrotus edulis https://www.inaturalist.org/observations/146999397 Maldonado Uruguay 2023-01-21
Carpobrotus edulis https://www.inaturalist.org/observations/146990683 Maldonado Uruguay 2023-01-20
Carpobrotus edulis https://www.inaturalist.org/observations/146931423 Maldonado Uruguay 2023-01-05
Carpobrotus edulis https://www.inaturalist.org/observations/146885644 Maldonado Uruguay 2023-01-18
Carpobrotus edulis https://www.inaturalist.org/observations/146822047 Maldonado Uruguay 2023-01-13
Carpobrotus edulis https://www.inaturalist.org/observations/146650655 Rocha Uruguay 2023-01-15
Carpobrotus edulis https://www.inaturalist.org/observations/146650577 Rocha Uruguay 2023-01-15
Carpobrotus edulis https://www.inaturalist.org/observations/146642537 Maldonado Uruguay 2023-01-15
Carpobrotus edulis https://www.inaturalist.org/observations/146642317 Maldonado Uruguay 2023-01-15
Carpobrotus edulis https://www.inaturalist.org/observations/146642176 Maldonado Uruguay 2023-01-15
Carpobrotus edulis https://www.inaturalist.org/observations/146642045 Maldonado Uruguay 2023-01-15
Carpobrotus edulis https://www.inaturalist.org/observations/146641979 Maldonado Uruguay 2023-01-15
Carpobrotus edulis https://www.inaturalist.org/observations/146641645 Maldonado Uruguay 2023-01-15
Carpobrotus edulis https://www.inaturalist.org/observations/146641633 Maldonado Uruguay 2023-01-15
Carpobrotus edulis https://www.inaturalist.org/observations/146641095 Maldonado Uruguay 2023-01-15
Carpobrotus edulis https://www.inaturalist.org/observations/146618601 Maldonado Uruguay 2023-01-15
Carpobrotus edulis https://www.inaturalist.org/observations/146618570 Maldonado Uruguay 2023-01-15
Carpobrotus edulis https://www.inaturalist.org/observations/146617550 Rocha Uruguay 2023-01-15
Carpobrotus edulis https://www.inaturalist.org/observations/146607130 Rocha Uruguay 2023-01-15
Carpobrotus edulis https://www.inaturalist.org/observations/146606806 Rocha Uruguay 2023-01-15
Carpobrotus edulis https://www.inaturalist.org/observations/146606746 Rocha Uruguay 2023-01-15
Carpobrotus edulis https://www.inaturalist.org/observations/146540142 Canelones Uruguay 2023-01-14
Carpobrotus edulis https://www.inaturalist.org/observations/146525194 Rocha Uruguay 2023-01-14
Carpobrotus edulis https://www.inaturalist.org/observations/146422669 Maldonado Uruguay 2022-07-10
Carpobrotus edulis https://www.inaturalist.org/observations/146402870 Rocha Uruguay 2023-01-12
Carpobrotus edulis https://www.inaturalist.org/observations/146402751 Rocha Uruguay 2023-01-12
Carpobrotus edulis https://www.inaturalist.org/observations/146402560 Rocha Uruguay 2023-01-12
Carpobrotus edulis https://www.inaturalist.org/observations/146399293 Rocha Uruguay 2023-01-12
Carpobrotus edulis https://www.inaturalist.org/observations/146399189 Rocha Uruguay 2023-01-12
Carpobrotus edulis https://www.inaturalist.org/observations/146399053 Rocha Uruguay 2023-01-12
Carpobrotus edulis https://www.inaturalist.org/observations/146398942 Rocha Uruguay 2023-01-12
Carpobrotus edulis https://www.inaturalist.org/observations/146398732 Rocha Uruguay 2023-01-12
Carpobrotus edulis https://www.inaturalist.org/observations/146395210 Rocha Uruguay 2023-01-12
Carpobrotus edulis https://www.inaturalist.org/observations/146395163 Rocha Uruguay 2023-01-12
Carpobrotus edulis https://www.inaturalist.org/observations/146359237 Rocha Uruguay 2023-01-11
Carpobrotus edulis https://www.inaturalist.org/observations/146344500 Rocha Uruguay 2023-01-11
Carpobrotus edulis https://www.inaturalist.org/observations/146342544 Rocha Uruguay 2023-01-11
Carpobrotus edulis https://www.inaturalist.org/observations/146307705 Maldonado Uruguay 2023-01-09
Carpobrotus edulis https://www.inaturalist.org/observations/146306693 Canelones Uruguay 2023-01-10
Carpobrotus edulis https://www.inaturalist.org/observations/146306434 Canelones Uruguay 2023-01-10
Carpobrotus edulis https://www.inaturalist.org/observations/146306222 Canelones Uruguay 2023-01-10
Carpobrotus edulis https://www.inaturalist.org/observations/146294366 Rocha Uruguay 2023-01-10
Carpobrotus edulis https://www.inaturalist.org/observations/146294199 Rocha Uruguay 2023-01-10
Carpobrotus edulis https://www.inaturalist.org/observations/146280646 Canelones Uruguay 2023-01-09
Carpobrotus edulis https://www.inaturalist.org/observations/146280645 Canelones Uruguay 2023-01-09
Carpobrotus edulis https://www.inaturalist.org/observations/146274697 Canelones Uruguay 2022-11-20
Carpobrotus edulis https://www.inaturalist.org/observations/146251684 Canelones Uruguay 2023-01-10
Carpobrotus edulis https://www.inaturalist.org/observations/146234118 Canelones Uruguay 2023-01-09
Carpobrotus edulis https://www.inaturalist.org/observations/146211779 Rocha Uruguay 2023-01-09
Carpobrotus edulis https://www.inaturalist.org/observations/146158085 Maldonado Uruguay 2023-01-08
Carpobrotus edulis https://www.inaturalist.org/observations/145908480 Canelones Uruguay 2008-03-16
Carpobrotus edulis https://www.inaturalist.org/observations/145689039 Canelones Uruguay 2015-10-19
Carpobrotus edulis https://www.inaturalist.org/observations/145228162 Maldonado Uruguay 2022-12-27
Carpobrotus edulis https://www.inaturalist.org/observations/145053220 Maldonado Uruguay 2022-12-25
Carpobrotus edulis https://www.inaturalist.org/observations/145046175 Maldonado Uruguay 2011-02-25
Carpobrotus edulis https://www.inaturalist.org/observations/144894147 Canelones Uruguay 2022-12-22
Carpobrotus edulis https://www.inaturalist.org/observations/143260064 Maldonado Uruguay 2022-11-26
Carpobrotus edulis https://www.inaturalist.org/observations/142292751 Rocha Uruguay 2022-11-16
Carpobrotus edulis https://www.inaturalist.org/observations/141403425 Canelones Uruguay 2022-11-03
Carpobrotus edulis https://www.inaturalist.org/observations/141124615 Maldonado Uruguay 2022-10-28
Carpobrotus edulis https://www.inaturalist.org/observations/139243688 Maldonado Uruguay 2022-10-18
Carpobrotus edulis https://www.inaturalist.org/observations/137897275 Maldonado Uruguay 2022-10-07
Carpobrotus edulis https://www.inaturalist.org/observations/136060363 Canelones Uruguay 2021-08-05
Carpobrotus edulis https://www.inaturalist.org/observations/135382489 Maldonado Uruguay 2022-09-17
Carpobrotus edulis https://www.inaturalist.org/observations/134293703 Canelones Uruguay 2021-09-05
Carpobrotus edulis https://www.inaturalist.org/observations/130445922 Maldonado Uruguay 2022-08-10
Carpobrotus edulis https://www.inaturalist.org/observations/130265533 Maldonado Uruguay 2022-08-10
Carpobrotus edulis https://www.inaturalist.org/observations/124734935 Canelones Uruguay 2022-07-02
Carpobrotus edulis https://www.inaturalist.org/observations/123951110 Rocha Uruguay 2022-06-26
Carpobrotus edulis https://www.inaturalist.org/observations/117894758 Rocha Uruguay 2022-05-20
Carpobrotus edulis https://www.inaturalist.org/observations/117883494 Maldonado Uruguay 2022-05-20
Carpobrotus edulis https://www.inaturalist.org/observations/116739467 Rocha Uruguay 2022-05-12
Carpobrotus edulis https://www.inaturalist.org/observations/116455224 Maldonado Uruguay 2022-05-10
Carpobrotus edulis https://www.inaturalist.org/observations/114675993 Canelones Uruguay 2022-05-01
Carpobrotus edulis https://www.inaturalist.org/observations/114303201 Maldonado Uruguay 2022-04-30
Carpobrotus edulis https://www.inaturalist.org/observations/111768060 Canelones Uruguay 2022-04-16
Carpobrotus edulis https://www.inaturalist.org/observations/111729043 Canelones Uruguay 2022-04-16
Carpobrotus edulis https://www.inaturalist.org/observations/111426459 Canelones Uruguay 2022-04-14
Carpobrotus edulis https://www.inaturalist.org/observations/111377839 Maldonado Uruguay 2022-04-13
Carpobrotus edulis https://www.inaturalist.org/observations/110244729 Rocha Uruguay 2022-04-02
Carpobrotus edulis https://www.inaturalist.org/observations/109923339 Maldonado Uruguay 2021-07-15
Carpobrotus edulis https://www.inaturalist.org/observations/109922922 Maldonado Uruguay 2021-08-14
Carpobrotus edulis https://www.inaturalist.org/observations/109749063 Canelones Uruguay 2022-03-28
Carpobrotus edulis https://www.inaturalist.org/observations/109574399 Maldonado Uruguay 2019-12-24
Carpobrotus edulis https://www.inaturalist.org/observations/107910734 Canelones Uruguay 2022-03-04
Carpobrotus edulis https://www.inaturalist.org/observations/107716646 Rocha Uruguay 2022-03-01
Carpobrotus edulis https://www.inaturalist.org/observations/107714165 Rocha Uruguay 2022-03-01
Carpobrotus edulis https://www.inaturalist.org/observations/107709942 Rocha Uruguay 2022-03-01
Carpobrotus edulis https://www.inaturalist.org/observations/107084263 Canelones Uruguay 2022-02-19
Carpobrotus edulis https://www.inaturalist.org/observations/107041694 Rocha Uruguay 2022-02-19
Carpobrotus edulis https://www.inaturalist.org/observations/106876384 Maldonado Uruguay 2022-02-16
Carpobrotus edulis https://www.inaturalist.org/observations/106270982 Maldonado Uruguay 2022-02-06
Carpobrotus edulis https://www.inaturalist.org/observations/105282457 Maldonado Uruguay 2022-01-20
Carpobrotus edulis https://www.inaturalist.org/observations/104813471 Maldonado Uruguay 2022-01-11
Carpobrotus edulis https://www.inaturalist.org/observations/104689416 Maldonado Uruguay 2022-01-09
Carpobrotus edulis https://www.inaturalist.org/observations/104598141 Canelones Uruguay 2022-01-08
Carpobrotus edulis https://www.inaturalist.org/observations/103899006 Montevideo Uruguay 2021-12-29
Carpobrotus edulis https://www.inaturalist.org/observations/103819528 Rocha Uruguay 2021-12-26
Carpobrotus edulis https://www.inaturalist.org/observations/103799453 Maldonado Uruguay 2021-12-27
Carpobrotus edulis https://www.inaturalist.org/observations/103243256 Canelones Uruguay 2021-12-17
Carpobrotus edulis https://www.inaturalist.org/observations/101727836 Canelones Uruguay 2021-11-22
Carpobrotus edulis https://www.inaturalist.org/observations/99493818 Canelones Uruguay 2021-10-24
Carpobrotus edulis https://www.inaturalist.org/observations/99417636 Canelones Uruguay 2021-10-24
Carpobrotus edulis https://www.inaturalist.org/observations/99413776 Canelones Uruguay 2021-10-25
Carpobrotus edulis https://www.inaturalist.org/observations/99412637 Maldonado Uruguay 2021-10-24
Carpobrotus edulis https://www.inaturalist.org/observations/99406590 Maldonado Uruguay 2021-10-25
Carpobrotus edulis https://www.inaturalist.org/observations/99403560 Maldonado Uruguay 2021-10-25
Carpobrotus edulis https://www.inaturalist.org/observations/99368772 Rocha Uruguay 2021-10-25
Carpobrotus edulis https://www.inaturalist.org/observations/99090688 Maldonado Uruguay 2021-10-20
Carpobrotus edulis https://www.inaturalist.org/observations/98669192 Canelones Uruguay 2021-10-16
Carpobrotus edulis https://www.inaturalist.org/observations/72823752 Canelones Uruguay 2021-03-30
Carpobrotus edulis https://www.inaturalist.org/observations/71651011 Canelones Uruguay 2021-03-20
Carpobrotus edulis https://www.inaturalist.org/observations/70701312 Maldonado Uruguay 2021-03-06
Carpobrotus edulis https://www.inaturalist.org/observations/68463316 Canelones Uruguay 2021-01-20
Carpobrotus edulis https://www.inaturalist.org/observations/68328641 Canelones Uruguay 2021-01-19
Carpobrotus edulis https://www.inaturalist.org/observations/65441727 Rocha Uruguay 2020-11-22
Carpobrotus edulis https://www.inaturalist.org/observations/63814798 Montevideo Uruguay 2020-10-30
Carpobrotus edulis https://www.inaturalist.org/observations/63814772 Montevideo Uruguay 2020-10-30
Carpobrotus edulis https://www.inaturalist.org/observations/59671950 Maldonado Uruguay 2020-09-15
Carpobrotus edulis https://www.inaturalist.org/observations/59574883 Maldonado Uruguay 2020-09-13
Carpobrotus edulis https://www.inaturalist.org/observations/56907033 Maldonado Uruguay 2011-11-13
Carpobrotus edulis https://www.inaturalist.org/observations/55727449 Canelones Uruguay 2020-07-25
Carpobrotus edulis https://www.inaturalist.org/observations/54402909 Maldonado Uruguay 2020-07-26
Carpobrotus edulis https://www.inaturalist.org/observations/51015314 Rocha Uruguay 2020-06-26
Carpobrotus edulis https://www.inaturalist.org/observations/51014843 Rocha Uruguay 2020-06-26
Carpobrotus edulis https://www.inaturalist.org/observations/47125259 Maldonado Uruguay 2020-05-24
Carpobrotus edulis https://www.inaturalist.org/observations/47125100 Maldonado Uruguay 2020-05-24
Carpobrotus edulis https://www.inaturalist.org/observations/44843908 Maldonado Uruguay 2020-05-03
Carpobrotus edulis https://www.inaturalist.org/observations/44782720 Maldonado Uruguay 2020-05-03
Carpobrotus edulis https://www.inaturalist.org/observations/43691254 Maldonado Uruguay 2020-04-26
Carpobrotus edulis https://www.inaturalist.org/observations/42586824 Maldonado Uruguay 2020-04-19
Carpobrotus edulis https://www.inaturalist.org/observations/42015655 Maldonado Uruguay 2019-11-08
Carpobrotus edulis https://www.inaturalist.org/observations/41388354 Maldonado Uruguay 2020-04-04
Carpobrotus edulis https://www.inaturalist.org/observations/39662279 Rocha Uruguay 2020-03-07
Carpobrotus edulis https://www.inaturalist.org/observations/39661149 Rocha Uruguay 2020-03-07
Carpobrotus edulis https://www.inaturalist.org/observations/39611006 Rocha Uruguay 2020-03-06
Carpobrotus edulis https://www.inaturalist.org/observations/39423318 Maldonado Uruguay 2020-03-01
Carpobrotus edulis https://www.inaturalist.org/observations/38472597 Rocha Uruguay 2020-02-09
Carpobrotus edulis https://www.inaturalist.org/observations/38470807 Rocha Uruguay 2020-02-09
Carpobrotus edulis https://www.inaturalist.org/observations/38470787 Rocha Uruguay 2020-02-09
Carpobrotus edulis https://www.inaturalist.org/observations/38356037 Maldonado Uruguay 2020-02-01
Carpobrotus edulis https://www.inaturalist.org/observations/38173952 Maldonado Uruguay 2020-01-20
Carpobrotus edulis https://www.inaturalist.org/observations/38160041 Maldonado Uruguay 2020-01-31
Carpobrotus edulis https://www.inaturalist.org/observations/37854509 Maldonado Uruguay 2020-01-22
Carpobrotus edulis https://www.inaturalist.org/observations/37172036 Maldonado Uruguay 2020-01-01
Carpobrotus edulis https://www.inaturalist.org/observations/36943848 Maldonado Uruguay 2019-12-25
Carpobrotus edulis https://www.inaturalist.org/observations/36586034 Rocha Uruguay 2019-12-12
Carpobrotus edulis https://www.inaturalist.org/observations/35802536 Canelones Uruguay 2019-11-09
Carpobrotus edulis https://www.inaturalist.org/observations/35802535 Canelones Uruguay 2019-11-09
Carpobrotus edulis https://www.inaturalist.org/observations/35802532 Canelones Uruguay 2019-11-09
Carpobrotus edulis https://www.inaturalist.org/observations/22345368 Montevideo Uruguay 2019-04-11
Carpobrotus edulis https://www.inaturalist.org/observations/21828802 Rocha Uruguay 2017-08-05
Carpobrotus edulis https://www.inaturalist.org/observations/21523589 Montevideo Uruguay 2018-10-22
Carpobrotus edulis https://www.inaturalist.org/observations/20543070 Maldonado Uruguay 2019-02-20
Carpobrotus edulis https://www.inaturalist.org/observations/16641791 Canelones Uruguay 2018-09-17
Carpobrotus edulis https://www.inaturalist.org/observations/13104767 Rocha Uruguay 2017-01-13