Logan Jonesupdated jul 2026
← index

MN Rock Finder

2026 · Python, rasterio, geopandas · map · github

Minnesota has climbable rock that nobody has cataloged. It also has statewide 1-meter LiDAR. Rock Finder reads the bare-earth elevation model and finds boulders: 6,278 candidates, ranked and mapped, without leaving the desk.

The search

Scanning the whole state is waste; boulders live where water cut the land. The pipeline traces river corridors from OpenStreetMap, bins their vertices into ~1km grid cells, and reads only those windows from USGS 3DEP’s cloud tiles. No bulk downloads: windowed reads against cloud-optimized GeoTIFFs, straight from S3.

The detector

A boulder in a bare-earth model is a small island of steep slope and high local relief. The detector computes Horn slope and disk-footprint relief, thresholds both, and denoises morphologically. It validates itself against synthetic terrain: generated blocks, ramps, and bumps that must classify correctly before real data is trusted. Candidates then survive a filter cascade: land-cover, quarries, road and rail proximity, bedrock geology, with a bonus for south-facing aspect. Output is an interactive map and a GPX of the top 250 for the field.

The hard parts

  • Nodata boundaries fake cliffs. Where the elevation model ends, the fill value meets real terrain and reads as a wall. The detector dilates the nodata mask by the relief radius and zeroes everything it touches.
  • Ground truth without ground. Known boulderfields near Taylors Falls serve as the positive control; a detector that misses them is wrong no matter what it finds elsewhere.
Interactive map of Minnesota with detected boulder candidates clustered along river corridors
fig. 1 · 6,278 candidates along the river corridors
[0] ~/portfoliominnesota