Improving OSM lake polygons using LiDAR data
by Jake Low @ State of the Map US 2025
by rbs10025 (flickr), CC BY-NC-ND 2.0
Problem: poor quality lake polygons
Elevation data
~500 ft
Traditional DEM
LiDAR DEM
~500 ft
Generating better
lake polygons
Input DEM
Hillshaded
gdaldem hillshade -igor dem.tif hillshade.tif
Slope map
gdaldem slope dem.tif slope.tif
Flat areas
gdal_calc.py -A slope.tif --calc 'numpy.where(A < 1.0, 1, 0) \
--type Byte --creation-option NBITS=1 --outfile flat.tif
Dilated
magick flat.tif -morphology dilate octagon dilated.tif
Flat areas (close up)
Dilated (close up)
Dilated
magick flat.tif -morphology dilate octagon dilated.tif
Vectorized
gdal_contour -fl 0 flat.tif vectorized.geojson
Vectorized (close up)
gdal_contour -fl 0 flat.tif vectorized.geojson
~100 ft
Smoothed
cat vectorized.geojson \
| python geosmooth.py taubin \
| python geosimplify.py 0.000005 \
> lakes-final.geojson
Results
Importing with JOSM
https://tasks.openstreetmap.us/projects/585
Future work
[sic]
peaks❓
lakes ✅
waterways❓
Sample code available here:
https://github.com/jake-low/detect-lakes-in-dems
Contact me on Slack:
@jake-low (slack.openstreetmap.us)