Dataset URL: https:// huggingface. co/datasets/Matt1up/stillwater-lift-bridge-photogrammetry
Number of images: 2,223
Size in MB: 20,060 for the images (the repo totals 40,576 MB: the same images again as one ZIP, plus poses and the ODM solve)
EXIF GPS: yes, all 2,223
GCP: no
RTK: no
Comment/Description:

This is the Stillwater Lift Bridge over the St. Croix River between Stillwater, Minnesota and Houlton, Wisconsin. It opened in 1931 and is on the National Register of Historic Places. It’s been closed to cars since 2017 and is now part of a walking and biking loop trail. I first scanned it in 2020 with a Faro S150 laser scanner and wasn’t able to finish it, so I went back with a DJI Mini 5 Pro. I waited for an overcast day and flew it on Saturday, October 31, 2026, from 10:42 to 13:55: 34 missions on five batteries.
Only ODM could align it

The bridge is seven steel truss spans that look almost identical, and that’s what made it hard. RealityScan split the photos into 9 components. The largest held 2,047 of the 2,223, and inside it a run of 18 photos sat about 45 m from where they were taken, roughly one span off. The low level passes along the sides collapsed onto about two spans. Turning GPS on in RealityScan just tilted the model.
What solved it was the two things Maurice worked out on my mill dataset:
--matcher-neighbors 30(his post: https:// community. opendronemap. org/t/abandoned-graffiti-mill-inside-and-out-1-896-images-mini-5-pro-poses-scale-bar-cc-by-4-0/27009/5). Each photo is only matched against its 30 nearest GPS neighbors, so photos a span apart mostly never get compared.- A
--geofile with relative altitude + one fixed value instead of the EXIF absolute altitude (his post: https:// community. opendronemap. org/t/abandoned-graffiti-mill-inside-and-out-1-896-images-mini-5-pro-poses-scale-bar-cc-by-4-0/27009/7). Same problem here as on the mill: the gap between absolute and relative altitude went 115.0 / 118.5 / 122.6 / 126.6 m over the day, and that’s what tilted the RealityScan model. All my flights took off from the same height, so I used relative altitude + 118.5 m.
Plus --feature-quality ultra, on ODM 3.6.2 in Docker (opendronemap/odm:gpu), camera solve only (--end-with opensfm). It took about 6 hours 20 minutes on a 16-core Threadripper with 62 GB of RAM, 39,618 image pairs.
Result: 2,222 of the 2,223 photos in one reconstruction, every flight within 2–7 m of its GPS track, and the level side passes running the full length of the bridge. One photo landed 115 m off, so I left it out of the poses. I then loaded the ODM cameras into RealityScan with the poses locked and built the mesh there.
The exact command, the geo.txt, the generated OpenSfM config and ODM’s reconstruction.json are all in the odm/ folder, so you can rerun it or use the solve directly.
How it was flown
All but the side passes were planned in QGIS with FlyPath and flown as waypoint missions, a photo every 3 seconds.
Towers: five stacked rings around each lift tower, then two rings around both.

Orbits: 16 small rings down the length of the bridge, each overlapping the last by half, then 5 large ones.

Grids: straight down at 40 m, three lines along the bridge, then back and forth across it.

Side passes: set up on site, along the north side and then the south, at −45°, −22° and level.

Every photo is tagged with its mission and battery in images.csv, so you can solve or train on one part at a time.
Capture and poses
- Native 4096 × 3072 (not the 50 MP mode), manual exposure, ISO 400, fixed white balance
- 4 m to 41 m above the takeoff point, gimbal from −90° to level
- Original aircraft filenames, in capture order
- COLMAP
cameras.txt/images.txt/points3D.txt(1,768,660 tie points) and a RealityScan XMP for each photo, written for the original JPEGs, so no undistortion step
Faces and plates
People were on the bridge. In 350 of the photos, faces or license plates are blurred. The other 1,873 are camera originals, byte for byte. The blurred ones keep their EXIF and DJI XMP, with DJI’s embedded preview image removed. The solve used the unblurred originals.
Download
- The whole set as one file: [stillwater-lift-bridge-images.zip](https:// huggingface. co/datasets/Matt1up/stillwater-lift-bridge-photogrammetry/resolve/main/zip/stillwater-lift-bridge-images.zip), 20.06 GB, stored rather than compressed. SHA-256
9f3f692a70e9fb5e9f9a2cf25df04c01a98d40a7d593e13d1a29e8ca3560d689 - One file at a time: the Files tab on Hugging Face, or
hf download Matt1up/stillwater-lift-bridge-photogrammetry --repo-type dataset --local-dir ./bridge --include 'bridge/images/*' - Docs, checksums, poses, the ODM files and download/verify scripts: https:// github. com/Matt1Up/stillwater-lift-bridge-photogrammetry-dataset
CC BY 4.0.
Thanks again Maurice, those two tips made this one possible.
Also - if you are able to correct the broken link issue again it would be much appreciated. They are also broken in the Plymouth, MN residential complex survey as well still.
~Matt