Questions and seeking advice about creating dams on lake edges

Hi everyone, I have something I’d like to do, but I need feedback first, please. I don’t want to break the rules regarding imports, and also I’m looking to see if this is an ok idea in general.

In short, I’ve tentatively generated about 13,000 potential new ways representing dams from the National Inventory of Dams using the coordinates from the NID and OSM’s existing bodies of water. I’ll provide details and examples (and the whole data set as a .osm file) below, but basically I’ve hit a limit of how good I’m able to generate these (not saying someone else couldn’t do better, but I can’t) and now to reasonably add them to OSM I need to manually check each one. I’m trying to figure out the most efficient way to start doing that, which is why I’m here.

This feels like it’s an import, but I haven’t done one before. I appreciate all advice (even if it’s to stop). Basically, I want to speed up drawing dams on the edges of existing lakes and ponds by doing it programmatically, but still looking at each one before saving any changes. Looking at the examples at the bottom of this post, you can see a lot of them look pretty good, but there are also many where the dam is stuck to the wrong side of the body of water due the to NID’s coordinates being over to one side. Or stuck to the wrong body of water entirely. In most cases, looking at satellite imagery makes it pretty easy filter the good from the bad. But there’s 13,000 of them… So, how to do this more quickly?

If I were to turn these into individual MapRoulette cooperative tasks, I’d include the proposed tags as a table so they could be selected and copied if needed, and then something like:

Does a dam exist at this location? If based on satellite imagery it looks right, please open the proposed changes in JOSM and save it, making any edits you see fit. If the highlighted new dam looks wrong, please either draw it in a better position or simply mark this task as “not an issue” or “can’t complete”. These dams were generated using coords from the National Inventory of Dams and existing OSM bodies of water, identifying the bad ones is still very useful, no matter what you decide. Thank you!

And then even if it’s just me, I’ll work through them all! This seems like it could be similar to challenges to turn GNIS-imported reservoirs into ways. But is this an acceptable way to use MapRoulette?

How I made this:

The NID has recorded over 90,000 dams, and to date about 47,000 dams, weirs, and dykes in OSM have been identified and tagged with their ID numbers (using the tag ref:US:NID).

What I’ve done, is taken their remaining 43k+ dams, defined as a single point of latitude and longitude and:

  • Filtered out ones that don’t have a “length” paramter specified in the NID
  • Filtered out instances of multiple dams having the same coordinates, so there’s no easy way to tell which one is the right one without looking at it

Then:

  • Query Overpass Turbo at the NID dam’s coordinates
  • Looked for the nearest node belonging to a water-body relation or way
  • OR the nearest mid-point of a way segment between two nodes, if one is closer

If a natural=water was found:

  • From that node (or two nodes), come up with a new way by expanding in both directions along the edge of the body of water until it’s close to the length from the NID
  • When deciding which direction along the water’s edge to expand, favor more shalow angles over going around sharp corners if possible
  • If the new way is over half the length of the dam specified in the NID and both ends have reached corners sharper than about 30 degrees, then stop early
  • Otherwise, get as close to the stated length as possible and then stop
  • If the new way has any nodes that currently belong to any existing dam, weir, dyke, or embankment, then toss it (unless it’s a single-node waterway=dam/weir). Otherwise, add it to the pile.

Also earlier this month separate from all this I took the about 8000 entries in the retired GNIS historical files for dams that I couldn’t find existing in OSM (nodes deleted or never imported I guess) and tried to conflate them with the NID. I matched like half of them and saved the info to Wikidata. So, in the below OSM files, for the ways I’m proposing to create I was able to include gnis:feature_id and wikidata tags for 1,830 of them.

Example:

Here’s an example of 5 dams generated by this process displayed in JOSM (highlighted in yellow, with red triangle nodes so I can see them easier). The white circles and text in the background are the information I got from the NID.

And the same example with all of the existing OSM objects downloaded. 100% of what I’ve generated uses only already existing nodes.

OSM files:

Five dams in Wisconsin (4KB):

All dams (332 ways) in Ohio (263KB):

Everything (12,959 new ways and 98,238 existing nodes) (13.0 megabytes)

All 3 files zipped (2.1 megabytes):

So, is this ok for MapRoulette? Should I document on the wiki first? Thank you everyone for your time and for any/all feedback you have! I appreciate it greatly.

2 Likes

Cool!

Does this seem like a general quality issue in NID? Or could it be a more systematic issue with the coordinate transform that you could correct to yield more matches upfront?

Is JOSM essential for this task, or can the mapper use whichever editor they prefer? Personally, I’d find it easier to work with a way running along the edge of an area in iD than in JOSM.

This is definitely a valid use of MapRoulette. Documenting what you’ve stated here on the wiki couldn’t hurt.

1 Like

Very clever!

I would add to the MR instructions to examine the dam against the USGS 3DEP hillshade (available in JOSM). Here is a dam that should probably be moved to the southeast:

Dam here is probably to the northeast:

2 Likes

Thank you!
I would definitely say it’s the way I used their coordinates and not a quality issue on the NID’s side. I very heavily relied on how precise their coordinates are in most cases in order to do this. In most cases their point is on the dam if not next to it.

It certainly doesn’t hurt to post this on MR but I’ve had more luck getting a group of interested folks together and working though it. I’d be more than happy to work through big chunks verifying/fixing/adding to the db. Lovely work.

It’s nice to pick a hashtag for the project so you can track and find folks helping. Something like #NIDDamAdditions (or whatever you prefer).

This will be a nice change of pace from fixing waterway tagging.

1 Like

That’s awesome, thank you! That does make the errors clear.

Also, I mentioned JOSM because MapRoulette says it’s the only one that supports cooperative tasks with unsaved osm objects included, that’s all.

2 Likes

Thank you!

Thank you, and thank you everyone for your replies!

I’ve created the challenge: MapRoulette

Here’s an example task: MapRoulette

That’s extremely generous of you! If you’re still interested and wanted to work through this information in a non-MR way, please let me know, or the osm file I linked above has everything. Whatever you decide to do or not do, thank you so much!

I’ve started working through some around my local area just using the .osm file from above. The pace is hampered by the absolute slowness of loading the 3DEP tiles today.

I added this to my changeset comments #NIDDamAdditions.

Awesome, thank you so much!

One thing I’m seeing a lot is that the “water” area is, somewhat reasonably but likely incorrect, mapped to whatever the fill level of of the body is in the imagery. This means that the dam ends up being misplaced. Two options:

  1. Leave the dam attached to the water body and move the water body edge to the top of the dam
  2. Detach the dam and move it to where it’s supposed to be.

Thoughts? Here’s an example with the ridge marked in blue:

I see what you’re saying. I’m not sure. Another option is to turn it into a polygon like here: Way History: ‪Colbert Creek Site 2 Dam‬ (‪1214241900‬) | OpenStreetMap

I could also try generating the new way with new nodes a set distance away from the existing ones, but that wouldn’t necessarily be better every time.

I neither want to make a bunch of bad edits, nor tell you to take the extra time and fix a bunch of something I created. I’m not sure what to do.

I’m happy to do whatever we think it the “correct” thing here. I suspect there’s a big mix of 3the types of mapping we have listed here but maybe there’s one preferred.

That’s really kind of you. There’s definitely a mix out there. I suppose if the thickness of the dam is visible then a polygon surrounding the area the dam occupies is best? Otherwise, I’ve seen people draw the edge where it’s touching the water. And then, it’s easy to take that and turn it into a polygon by extending the existing way.

1 Like

This is an issue that commonly affects dams in Northern California, where water levels vary dramatically from season to season. I’ve been remapping a number of local reservoirs for OpenHistoricalMap, also based in part on NID. With the benefit of local knowledge, I can easily look at the vintage of an aerial layer and recall whether it was a wet or dry year, or whether it was around when the local water district was forced to keep the water level low due to seismic concerns.

Since there can be so much variation, I’ve taken to mapping the reservoir area according to the flood stage, the highest level where the vegetation has been cleared, even though these days the water level rarely stays that high long enough to be captured by these aerials. This matches, among other things, how the old USGS topos delineated the reservoir. One side benefit is that, even when there’s overhanging tree cover, you can sometimes make out the cleared vegetation in the 3DEP layer if you squint hard enough.

I tend to either map the dam as an area or, for simplicity, a way along the ridge. This means a tapered dam may be detached from the reservoir, but I don’t think that causes any problems in practice.

2 Likes

On a lark, I was perusing some of the very longest dams in the all US file (waterway=dam waylength:4000-) and a few seem totally sensible and some are quite wild. A few of these, like ND00145S001, seem like levees meant to run parallel to the waterway and not really “dams” in the more traditional sense. At least that’s my novice take away from looking at 3DEP.

Red is the suggested, blue is my guess.

As I poke around I’m left thinking that it may be useful to include a few more tags with data from NID to aid folks trying to assess if anything is particularly suspect. They could be removed by the uploader or left and cleaned up after the fact. I’ll suggest tag ideas but that’s not super important.

  1. NID:length=xxxxx This would make it easier to compare to the final adjusted length before upload

  2. NID:point_position=lat,lon Less important but may be helpful

I can get these from the NID website but it may be nice not to have to refer to it.

Or maybe there’s a nice datafile I can browse more easily? something like the csv National File from GNIS would be way less clunky.

1 Like

I have again returned. After looking at the MR tasks, I see the initial placement node is right there. Brilliant.

1 Like

How’s this? nidDamAdditions.csv · GitHub

I named the columns with urls to the NID and MapRoulette just “website” and “url” so they work with tag2link if the csv is opened in JOSM. The column “name” is the name I generated to be used in osm off of the NID’s name fields. Usually it’s the same, but with some abbreviation expansion, capitalization fixes, and removing things that a few states seem to do to try to force unique names for every dam (adding the id number or county name to the dam name).

1 Like