I recently had the joy of finding a level 3 island (Way: 1233009406 | OpenStreetMap) on aerial imagery, an island in a lake on an island in a lake on an island.
It’s not too far away from me, so I’m planning to do an expedition to survey it which will include a refreshing little swim in January.
Finding such islands in OSM data seem algorithmically straight forward, but the idea of downloading a full planet file scares me a little. I’m also not fluent enough in Overpass yet to find such objects that way.
Has anyone else here tried finding recursive islands before?
To do a first pass at this you could take the planet and extract all natural=water relations. Because you’re interested in islands, they must be part of a MP as inner, so ways tagged as water don’t matter.
The best way to proceed from this point is pass the resulting file through one of many conversion tools to get geometries, and run your algorithm on that.
It’s not possible to get this purely from relation membership because the relationship. An island and a lake outside it are related by parent/child relationships, but an island and the lake inside have only a spatial relationship.
Yes, that is same conclusions I came to, except I need to somehow distinguish between lakes on islands in the sea and lakes on continents. The only minor optimisation is to exclude relations with only outer members, which should be a notable percentage of the ~700 000 water relations.
You can also look at objects tagged place=island and see if they are contained within another place=island. I did this to test out Geodesk and it does bring up some genuine level 3 islands (e.g. this one) but it’s not entirely reliable, it also brings up a whole bunch of QA issues / questionable tagging. For example
place=island on a construct that actually includes multiple separate islands (example) which themselves have place=island
part of an island being mapped as place=island (example) despite a land connection to the “outer” island
the admin boundary for an island being tagged place=island (example), in addition to the island itself
Sometimes they all combine and place=island is on the node, the way, and the admin boundary, resulting in a “fake” level 3 island.
Your example of a level 3 island doesn’t even have a place tag so it wouldn’t be found this way. The opposite is also not uncommon, where someone maps an island with place=island/islet, but forgets to make the surrounding water body a multipolygon and add the island as an inner. (When I get around to it I might make a Maproulette challenge to fix these.) So in some cases the approach via place can find islands you would not otherwise find, but overall it’s probably less reliable than the approach based on multipolygons and inners.
Most other crossings where of the much simpler causeway type. (Sidenote: this doesn’t cause any connectivity issues with the mainland affecting the definition of “island” as the main island itself, Smøla, doesn’t have any mainland connections).
Decided to cross the lake from the west side. Some ice, but just a centimetre. Not nearly enough to walk on, but would still make swimming fairly slow. Luckily, the water wasn’t more than chest deep.