In 1905, a dam – which was constructed in the Imperial Valley –
broke and flooded the Salton Sink with water from the Colorado River.
The Salton Sea then became a popular tourist destination for
Californians in the 1940s through the 1960s.
Salton Sea Postcard
Over time, California droughts have taken a toll on the Salton Sea,
and the water levels have continuously declined. Since 2003, the Salton
Sea’s surface elevation has dropped by more than 11 feet, and continues
to decline to this day, as evidenced in the graphic. The decline in
water levels resulted in massive fish die offs. This, in conjunction
with the increasing concentrations of pesticides in the sea, contributed
to a steep decline in the region’s tourism during the latter half of the
20th century.
Water Levels Over Time
However, while the smell of rotting fish drove tourists away, many
people continued to live and work in the agricultural fields surrounding
the sea. The region is now predominantly Hispanic and falls into the
90th percentile for poverty in California, illustrating the
environmental justice issues around the Salton Sea. Minority, low income
communities tend to live closer to environmental burdens, significantly
impacting their quality of life.
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.3 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.3 ✔ tibble 3.2.1
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(sf)
## Linking to GEOS 3.11.0, GDAL 3.5.3, PROJ 9.1.0; sf_use_s2() is TRUE
library(leaflet)
library(tidycensus)
library(htmltools)
directory <- 'CalEJ4'
unzip(zipfile = 'calenviroscreen40shpf2021shp.zip', exdir = directory)
CalEJ <- read_sf(dsn = directory)
CalEJ3 <- CalEJ |>
filter(County %in% c('Imperial', 'Riverside')) |>
filter(PovertyP >=0) |>
st_transform(crs = 4326)
counties <- st_read(dsn = "CA_Counties") %>%
filter(NAME %in% c("Imperial", "Riverside")) %>%
st_transform(crs = 4326)
## Reading layer `CA_Counties_TIGER2016' from data source
## `/Users/EvelynMineo/Final Project Turn In/CA_Counties' using driver `ESRI Shapefile'
## Simple feature collection with 58 features and 17 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -13857270 ymin: 3832931 xmax: -12705030 ymax: 5162404
## Projected CRS: WGS 84 / Pseudo-Mercator
Imperial_Poverty <- CalEJ3 %>%
st_filter(counties)
palPov <- colorNumeric(palette = 'BuPu', domain = Imperial_Poverty$PovertyP, n = 5)
povertymap <- leaflet(data = Imperial_Poverty) |>
addProviderTiles(provider = providers$Esri.WorldImagery) |>
setView(lat = 33.2, lng = -115.6, zoom = 8.5) |>
addPolygons(stroke = FALSE,
fillColor = ~palPov(PovertyP),
fillOpacity = 0.5,
label = ~paste0(round(PovertyP, digits = 0),"%")) |>
addLegend(pal = palPov,
title = 'Poverty (%)',
values = ~PovertyP)
# display the map
povertymap
Currently, the region is still experiencing heavy pesticide use. Not
surprisingly, the pesticide percentage correlates with farmland regions.
While the type of farmland does necessarily affect the levels of
pesticide use, pesticide use does tend to increase when two or more
types of farmland are stacked on top of each other.
library(tidyverse)
library(sf)
library(leaflet)
library(tidycensus)
library(htmltools)
# Data Import
## Farmland
farmland <- st_read(dsn = 'AgLand.geojson')
## Reading layer `AgLand' from data source
## `/Users/EvelynMineo/Final Project Turn In/Agland.geojson' using driver `GeoJSON'
## Simple feature collection with 14729 features and 6 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -119.478 ymin: 32.65257 xmax: -114.4952 ymax: 35.05472
## Geodetic CRS: WGS 84
counties <- st_read(dsn = "CA_Counties") %>%
filter(NAME %in% c("Imperial", "Riverside")) %>%
st_transform(crs = 4326)
## Reading layer `CA_Counties_TIGER2016' from data source
## `/Users/EvelynMineo/Final Project Turn In/CA_Counties' using driver `ESRI Shapefile'
## Simple feature collection with 58 features and 17 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -13857270 ymin: 3832931 xmax: -12705030 ymax: 5162404
## Projected CRS: WGS 84 / Pseudo-Mercator
sf_use_s2(FALSE)
## Spherical geometry (s2) switched off
Imperial_Farm <- farmland %>%
st_filter(counties)
## although coordinates are longitude/latitude, st_intersects assumes that they
## are planar
## Importing CalEJ
directory <- 'CalEJ4'
unzip(zipfile = 'calenviroscreen40shpf2021shp.zip', exdir = directory)
CalEJ <- read_sf(dsn = directory)
CalEJ2 <- CalEJ |>
filter(County %in% c('Imperial', 'Riverside')) |>
filter(PesticideP >=0, PovertyP >=0) |>
st_transform(crs = 4326)
CalEJ2 <- CalEJ |>
filter(County %in% c('Imperial', 'Riverside')) |>
filter(PesticideP >=0) |>
st_transform(crs = 4326)
Imperial_Pesticides <- CalEJ2 %>%
st_filter(counties)
## although coordinates are longitude/latitude, st_intersects assumes that they
## are planar
# Code for Visualization
# Pesticides Map
palAL <- colorNumeric(palette = 'YlOrBr', domain = Imperial_Pesticides$PesticideP, n = 5)
# Farmland Map
palAG <- colorFactor(domain = Imperial_Farm$TYPE, palette = 'Set1')
# Toggle them together, Farmland first then pesticides
leaflet() |>
addProviderTiles(provider = providers$Esri.WorldImagery) |>
setView(lat = 33.2, lng = -115.6, zoom = 8.5) |>
addLayersControl(overlayGroups = c('Farmland', 'Pesticide')) |>
addPolygons(data = Imperial_Farm,
color = ~palAG(TYPE),
weight = 3,
label = ~TYPE,
group = 'Farmland') |>
addLegend(data = Imperial_Farm,
title = 'Farmland',
values = ~TYPE,
pal = palAG,
group = 'Farmland') |>
addPolygons(data = Imperial_Pesticides,
stroke = FALSE,
fillColor = ~palAL(PesticideP),
fillOpacity = 0.5,
label = ~paste0(round(PesticideP, digits = 0),"%"),
group = 'Pesticide') |>
addLegend(data = Imperial_Pesticides,
pal = palAL,
title = 'Pesticides (%)',
values = ~PesticideP,
group = 'Pesticide')