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

Good_and_great_views_arch

Methodology

Overview

The viewshed analysis implements the following:

  1. Data Preparation: Load and validate DEM data, establish observer coordinates and height
  2. Target Sampling: Create a regular grid of target points across the study area
  3. Visibility Computation: Execute line-of-sight checks between observer and each target
  4. Accumulation: Aggregate results into a raster viewshed map
  5. Validation: Cross-reference with known visibility landmarks

Technical Details

Dependencies

Key Python packages:

  • numpy - Numerical computation
  • rasterio - 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

partial_view

Basic Map showing ‘partial’ views that have possible less-than-ideal viewings of the Arch

premium_view

Basic Map showing ‘premium’ views that have at least half or more fo the Arch in view

premium_partial_overlay_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

View Code on GitHub

Updated: