Public transport/Quality Assurance

From OpenStreetMap Wiki
Jump to: navigation, search

While transitioning from the old Public transport tagging schema to the newer Public_Transport some inconsistencies can appear.

JOSM

JOSM validators already contains some checks about the relations consistencies.

​Jungle Bus validation ruleset (fr) provide a few more. (source)

PT Assistant also have dedicated ptv2 validation rules.

Osmose

Osmose has several analysers on public transport data

OSMInspector

OSM Inspector as dedicated views for Public Transport Stops and Routes

Other tools

Many transport visualization tools can be use for QA, such as OSMTransportViewer.

See AwesomeTransportTools for more

Overpass Queries

Highway=bus_stop without a public_transport=* tag

The first stage of transitioning from highway=bus_stop to Public_Transport is to apply either public_transport=stop_position or public_transport=platform to each highway=bus_stop

Overpass query

node({{bbox}})[highway=bus_stop][public_transport!~'platform|stop_position'];
out meta;

Overpass turbo

Stop_position or Platform not within a stop_area relation

After tagging stop_positions and platforms, each objects related to a stop should be grouped in a public_transport=stop_area relation.

Overpass query

node({{bbox}})[public_transport~'stop_position|platform ']->.a;
rel(bn.a)[type=public_transport];
node(r)->.b;
(.a; - .b;);
out meta;

Overpass turbo

Stop_position without platforms

In most cases a stop_position should have a platform not far from it

node({{bbox}})[public_transport=stop_position]->.a; // Find stop_positions
(
  node({{bbox}})[public_transport=platform];
  way({{bbox}})[public_transport=platform];
  rel({{bbox}})[public_transport=platform];
);// Find platforms
node(around:50.0)[public_transport=stop_position]; // Then look around for stop_positions from each platform
(.a; - ._;); // Intersection of the two sets, which give us stop_positions without platforms
out meta; // Needed for JOSM exports

Overpass Turbo

Platform without Stop_positions

(
  node({{bbox}})[public_transport=platform];
  way({{bbox}})[public_transport=platform];
  rel({{bbox}})[public_transport=platform];
)->.a; // Find platforms
node({{bbox}})[public_transport=stop_position]; // Find stop_positions
(
  node(around:50.0)[public_transport=platform];
  way(around:50.0)[public_transport=platform];
  rel(around:50.0)[public_transport=platform];
); // Then look around for platforms near stop_positions.
(.a; - ._;); // Intersection of the two sets, which give us platforms without stop_position
out meta; // Needed for JOSM exports

Overpass Turbo

Public transport objects without network=*

(
  node({{bbox}})[public_transport][network!~'.'];
  way({{bbox}})[public_transport][network!~'.'];
  rel({{bbox}})[public_transport][network!~'.'];
); 
out meta; // Needed for JOSM exports

Overpass Turbo