St. Louis Viewshed Analysis (aka ‘Million Dollar View Validator’)
Gateway Arch Viewshed Analysis
A comprehensive geospatial analysis pipeline for computing and visualizing the three-dimensional viewshed from the Gateway Arch monument in St. Louis, Missouri. This project combines high-resolution elevation data, line-of-sight algorithms, and modern geospatial visualization techniques to determine visibility patterns across the surrounding landscape.
Problem Statement
Understanding visibility patterns from iconic landmarks is crucial for landscape planning, tourism management, and heritage conservation. Traditional 2D viewshed analyses fail to capture the true three-dimensional nature of visibility from elevated structures. This project solves this by implementing a robust 3D viewshed analysis pipeline that accounts for:
- Actual elevation data and terrain complexity
- Observer height (top of the Gateway Arch)
- Target identification at multiple distance intervals
- Comprehensive spatial coverage across the region
Methodology
Overview
The viewshed analysis implements the following:
- Data Preparation: Load and validate DEM data, establish observer coordinates and height
- Target Sampling: Create a regular grid of target points across the study area
- Visibility Computation: Execute line-of-sight checks between observer and each target
- Accumulation: Aggregate results into a raster viewshed map
- Validation: Cross-reference with known visibility landmarks
Technical Details
Dependencies
Key Python packages:
numpy- Numerical computationrasterio- Raster data I/O
See environment.yml for full dependency list and versions.
Prerequisites
- Python 3.8+
- GDAL/OGR libraries
- Git
Setup
# Clone the repository
git clone https://github.com/dander1989/million-dollar-view-validator.git
cd gateway-arch-viewshed
# Create virtual environment with dependencies
conda env create --file environment.yml
Performance Considerations
- Memory: DEM resolution directly impacts memory usage. For large DEMs, consider processing in tiles
- Computation Time: Line-of-sight computation scales with DEM size and target distance
- Optimization: Implement spatial indexing (quadtree/R-tree) for larger analyses
Additional Visualizations
Basic Map showing ‘partial’ views that have possible less-than-ideal viewings of the Arch
Basic Map showing ‘premium’ views that have at least half or more fo the Arch in view
Overlay of both ‘partial’ and ‘premium’ views. Note that ‘partial’ views may also overlap with ‘premium’
Possible Next Steps
Short-term:
- Run viewsheds for the other two heights (3/4 and base) to get a full 4-tier quality ranking
- Grab St. Louis parcel boundaries and aggregate this to property level. Ask which specific addresses have the best views?
- Clean up my Python scripts so they’re not a complete mess and actually reusable
Medium-term:
- Filter out power lines and other junk from the LiDAR (Class 14 if it’s tagged)
- Process adjacent tiles to cover more of the metro area…Right now it’s just one 4km tile
- Try separating buildings from trees to do a “summer view vs winter view” comparison when leaves are gone
- Scrape some Zillow data and see if “arch view” actually correlates with higher listing prices
License
This project is licensed under the MIT License - see LICENSE file for details.
Acknowledgments
- United States Geological Service (USGS)
- Matt Forrest of the Spatial Lab for providing project idea