tilezen / vector-datasource

Tilezen vector tile service - OpenStreetMap data in several formats
https://www.nextzen.org/
Other
508 stars 119 forks source link

Add basic is_bicycle_route, bike lane left, right #647

Closed nvkelso closed 8 years ago

nvkelso commented 8 years ago

Picking up thread in https://github.com/mapzen/vector-datasource/issues/391 to limit to simple change:

nvkelso commented 8 years ago

See line notes in https://github.com/mapzen/vector-datasource/pull/739 for indicating bicycle route network type (not just a boolean).

nvkelso commented 8 years ago

We've added basic attributes (good), but we're missing a calculated is_bicycle_route: yes. Do we need that still? We include bicycle_network with values in icn, ncn, rcn, and lcn which is probably more useful. But sometimes a road might not part of a route relation and miss bicycle_network but still have a cycleway on it. Here's the logic from the scene file we're using for this for debug:

    bicycle-roads:
        data: { source: mapzen, layer: roads }
        filter: 
            any:
                - bicycle_network: true
                - cycleway: yes
                - cycleway_left: yes
                - cycleway_right: yes
                - cycleway_both: yes
nvkelso commented 8 years ago

More complete example:

    bicycle-roads:
        data: { source: mapzen, layer: roads }
        filter: 
            any:
                - bicycle_network: true
                - cycleway: true
                  not: { cycleway: no }
                - cycleway_left: true
                  not: { cycleway_left: no }
                - cycleway_right: true
                  not: { cycleway_right: no }
                - cycleway_both: true
                  not: { cycleway_both: no }
zerebubuth commented 8 years ago

But sometimes a road might not part of a route relation and miss bicycle_network but still have a cycleway on it.

If a way is not part of a route=bicycle relation (or has ?cn_ref), then it's not a bicycle route - at least as far as we can tell from the data. We shouldn't be implying that any road with a cycle lane on it is a cycle route - those are two separate concepts.

Sometimes there are roads without cycle infrastructure on them which are part of cycle routes, particularly in rural areas. And sometimes there are cycleways or separated cycle lanes which aren't part of any cycle route.

A couple of options:

  1. Have the scene file choose whether to treat bicycle_network and cycleway* differently. It seems to me that a useful cycling map would want to treat these things differently.
  2. Add an additional is_cycle_route_or_lane attribute (and come up with a better name). Would that then always be true on dedicated highway=cycleways?
nvkelso commented 8 years ago

1) Have the scene file choose whether to treat bicycle_network and cycleway* differently. It seems to me that a useful cycling map would want to treat these things differently.

Agree. We need to provide enough details in the vector tiles to enable client side styling decisions. (In the US bicycle "route" is used for signed bicycle networks that include (or don't include) bike lanes.)

2) Add an additional is_cycle_route_or_lane attribute (and come up with a better name).

I'm fine calling this new boolean (true not "yes") something like is_bicycle_related.

2) con't: Would that then always be true on dedicated highway=cycleways?

Yes, it should always be true on dedicated highway=cycleways, good catch!

nvkelso commented 8 years ago

Looking good.