It involved the Jungle Bus team, AFD (Agence Française du Développement, French Development Agency), the transit consultant agency Transitec and the local OSM community. The collection and mapping process on field started on 19 July 2017 and finished late September.
This page describes the process and the tools used to run this project.
All the data mapped is available directly in OpenStreetMap :
- Tracks and stops of the lines : overpass API query
- All the stops : overpass API query
- List of the lines : overpass API query
A map is also available.
Bus stops collection
Bus stops have been collected on the field by 6 OSM contributors. The accounts used are the following:
|OSM User Name|
All the traces are directly uploaded to OpenStreetMap, and we use a custom script to download and rename them all automatically.
Tro tro lines
In order to create an unexisting Tro tro line, you can use the dedicated tool created by Jungle Bus directly in this list (by clicking on "create relation").
For every line, 3 relations need to be created: one for the master, one for the outbound and one for the inbound trip. The outbound trip (from "home station" to "destination") will be labelled "A". And the inbound trip (from the "destination station" to the "home station") will be labelled "B".
The GPS trace while collected will be added to the "GPS trace" mention as a link.
We consider a bus stop at the exact place where passengers wait for the bus. It is different than the stop position of the vehicle that is not part of our scope.
First step is to load in JOSM all the existing data regarding the stops:
Tro tro stop
A bus stop should be mapped as a simple node with the following tags:
|public_transport||platform||yes||This is a waiting area|
|highway||bus_stop||yes||This is a bus stop|
|bus||yes||yes||This is about bus|
|name||*||yes||The name of the bus stop|
|official_status||unofficial||no||For an implicit bus stop with no written mention at all|
|shelter||no||no||For a bus stop with only a pole|
|shelter||yes||no||For a bus stop with a shelter|
More details are available at https://wiki.openstreetmap.org/wiki/Tag:public_transport%3Dplatform
You also can use our custom preset for Tro tro stop creation.
Tro tro line
A Tro tro line should be described with 3 relations :
- A master relation that describes general information such as the network and the number of the line.
|type||route_master||yes||This is a meta relation|
|route_master||bus||yes||This is about bus|
|name||* e.g. “Trotro 003 : 37 Lorry Park ↔ Tse Addo”"||yes||The name of line mentioning its reference number, its 1st and last stop|
|bus||unofficial||yes||Always used for a Tro tro line|
|operator||*||yes||Name of the company that operates the service|
|ref||"* e.g. “003”"||yes||The number of the line (always 3 digits)|
|frequency||* e.g. “7”||yes||Approximate frequency of Tro tro traffic during traffic peak time (in min)|
|charge||*GHS e.g. “2.1GHS”||yes||Fare of the line|
This relation contains as members only the 2 child relations (direction A and B). More details are available at https://wiki.openstreetmap.org/wiki/Relation:route_master
Exception: if the fare is not the same inward and backward, please mention it in the comment section.
- Two child relations, one for each direction, embedding all bus stops and the route itself.
|type||route||yes||This is a transport relation|
|route||bus||yes||This is about bus|
|name||* e.g. “Trotro 003 : Tse Addo → 37 Lorry Park”||yes||The name of line mentioning its reference number, its 1st and last stop|
|bus||unofficial||yes||For a Tro tro line|
|operator||*||yes||Name of the company that operates the service|
|ref||* e.g. “003”||yes||The number of the line|
|from||*||yes||The name of the first bus stop|
|to||*||yes||The name of the last bus stop|
|travel_time||* e.g. “49”||yes||The time (in min) to travel from the first to the last stop (computed from the GPX track)|
|roundtrip||yes;no||no||Whether or not the route start and ends at the same place|
More details are available at https://wiki.openstreetmap.org/wiki/Relation:route
While mapping in JOSM, you can use the Jungle Bus validator tool to double check quality.
It has been developed specifically for the project in Accra so it's not a generic tool to use everywhere in the World.
It runs the following tests:
|#||Warning message||What is the problem ?|
|1||Jungle : The route tag is missing (add the tag route = bus/coach/tram/etc)||Every transport relation should detail its route type. For AccraMobile3, it would always be route=bus|
|2||Jungle : The route_master tag is missing (add the tag route_master = bus/coach/tram/etc)||Every transport master relation should detail its route type. For AccraMobile3, it would always be route_master=bus|
|3||Jungle : The route_master tag is missing (change the route tag to route_master)||Every meta relation should have a route_master=bus tag. Please change the route tag to a route_master tag|
|4||Jungle : The network tag is missing||Every meta relation should have a network tag. Please add one|
|5||Jungle : The operator tag is missing||Every meta relation should have an operator tag. Please add one|
|6||Jungle : The ref tag is missing||Every meta relation should have a ref tag. Please add one|
|7||Jungle : The from or to tag is missing||Every meta relation should have a from tag and a to tag. Please add them.|
|8||Jungle : The frequency tag is missing||Every meta relation should have a frequency tag. Please add one|
|9||Jungle : The charge tag is missing||Every meta relation should have a charge tag. Please add one|
|9+||Jungle : The charge tag must end with GHS||Every meta relation should have a charge tag ending with GHS. Please check the value for this tag|
|10||Jungle : The name tag is missing||Every bus stop should have a name tag. Please add one|
|11||Jungle : Is it a bus_stop or a tram_stop ?||The tag public_transport=platform is not rendered, please add the legacy tag highway=bus_stop|
|11+||Jungle : Is it a bus_stop ?||The tag public_transport=platform is not rendered, please add the legacy tag highway=bus_stop|
|12||Jungle : Is it a passenger waiting point (platform) or a stop_position ?||The tag highway=bus_stop is ambiguous. If it’s the position where the bus stops, replace it by public_transport=stop_position. If it’s the position where the passengers are waiting, add public_transport=platform|
|13||Jungle : Add this route relation to a route_master relation||All the line variations (route relations) should be part of a line (route_master relation)|
|14||Jungle : Add the stop to a route relation||All the stops should be in at least a line variation (route relation)|
|15||Jungle : The travel_time tag is missing||Every route relation should have a travel_time tag, in minutes. You can use the GPX track to compute one|
Brand new control tools have been developed (july 2017) by the french OSM community for checking:
- transport relations:
- Line traces: