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

Add climbing presets + fields #1113

Open
wants to merge 12 commits into
base: main
Choose a base branch
from
Open

Conversation

zbycz
Copy link

@zbycz zbycz commented Feb 9, 2024

Hi,

I'd love to map more climbing routes according the climbing schema on wiki.
See the discussion in:

This PR

This PR adds the viable minumum to tag climbing crags and climbing routes. I will add more features as needed in future (eg. bouldering, area, alternative tagging for crag and boulder etc).

I add only presets climbing/crag and climbing/route + climbing/route_bottom for start.

I built this PR with dist command and deployed an iD editor with those presets, so it can be tested thorougly.
eg.

.

.

Climbing terminology

The taxonomy goes like this - it can be grouped by relations, or just by nearstanding nodes:

  • Climbing area
    • Climbing crag
      • Climbing route
      • Climbing route (start)
      • Climbing route (top) <-- in climbing terminology "top" is end of route
    • Climbing boulder
      • Climbing route
      • Climbing route (start)
      • Climbing route (top)

Number of items

preset name tags types from wiki #
Climbing area climbing = area node,area,relation <1k
Climbing crag climbing = crag node,relation 3k
↳ or natural = cliff
sport = climbing
node,way 7k
Climbing boulder climbing = boulder node,relation 1k
↳ or natural = stone
sport = climbing
node,area 1k
Climbing route climbing = route node,way 1k
Climbing route (start) climbing = route_bottom node 4k
Climbing route (top) climbing = route_top node <1k

@endolith
Copy link

Everything should have sport=climbing, no?

@zbycz
Copy link
Author

zbycz commented Feb 12, 2024

Thanks @endolith, very good point. I added the sport=climbing via the addTags property. You can test it in the demo iD editor.

@endolith
Copy link

image

The grade options are always the same? No YDS in the US?

It complains about some points being on trails or cliffs:

2024-02-12 22_54_04-iD - osm zby cz_ – Range of Motion — Mozilla Firefox
2024-02-12 22_57_34-iD - osm zby cz_ – Cat in the Hat — Mozilla Firefox

But not others:

2024-02-12 22_57_52-iD - osm zby cz_ – Point — Mozilla Firefox

And doesn't show the same interface for them:

2024-02-12 22_52_42-iD - osm zby cz_ – LA Roof — Mozilla Firefox

@zbycz
Copy link
Author

zbycz commented Feb 14, 2024

Thanks for the feedback, @endolith 🙂

ad grades) unfortunately tagging allows for different marks to be assigned for different grade systems. So we have to add a field for each of them in iD. I added the YDS, but in future it would perhaps make sense to create a custom iD field type (like type=multi), which would have better UX (user is not supposed to fill in all of them).

climbing:grade:uiaa=*
climbing:grade:french=*
climbing:grade:saxon=*
climbing:grade:yds_class=*

ad "It complains about some points being on trails or cliffs") Good point. I added vertex type for the route_bottom preset.

ad "But not others") I didn't create a preset for route_top for start, but it is easy now. I added the preset.

Please check it again in the iD demo, eg Cat in the Hat

Copy link

🍱 You can preview the tagging presets of this pull request here.

Copy link
Member

@tyrasd tyrasd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi. Thanks for this comprehensive pull request. It looks already quite good. Please find some inline comments, questions and suggestions for some details below.

And as a general remark, the label property of fields and the name of the presets should follow the so called title case spelling. For example: it should be Climbing Route instead of Climbing route. Would you mind adjusting this?

Comment on lines 12 to 14
"expansion": "expansion bolt",
"glue-in": "glue-in bolt",
"ring": "ring bolt"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where do these values originate from? The wiki only lists abseil and anchor as values for this tag. I cannot even find existing uses for, say the value glue-in on taginfo.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My mistake. Wiki specifies this tag for climbing=bolt, i customized it to fit climbing=route as well.

Removed from this PR, as I don't want to add climbing=bolt yet, maybe in a followup PR.

@@ -0,0 +1,17 @@
{
"key": "climbing:bolt",
Copy link
Member

@tyrasd tyrasd Feb 15, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see that this field is included in the presets for climbing=crag and climbing=route. Unfortunately, the wiki is a bit unclear how this tag should be used exactly, but when looking at the data it seems that it was meant to be used as either a standalone feature (a node with climbing=bolt + this tag – example), or as an attribute on route top nodes (example). If that's the case, it would be better to change this accordingly.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again the same mistake.

Removed from this PR, as I don't want to add climbing=bolt yet, maybe in a followup PR.

data/fields/climbing/orientation.json Outdated Show resolved Hide resolved
Comment on lines 4 to 9
"options": [
"limestone",
"sandstone",
"granite",
"basalt"
],
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the list here seems to be just the incomplete list from the examples in the wiki... many more values are in use, e.g. quartzite, gneiss, porphyry, etc.

Maybe it would be better to leave the options open here for now and let the field use the suggestion for popular values from taginfo instead?

These could remain as a placeholder, though:

Suggested change
"options": [
"limestone",
"sandstone",
"granite",
"basalt"
],
"placeholder": "limestone, sandstone, …",

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, my aim here was to make all the options translatable. I think this is important, because us non-native speakers usually know the rock types only in our language.

I removed options and added proper strings.options according to taginfo. Is it ok? Can we somehow suggest that people can add other options as well?

"name"
],
"moreFields": [
"climbing/length",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does it really make sense to specify the length of a climbing crag? Is it the sum of the routes on it? What practical use would such a number have?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The length in climbing terminology means how long is the route from bottom to top (longer climbs are usually more fun), and this also implies needed rope length.

Often the crag has almost all routes with the same lenght, but usually there are few shorter routes, or perhaps one longer. So this value on the crag works as a default for all the routes, but each route can overwrite it.

Of course, if each route is different length, the it probably wouldn't make sense to tag it on crag as well.

data/fields/climbing/summit_log.json Outdated Show resolved Hide resolved
Comment on lines 10 to 13
"climbing/grade/uiaa",
"climbing/grade/french",
"climbing/grade/saxon",
"climbing/grade/yds_class"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe put these into moreFields for now to avoid the confusion with multiple grading fields been shown at the same time (at least until iD has better support for such cases where one property is usually sufficient).

maybe instead, the fields for climbing:bolted and/or climbing:rock could be included "up here", as they seem to be relatively popular (around 10% of objects use them at the moment).

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, done.

"vertex"
],
"fields": [
"{climbing/route}"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it does not make sense to just copy-paste the fields from the climbing route preset here. There are quite a few of them which do not make sense (e.g. what is the length of the bottom of a climbing route?), and/or which would just duplicate the property of the respective climbing route object (e.g. the rock type of the route, etc.).

Please specify a list of tag which make sense to be used for these features. 🙇 For example, ele seems to be a reasonably popular one (example).

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the issue here is that climbing=route_bottom is very often used as a synonym for "here is the route", and in that case it technically suits as climbing=route.

Eg. there are 4822 nodes with this tag, and 4575 have name (overpass) which may imply this case.

The wiki even specifies this scenario:

Climbing routes can be mapped with a single node marking the bottom of the route, tagged as climbing=route_bottom, or two nodes tagged with climbing=route_bottom and climbing=route_top connected by a way tagged as climbing=route.

Do you think we can leave the "route" fields on the "route_bottoms" then?

"sport": "climbing",
"climbing": "route_bottom"
},
"name": "Climbing route (start)"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would omit the parentheses here (and similarly also on the route_top preset):

Suggested change
"name": "Climbing route (start)"
"name": "Climbing Route Start"

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

Comment on lines +8 to +11
"{climbing/route}"
],
"moreFields": [
"{climbing/route}"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see above

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see above :)

zbycz and others added 7 commits March 29, 2024 07:56
@zbycz
Copy link
Author

zbycz commented Mar 29, 2024

@tyrasd Thank you very much for such a good review. Also I am glad I learned how to correctly propose fields, eg. that I should search taginfo first 🙂

Changes deployed to my id instance, eg:

While editing moreFields I also got an idea how to make them more usable: openstreetmap/iD#10181

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

Successfully merging this pull request may close these issues.

None yet

3 participants