Cycle Node Network Tagging

From OpenStreetMap Wiki
Jump to: navigation, search

Contents

Cycle Node Networks

The basics came from a discussion on talk-nl in September 2008, and it was fleshed out in the months after that. This tagging is currently in active use in parts of The Netherlands and Belgium.

Cyclejunctionnetwork.png

This expanded tagging is based on the following real-world observations:

And the following OSM technical observations:

How?

(A) Node tagging

All numbered junction nodes in a network are tagged:

Key Value Comment
rcn_ref a reference The reference number of the junction. Can be found on or inferred from the signage on the road.

There is no need for a network=rcn tag anymore. rcn_ref=xx and the relationship of a network relation makes it clear enough. Some nodes are also part of other networks and may have rwn_ref=yy.

(B) Route tagging

The routes that make up the network are part of a type=route relation:

Key Value Comment
type route
route bicycle
network rcn
note 04-35 A fast way to identify a route in an editor, and widely used. This is also of great value when the route is not complete yet, and gives a definite hint which (still unmapped) junction is at the other end. The lower number is put first to allow for finding it back easier in a sorted list.
state state do not set this for regular routes

(optional) "connection" if the route connects a POI or a city's center to the network (or)
(optional) "alternate" if this is an alternate route between junctions; it could be a shortcut or just another way to travel between the junctions

Remark

In Germany there are also other routes than "Cycle node networks" tagged as network=rcn. They were there before CNNs appeared in Germany and they are not going away. Those routes tend to have a ref=2 or 3 LETters.

The members of this relation are:

Split nodes and the tentacles extending the routes to connect them

BemmelKP26Overview.png This is to give people an idea of the whereabouts of the split node we're discussing.

25-26

JOSM25-26Draw.png

26-27

JOSM26-27Draw.png


26-30

JOSM26-30.png

26-98

JOSM26-98.png

For somebody coming from 98 the first 26 they reach, is the end of their journey on that route. Regardless which way they want to go now, they can start following tentacles which will lead them to the following start of the route they want and then beyond.

(C) Network tagging

One relation for each (named) cycle node network is created. This relation describes all elements of the network.

Key Value Comment
type network Denotes that this relation is a collection of all junctions and routes making up the network.
network rcn Denotes that this is a cycle node network. 'rcn' is the currently established tag for a cycle node network in Belgium, The Netherlands and Germany.
name name The name of the network. E.g. "Fietsroutenetwerk Zeeland".
operator operator The name of the operator of the network. E.g. "Toerisme Oost-Vlaanderen".

This relation holds:

If a junction node is in two networks, which can happen in border areas, it is added to both of these network relations and it gets a role=connection role for consistency.

All nodes and routes with a role=connection role should therefore be members in two network relations

In some cases, a very large network is further divided in distinct areas (sub-networks). In this case, another relation of the above type can be created, which holds as members only the relations for the sub-networks. Example: the above network is divided in sub-networks, like "Oost Zeeuws-Vlaanderen" and "Schouwen-Duiveland". The parent relation then holds the name for the entire regional network, while the child relations hold the name of a particular part of the network. Junction nodes are (in theory, as exceptions do exist) uniquely numbered within a sub-network, but will most likely be repeated in the other sub-networks.

(D) Collection tagging

One relation for each collection of network relations is created. At the moment there is one for Belgium. One for The Netherlands will be created soon.

Key Value Comment
type collection Denotes that this relation is a collection of all networks in a given area
network rcn Denotes that this is a cycle node network. 'rcn' is the currently established tag for a cycle node network in Belgium, The Netherlands and Germany.
name name The name of the network. E.g. "Fietsknooppuntennetwerken in Belgiƫ".
operator operator The name of the operator of the network. E.g. "Toerisme Vlaanderen".

This relation holds:

It can be used as a starting point to download all CNNs for a country from the servers, or as the starting point for a script to do some Quality Control. When downloading, only the relation will be downloaded, not all its members and submembers. RMB (right mouse button) Select members on the relation and then RMB Download missing members for all networks and after that for all routes, will result in a skeleton of the whole collection of networks and its routes and numbered junction nodes. After downloading the network relations, only the numbered junction nodes will be visible in an off line editor like JOSM.


Advantages

It's the junctions that are named/numbered and part of a network.
Specific networks can be found and named. Member junctions can be identified. Maps for specific networks can now be created.
In NL, the name used to be repeated on every route, but it's now set once in the network relation and the name tags are in the process of being removed
A complete route would now contain an unbroken string of ways connecting the end nodes (simplest case).
Sometimes the routes branch (due to cycle ways on both sides of a street, one way streets, roundabouts with split ways, etc), in that case first the ways going from lower number to higher node number are added with roles, until the place where the branches join again. Then the ways from where the split occurred go in with reversed roles. The end result is that when checking for continuity, one can take all the members with no roles and the first continuous set of members of a branch for checking the direction from low to high node number.

For the other direction (high to low), one can take all the members with no role and the rest of the members with a role that were not consumed in the previous step, then reverse the whole set of ways.

It is not important at this point whether this role is forward or backward. In fact the majority will be forward (due to oneway streets). What is important is the order of the members of the route relation. The first set after the branch belongs to the low->high group, the set after that until where the branches come together again belongs to the high-low group of members.
At the beginning and end of the routes some members can be found with roles too. They are 'hints' showing how to get from a split end node to the actual start of the route one wants to follow. (At the actual start of the route, there is either a numbered node, or all these tentacles come together there). The same applies beyond the end of the route (They are all in the process of being sorted from lower numbered node to higher numbered node) but in reverse.

See Python script which runs inside JOSM for an example implementation

Examples of already existing network relations

JOSM

user:polyglot made some styles and other tricks to make the editing of the cycle node networks in JOSM easier. You can find it here: User:Polyglot/Some_ways_to_simplify_editing_cycle_node_routes_with_JOSM

Quality control with Python script in JOSM

Quality control with Python script in JOSM

Potlatch2

Unfortunately the developers of Potlatch2 refuse to show the note tag for the route relations, so users of Potlatch2 are stuck with looking at large integer numbers instead of a hint about what kind of route it is. For people who want to get serious about working on route relations, it's probably better to 'upgrade' to JOSM anyway, where it is now a real pleasure to work with them, thanks to some research and Jiri's implementation of custom name formatters. See link above.

Personal tools
Namespaces
Variants
Actions
site
Toolbox