StrandedKitty / streets-gl

🗺 OpenStreetMap 3D renderer powered by WebGL2
http://streets.gl
MIT License
658 stars 49 forks source link

highway=* with level < 0 and without tunnel=* are not shown #86

Closed osm-ToniE closed 1 year ago

osm-ToniE commented 1 year ago

https://streets.gl/#48.10995,11.52379,68.25,357.00,479.49 https://www.openstreetmap.org/?mlat=48.10996&mlon=11.52387#map=18/48.10995/11.52387

https://streets.gl/#48.15131,11.73102,45.00,0.00,57.26 https://www.openstreetmap.org/?mlat=48.15138&mlon=11.73098#map=19/48.15138/11.73098

I've mapped some highway=trunk, =trunk_link, =path, ... which are not in a tunnel, not covered but with level=-1. Those are not shown.

sekerob commented 1 year ago

Whilst mapped as in a cutting and passing under a bridge (at layer=1), I can't remember to have ever seen ways in cuttings mapped at level=-1. When something is mapped on an embankment, above the surrounding normal surface we(me) don't map these on level=1 either, all considered as being at the surface.

2 Euro cents.

Edit, road in cutting passing under a rail bridge renders fine.

image

StrandedKitty commented 1 year ago

It seems like quite a lot of people use level < 0 to mark that a feature is underground. So Streets GL don't render such features. Here's the function that Streets GL use to determine if a feature is underground: https://github.com/StrandedKitty/streets-gl/blob/dev/src/lib/tile-processing/vector/qualifiers/factories/helpers/isUnderground.ts

Also the wiki page on level=* says that level=* should be used for features inside a building. So I'm not sure why would you add it to a highway.

osm-ToniE commented 1 year ago

Thanks, I did not recognize that level is intentionally limited/bound to building - then it makes sense.

For the trunk road in the "Heckenstaller Trench" (the 1st and 2nd links) it makes also sense to map that as cutting.

The second one is part of a railway station but not yet in the underground part of that station. Besides this path, it is quite common to map highway=steps with level=-1;0 or so, even outside of buildings. Would this be shown, 'cause level includes '0'? What does parseFloat("-1;0") return?

There seems to be some unclarity to many mappers regarding "level" being bound to "buildings". I've seen a lot of "level" mapping independent from "buildings".

I'll keep an eye on the level < 0 on highways and try to map them with cutting=yes then.

osm-ToniE commented 1 year ago

parseFloat("-1;0") returns -1.0 as per reference. So, the steps would not be shown then.

osm-ToniE commented 1 year ago

Thanks, I'm fine with your arguments expressed here. No need to fix this.