CASA0025 — Building Spatial Applications with Big Data | UCL CASA
An interactive Google Earth Engine application that explores the environmental consequences of nonfunctional turf removal across the Las Vegas Valley, in the context of Nevada Assembly Bill 356 (2021).
The Colorado River Basin is under severe stress. Runoff continues to decline while consumption remains constant. In response, Nevada's Assembly Bill 356 (2021) prohibited the use of Colorado River water to irrigate "nonfunctional turf" (green space with no clear recreational or functional purpose) by 2027. In January 2026, a group of residents sued the Southern Nevada Water Authority (SNWA), claiming that turf removal has led to negative environmental effects including increased local temperatures.
This project bridges the gap between regulatory action and observable evidence by building a map-based dashboard that enables tract-level exploration of green space loss, land surface temperature shifts, and water consumption changes from 2019 to 2026.
- Synchronized split-panel maps with a draggable swipe divider for before/after comparisons across any two months
- Three environmental layers: Fractional Vegetation Cover (greenness), Land Surface Temperature (heat), and Evapotranspiration (water consumption)
- Tract-level profiling: click any census tract to view summary statistics, distribution histograms, and monthly trend charts
- Compare Tracts mode: select two tracts for side-by-side statistical cards and overlaid trend charts
- Seasonal adjustment toggle: switch between raw values and change-from-2019-baseline to separate policy-driven trends from natural seasonality
- Quick Navigation dropdown: jump to incorporated cities (Las Vegas, Henderson, North Las Vegas) or Census-Designated Places
| Dataset | Resolution | Purpose | Provider |
|---|---|---|---|
| Sentinel-2 (MSI SR) | 10 m | Fractional Vegetation Cover via 5-endmember Spectral Mixture Analysis | Copernicus |
| Landsat 8 (Band 10) | 30 m | Land Surface Temperature | USGS |
| OpenET Ensemble | 30 m | Actual Evapotranspiration (proxy for outdoor water consumption) | OpenET |
| TIGER 2020 Census Tracts | — | Spatial aggregation boundaries | U.S. Census Bureau |
Fractional Vegetation Cover (FVC) is estimated using a 5-endmember linear Spectral Mixture Analysis (SMA) model applied to Sentinel-2 imagery. The five endmembers, green vegetation, soil, dark impervious (asphalt), bright impervious (concrete), and regional impervious (terra cotta roofing). These allow sub-pixel detection of turf patches ranging from office parks down to roundabouts. The model achieves a spectral RMSE of 0.011, well below the established 0.025 acceptability threshold.
Monthly median LST is derived from Landsat 8 thermal infrared (Band 10), cloud-masked and converted to Celsius with gap-filling from prior months.
In arid Las Vegas where rainfall is minimal, evapotranspiration (ET) directly approximates irrigation-driven water use. OpenET's ensemble of six satellite-based models provides the ET estimates.
Each month from 2020–2025 is compared against the same calendar month in 2019 (the pre-policy baseline year), isolating human-caused changes from natural phenological cycles.
CASA0025_Final_Project/
├── index.qmd # Quarto source for the GitHub Pages site
├── styles-test.css # Custom stylesheet for the project page
├── lasvegas_boundary # Study area boundary shape file folder
├── scripts/
│ ├── boundaries_extract.js # Boundaries extract script
│ ├── extract_lst.js # Temperature analysis script
│ ├── extract_water.js # Water analysis script
│ ├── pre-rendered-raster-tracts.js # Preprocessing rendered raster tracts script
│ ├── preprocess_and_data_inspection.js # Preprocessing general script
│ ├── turf_removal_detection.js # Turf detection script
│ └── ui-built/
│ ├── final-version.js # GEE application source code (v55)
│ ├── ui-framework-v2.js – v54.js # Previous iterations of the GEE app (lost some iterations)
The v*.js and ui-framework-v*.js files document the iterative development of the Earth Engine application. Key milestones include the addition of the split-panel map, tract profiling, comparative analysis, and performance optimisations (e.g. pre-simplified tract geometries, permanent boundary overlays). The final production version is final-version.js (v55).
- Open the GEE app from the embedded iframe on the project page or directly via the Earth Engine Apps link.
- Select a layer using the pill buttons: Greenness, Heat, Water, or Satellite.
- Set the time range — choose a single month or compare two months side by side.
- Toggle data mode — switch between "Actual data" and "Seasonally adjusted data" to see raw values vs. change from the 2019 baseline.
- Click a tract on the map to view its environmental profile (stats, histograms, trends).
- Use Compare Tracts to select two tracts and overlay their monthly metrics.
- Use Quick Navigation to jump to specific cities or neighbourhoods.
- Not a causal model. The dashboard identifies spatial co-occurrence of turf loss and temperature increase, but cannot confirm direct causation — surface materials, urban form, and broader climate variability also influence LST.
- FVC does not distinguish turf from trees. Measured vegetation loss may include natural vegetation changes unrelated to AB 356.
- Landsat thermal resolution (30 m) may blend urban heat island signals with surrounding impervious surfaces.
- OpenET uncertainty increases in arid regions with sparse vegetation, potentially overestimating water savings.
- Monthly composites smooth out short-term irrigation events; the dashboard captures trends rather than instantaneous conditions.
| Name | Role |
|---|---|
| Yujing (Olivia) Xing | GEE App Architecture, UI/UX Design & Development, Concept Direction |
| Luke Benson | SMA/FVC Methodology, Vegetation Analysis, Project Concept |
| Yoav Gochman | LST Analysis, Water Consumption / ET Estimation, Preprocessing |
| Christy Choi | Preprocessing, UI Contributions, Legend System |
| Waiie Tsang | Literature Review, Narrative Content |
| Nanxi Lu | Literature Review, Narrative Content |
Click to view Summary of Key Contributions and Use of AI for Tasks
| Task Name | Major Contributors | Additional Contributors | Use of AI in this task |
|---|---|---|---|
| Project Concept and Idea Development | Luke | All team members | |
| Problem Statement, End User Definition and Project Scoping | All team members | No AI use | |
| Literature Review – Colorado River Basin Crisis and Nevada AB 356 Policy Context | Nanxi, Waiie | ||
| Literature Review – Remote Sensing Methods (SMA, FVC, LST, Evapotranspiration) | Nanxi, Waiie | ||
| Preprocessing - Cloud masking code and temperature conversion preparation | Christy, Luke, Yoav | Used for code generation. | |
| Preprocessing - Study area defined and Shape file uploaded | Christy, Luke, Olivia | Gemini was used to help understand study boundaries | |
| Methodology – FVC Estimation via 5-Endmember Spectral Mixture Analysis (Sentinel-2) | Luke | Used to help locate relevant research and clean up GEE code. | |
| Methodology – Sentinel-2 Cloud Masking, Monthly Compositing and Gap-Filling | Luke | Used for code generation. | |
| Methodology – RMSE Validation | Luke | Used to help locate relevant research. | |
| Methodology – Vegetation Baseline Differencing (Seasonal Adjustment vs 2019) | Luke | Used for coding structure. | |
| Methodology – Land Surface Temperature Analysis (Landsat 8 Thermal Band 10) | Yoav | Used for code generation. | |
| Methodology – Land Surface Temperature Baseline Differencing (Seasonal Adjustment vs 2019) | Yoav | Used for code generation. | |
| Methodology – Water Consumption / Evapotranspiration Estimation (OpenET Ensemble) | Yoav | Used for general research about water consumption as a proxy | |
| Methodology – Water Baseline Differencing (Seasonal Adjustment vs 2019) | Yoav | Used for code generation. | |
| GEE App – Overall Architecture, State Management and Data Pipeline | Olivia | Christy | Claude was used to give a design structure |
| GEE App – Pre-processing: Study Area Boundary Compilation and Tract Geometry Simplification | Olivia | Christy | Gemini was used to understand the US census tracts |
| GEE App – Precomputed Raster Layer Pipeline (FVC, LST, ET and Difference Layers) | Yoav | Used for code generation. | |
| GEE App – Left Sidebar Layout, Tab System (Tract Profile / Compare / About) | Olivia | Christy, Yoav, Luke | Claude and Gemini were used to debug UI code |
| GEE App – Synchronised Split-Panel Maps with Draggable Divider | Olivia | Claude and Gemini were used to debug UI code | |
| GEE App – Layer Switching (Greenness / Heat / Water / Satellite Pill Buttons) | Olivia | Claude and Gemini were used to debug UI code | |
| GEE App – Time Controls (Single Month vs Compare Mode, Actual vs Seasonally Adjusted) | Olivia | Yoav, Luke | Claude and Gemini were used to debug UI code |
| GEE App – Quick Navigation Dropdown (Incorporated Cities and CDPs) | Olivia | Claude was used to understand US government levels | |
| GEE App – Interactive Tract Profiling (Click-to-Select, Stat Cards, Histograms, Trend Charts) | Olivia, Christy | Claude was used to help structure the charts layout | |
| GEE App – Compare Tracts View (Side-by-Side Stats, Overlaid FVC / LST / ET Charts) | Olivia | Gemini was used to debug UI code | |
| GEE App – Tract-Level Aggregation and Summary Statistics Computation | Olivia | No AI use | |
| GEE App – About Section, How-to-Use Guide and Narrative Content | Waiie, Nanxi, Olivia | No AI use | |
| GEE App – Boundary Vector Overlay and Styling (Optimised Permanent Layers) | Yoav, Olivia | Gemini was used to debug UI code | |
| GEE App – Legend System, Colour Ramps and Dynamic Legend Visibility | Christy, Olivia | Yoav | Gemini was used to refine the colour palette |
| GEE App – Overall UX Refinement, Responsiveness and Interactivity Polish | Olivia, Christy | Gemini was used to debug UI code | |
| Project Markdown File and GitHub Pages Documentation | Luke, Christy, Olivia | Gemini was used to debug content scrolling code |
This project was developed for CASA0025: Building Spatial Applications with Big Data at the Centre for Advanced Spatial Analysis (CASA), University College London.
AI tools (Claude, Gemini, ChatGPT) were used in specific tasks as documented in the labour division log, primarily for debugging UI code, refining code structure, and understanding domain-specific context. All methodological decisions and analytical interpretations are the team's own.
This project is for academic purposes as part of the UCL CASA MSc programme.