User:Polyglot/Some ways to simplify editing cycle node routes with JOSM

From OpenStreetMap Wiki
Jump to navigation Jump to search

I'll describe here how I customised JOSM to make working with cycle node routes in Belgium and The Netherlands a lot more comfortable. What I describe here will make working with other route and network relations easier as well

Filter to make selecting nodes without zooming in on them convenient

Filter/Add: -rcn..* -area: -boundary: -child network=rcn

o add to selection v regular expression

Map Paint Styles to highlight the nodes and the ways that are part of routes

Create a text file rcn.mapcss with the contents below:

Then F12, third option (grid icon), Map Paint Styles (second tab) + URL/file -> point to where you saved this text file on your system.

When you make changes to the text file, it's possible to reload them by clicking the right mouse button on RCN in the Map Paint Styles pane.

node[rcn_ref] 
 {text-color: green;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn] > node
 {text-color: red;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Brabantse Kouters"] > node
 {text-color: blue;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Pajottenland"] > node
 {text-color: black;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Groene Gordel Dijleland"] > node
 {text-color: yellow;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Hageland"] > node
 {text-color: black;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Hageland Droog Haspengouw"] > node
 {text-color: blue;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}
  
relation[type=network][network=rcn][name="Fietsroutenetwerk B Brugse Ommeland Noord"] > node
 {text-color: blue;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Brugse Ommeland Zuid"] > node
 {text-color: black;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Kempen Noord"] > node
 {text-color: yellow;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Kempen Oost"] > node
 {text-color: cyan;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Kempen West"] > node
 {text-color: black;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Kempen Zuid"] > node
 {text-color: blue;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Kust Noord"] > node
 {text-color: yellow;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Kust Zuid"] > node
 {text-color: cyan;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Limburg"] > node
 {text-color: white;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Westkust"] > node
 {text-color: black;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Leiestreek"] > node
 {text-color: yellow;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Leiestreek Noordoost"] > node
 {text-color: purple;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Voorkempen"] > node
 {text-color: purple;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Leiestreek West"] > node
 {text-color: white;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Leiestreek Zuidwest"] > node
 {text-color: black;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Leiestreek Noordwest"] > node
 {text-color: cyan;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Kalmthoutse Heide"] > node
 {text-color: white;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Meetjesland"] > node
 {text-color: blue;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Meetjesland Noordoost"] > node
 {text-color: white;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Meetjesland Noordwest"] > node
 {text-color: yellow;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Meetjesland Zuidwest"] > node
 {text-color: cyan;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Scheldeland Denderstreek"] > node
 {text-color: white;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Antwerpen Scheldeland"] > node
 {text-color: cyan;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Scheldeland West"] > node
 {text-color: yellow;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Vlaamse Ardennen Oost"] > node
 {text-color: cyan;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Vlaamse Ardennen West"] > node
 {text-color: blue;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Waasland West"] > node
 {text-color: black;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Waasland Oost"] > node
 {text-color: purple;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Westhoek Noord"] > node
 {text-color: purple;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Westhoek Oost"] > node
 {text-color: cyan;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk B Westhoek Zuid"] > node
 {text-color: black;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk NL Zeeuws-Vlaanderen West"] > node
 {text-color: black;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}
  
relation[type=network][network=rcn][name="Fietsroutenetwerk NL Zeeuws-Vlaanderen Oost"] > node
 {text-color: yellow;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk NL Walcheren / Noord-Beveland"] > node
 {text-color: purple;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk NL Zuid-Beveland en Tholen"] > node
 {text-color: blue;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk NL Schouwen-Duiveland"] > node
 {text-color: black;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk NL Brabantse Delta"] > node
 {text-color: purple;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk NL De Baronie"] > node
 {text-color: black;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk NL Midden-Brabant"] > node
 {text-color: blue;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Fietsroutenetwerk NL Kempen"] > node
 {text-color: purple;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

  relation[type=network][network=rcn][name="Fietsroutenetwerk NL Regio Eindhoven 'De Peel'"] > node
 {text-color: black;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=network][network=rcn][name="Knotenpunktnetzwerk Kreis Heinsberg"] > node
 {text-color: white;
  font-size: 17;
  text: rcn_ref;
  text-halo: #aaffcc;
  text-halo-radius: 2;
  text-position: right;}

relation[type=route][route=bicycle][network=rcn][ref!=RUR][ref!=NRR][ref!="2LR"] > way::relation_underlay
 {z-index: -1;
  width: 12;
  color: cyan;
  opacity: 0.3;
  linecap: none;
  text-color: red;
  font-size: 12;
  text: parent_tag(note);
  text-position: line;
  text-offset-y: 16}

It is also possible to use separate 'lanes' for the two directions of a route. This way when a way is used in a route in only one direction it has a single line at one side, and when it's used in both directions it has two. (J-----.):

/* set up two 'lanes' with zero width in rcn relation underlays */
relation[type=route][route=bicycle][network=rcn] > way::rcn_fw,
relation[type=route][route=bicycle][network=rcn] > way::rcn_bw
{
  z-index: -5;
  width: 0;
  color: #009999;
}

/* use forward 'lane' if role is not (only) backward */
relation[type=route][route=bicycle][network=rcn] >[role!=backward] way::rcn_fw
{
  width: 4;
  offset: -5;
}

/* use backward 'lane' if role is not (only) forward */
relation[type=route][route=bicycle][network=rcn] >[role!=forward] way::rcn_bw
{
  width: 4;
  offset: 5;
}

Custom Name Formatters

This functionality was added very recently and it only works with the latest version of josm-tested.jar at the moment

It is possible to have JOSM display names of relations in a customised way, piecing it together by bits and pieces. These can be tags of the relation itself, but also of parent relations.

F12/Tagging Presets + point to a file with the following contents:

(I added it to my oneclick.xml file)

<presets>
	<item name="Cycle Node Network" type="relation"
		name_template="route(?{'{network} '}!{parent() type=network(network=rcn|network=rwn)'?{'{ref}' | ''}'}?{'{ref} '}?{'{note} '}?{'{name}'}"
		name_template_filter="type=route (route=bicycle | route=foot | route = hiking)">
	</item>
	<item name="Public transportation" type="relation"
		name_template="route({operator} {ref} ?{'{from} - {via} - {to}' | '{from} - {to}' | '{from}' | '{to}'})"
		name_template_filter="type=route (route=bus | route=tram)">
	</item>

	<item name="Node Network node" type="node"
		name_template="?{'FKp {rcn_ref}'}?{' / WKp {rwn_ref}'}"
		name_template_filter="type:node rcn_ref rwn_ref">
	</item>
	<item name="Node Network node" type="node"
		name_template="FKp {rcn_ref}"
		name_template_filter="type:node rcn_ref">
	</item>
	<item name="Node Network node" type="node"
		name_template="WKp {rwn_ref}"
		name_template_filter="type:node rwn_ref">
	</item>

</presets>

The last 3 items' function is to show the rcn_ref/rwn_ref instead of the ID of the node in a network relation. Up to now I always needed to wait for the tooltip, and I was adding them as the role, which was a kludge, but now they are right there!

More information can be found here:

Custom Name Formatters