Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for node-tags in lookups.dat #685

Open
LupinSun opened this issue Mar 30, 2024 · 8 comments
Open

Support for node-tags in lookups.dat #685

LupinSun opened this issue Mar 30, 2024 · 8 comments

Comments

@LupinSun
Copy link

Hi everyone,

I noticed that some mappers, including myself, sometimes use certain tags on nodes instead of the way to indicate short sections without splitting the segment. I wonder if it would be possible to add the smoothness, mtb:scale, mtb:scale:uphill and surface tag to the node-tags section in lookups.dat, as it is done for the way-tags section?

Thank you for your time and consideration.

@polyscias
Copy link
Contributor

Probably good to describe how a router should have these node tags as I do not really see how it should do that, I do not see how these tags make sense in node context.

@LupinSun
Copy link
Author

Well, the profile I created and use is also based on these parameters (obviously only the way-tags part). I'll give you the example of my profile for enduro motorcycles: one of the dynamic variables present are the skills. Based on the choice between beginner, intermediate, advanced and expert, roads that have one of these tags that I mentioned are either rewarded or penalized. If I had the possibility to extend it also to the node part, it would be more complete. If you need it, I can send you the profile I created, and you will realize that it is very useful. It will not be the precise and super complex profile like those that are found around created by professionals, but hey, it does its job. Obviously, I am always trying to improve it, and that's why I made this request even though I am a novice.

@polyscias
Copy link
Contributor

polyscias commented Apr 1, 2024

Sorry my earlier reply was not 100% to the point, I know how point/node based costs work in a profile, even made some code to handle traffic signals.

BRouter uses OpenStreetMap data and the wiki page for smoothness indicates it may not be used for nodes (See "Used on these elements")

The pages for mtb:scale and surface indicate that they might be used on nodes but if you look at the taginfo data below you see the usage is minuscule with 0.2% and 0.4%.

Two questions:

  1. Why not map it on a way instead of a node? See for instance this 23 meter piece of road that is part of a speed table which are most often mapped as node.
  2. What cost to give 100 meters of road with surface=asfalt + a node that has surface=unhewn_cobblestone

@LupinSun
Copy link
Author

LupinSun commented Apr 1, 2024

  • because perhaps the section to be indicated is really small and short, for example I used the smoothness tag on difficult fords to cross, but the same thing applies if a segment has an obstacle of a few cm or metres, for example in a path or dirt road where you find a "tooth" stone which means that the road only at that point is not in good condition.
  • instead of dividing the segment into three parts, insert the tag on the node and leave the segment whole.
  • It depends on the profile creator's goals. If they believe that this tag should be penalized, then why not? Since it is grouped on the wiki page with other paved roads, this tag could have the same penalty as an asphalt road. However, it could also be penalized more in other cases, such as for someone in a wheelchair or for calculating routes that avoid vibrations and so on. It always depends on the purpose of the profile.

However, I also understand that adding and working for such low percentages might not make sense, but they make the calculation more precise, just the fact that compute excludes some node values ​​​​makes the compute imprecise, I mean, if in my profile I insert the code to avoid all the "mtb:scale=3|4|5" values ​​, I would like that the route will be as precise as possible and therefore the segments to avoid should be all those segments that present this tag but also all the segments that have the node with the same tag

In any case, it is better to let the profile creator decide whether or not to use that node rather than not being able to use it at all.

I would also like to add another request. Today I was thinking about my profile and its calculation limits, and I would need to add the waterway=stream tag, the seasonal=* key (all tags), and the intermittent=* key (all tags). This is because I want my profile to consider these tags and keys. This will be especially useful in areas like Sardinia, where some streams can be used for recreation. Considering the global rise in temperatures, this could also be useful in other areas where the phenomenon is occurring, as it is in Sardinia. For now, I have worked around the problem by adding an additional highway=path or track tag to the existing waterway key, but I'm not sure if this is the correct way to map.

Thank you for your time and consideration.

@EssBee59
Copy link
Collaborator

EssBee59 commented Apr 9, 2024

Hello LupinSun,

1- As Polyscias I do not think, it is a good idea to set a tag such as smoothness on a node: The cost resulting from a "bad smoothness" depends on the length of the segment ....
Your goal is to consider special points?
So, the way for that would be to set a node tag, please look at the current list:
https://wiki.openstreetmap.org/wiki/Map_features

(example: barrier=debris... that is currently supported by the brouter!)

2- What do you mean about "waterway=stream"
As these segments are not usable by bikers or motorcycles the tag can not be "directly" considered.
The only way is currently to use the option "consider river" in order to favor a route near from water...
Regards
EssBee

@LupinSun
Copy link
Author

LupinSun commented Apr 10, 2024

Response in English:
Hi EssBee,

  1. I understand your point about the length of the segment being a factor in smoothness. However, I believe that there are still cases where it makes sense to set a smoothness tag on a node, especially for small features and short segments.
    For example, consider a ford (represented as a node) that is difficult to cross due to large rocks on the bottom. This would be impassable for a typical car, but a high-clearance vehicle could cross it without difficulty. In this case, it would be helpful to set a smoothness tag on the node to indicate the difficulty of crossing..
    My request was not only for smoothness but also for mtb:scale, mtb:scale:uphill, and surface tags. The goal is to have the most precise and accurate calculation possible. Since some mappers insert these values on a node, I believe they should also be considered in the calculation. I know they are a minority, but they do exist.

For example, I mentioned the mtb:scale tag. If my code avoids certain mtb:scale values, I want both segments and nodes to be avoided in the compute. Otherwise, the calculation is inaccurate.

  1. Regarding "waterway=stream," I refer to this: https://wiki.openstreetmap.org/wiki/IT:Tag:waterway=stream. A stream is more likely to be rideable than a river because it is more likely to dry. Larger rivers, on the other hand, are more difficult to ride due to the volume of water they carry and their depth.
    To support my argument, I found motorcycle tracks (not mine) on Wikiloc where motorcyclists ride streams:

Enduro: https://it.wikiloc.com/percorsi-enduro/orgosolo-54285480 (I ride in this stream too)
MTB: https://it.wikiloc.com/percorsi-mountain-bike/complesso-minerario-del-monte-narba-e-baccu-arrodas-142659811
As you can see, at one point in the tracks, they ride the river, which has waterway=stream on OSM. I would like this tag to be added to lookups.dat, along with the seasonal and intermittent tags, which indicate whether a river dries up during certain times of the year.
The only way I found to be able to route along these streams is to add the tag highway=track/path to the main tag.

I hope this explanation is clear. Thank you for your time and consideration.

Best regards,

LupinSun

@EssBee59
Copy link
Collaborator

Hello LupinSun,

1- Smoothness on Node or on Way:
I am open for enhancements of routing, and that is why I readed your thought with interest.
But before considering "new tags" (new routing-concepts), we should try first to enhance the available infrastructure:

Your use case "ford":
A ford is not a node but a way of minimum some meters, it is mapped as a way (example: highway=track, ford=yes or stepping_stones).
Of course "smoothness" can also apply and the Brouter supports these tags.

Other cases: " sometimes use certain tags on nodes instead of the way to indicate short sections ......"

  • If a "short section" differs from the main section, I would split the way (as recommended in OSM to have identical tags along a segment/section).
  • Exceptions: the problem/defect on the section is well defined for a node (examples: barrier=sump_buster or barrier=kerb)
  • An other approach is "aggregation"
    Suppose you have a way with N defects (potholes, stones..). Instead of splitting the way, a "middle" smoothness factor can be evaluated for this way

2- Riding in river / stream

I help by Brouter enhancements form my own usage and to promote the biking... on the standard ways!
To protect the nature I do not liked to route bikers in such areas (if possible at all).

Regards

@LupinSun
Copy link
Author

I want to clarify that I don't want to be insistent, annoying, or anything else, but just to understand and improve this wonderful project, of which I am also a user. The tag ford=yes is mainly used in nodes https://taginfo.openstreetmap.org/keys/ford#overview only about 10% is used on ways so what you described is a small part of its usage and unfortunately I am mistakenly led to think that the tag smoothness is added on the node ford=yes which at this point turns out to be about 90% of its usage.
As for the "aggregation" I don't agree because averaging reduces the difficulty level in the hardest part, let me explain better, if you only have a point smoothness=very_horrible (I always take the ford as an example since most people map it on a node) on a way in good condition that point by averaging will be reduced to smoothness=bad for the entire way, but we all know that on smoothness=bad any vehicle can pass while on smoothness=very_horrible only 4x4 and similar vehicles can pass.
As for the protection of nature, I don't understand what the problem is, what changes if a vehicle passes over stones whether they are on a dry riverbed rather than an exposed rock, a path, or something else, unless you are opposed to any form of off-roading in general. Respect for nature, in my opinion, is different, for example, not leaving any waste even the smallest part, if we talk about nature, uncontrolled road cementation in the woods leads to more tourism and therefore more disturbance and degradation for nature (flora and fauna). Anyway, thank you for listening to me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants