Yatayat is a project to provide maps and routing of public transportation in Kathmandu, Nepal. The data for the public transit network is stored in OSM, using the OSM Public Transit schema (with small extensions, noted below). The project eventually aims to include routes throughout Nepal. Inspired by other projects like Prishtina Buses, Haiti Tap Tap Map, and started by the Monsoon Collective.
The Yatayat project, in addition to creating a viewable and routable map of public transportation, has also built a series of data quality tools in order to facilitate the correct mapping of the public transportation network in Kathmandu. This page is dedicated to documenting the schema used in the Yatayat website, as well as documenting the Yatayat data quality tool to help in that process.
Philosophy and Structure of the Yatayat project
The Yatayat project began as a part of the Monsoon Collective, and thus is led by youth and the OSM community, rather than by a transit agency. Thus, the aim is to document and maintain the public transportation network within OSM, as opposed to in a third-party repository, using, for example, the GTFS schema. The lack of timed transportation in Nepal further supports this vision, as GTFS is interested heavily in timing information.
The project has the following parts:
- An OSM data extractor that uses the Overpass API to extract public transportation routes in Kathmandu periodically.
- A data quality engine that checks the quality of this extract, and saves it into a versioned repository when data quality is good. (And emails the yatayat project if not)
- Visualization of the public transportation and browser-based routing using the extracted high quality data.
How does Yatayat specify public transportation routes in OSM?
Yatayat uses the OSM Public Transit schema, which is described in the pages Public transport and Proposed features/Public Transport, with small extensions. To facilitate usage by new users, we will attempt to re-describe this schema (with yatayat extensions) in this page. Note that there are a couple of differences between what is described here, and what the proposed schema for OSM in general are--see below if you care for the differences.
- A public transportation route, eg., a bus line, is a Relation in OSM.
- This relation has certain tags, such as type=route, route=bus or route=tempo, etc. that tell us about the route's name, shortname, reference number, transportation type, etc.
- This relation has the roads and stops that form the part of the route as "members."
- The stops must be *on* the roads, and must be marked with public_transport=stop_position.
- And finally, the start and end of the route are marked specially; these stops must have either "start" and "end" roles within the relation. (For looped routes, the word "terminus" may be used instead of start/end).
Are the yatayat and OSM Public Transport schemas exactly the same?
No, though they are very close. There are a couple of key differences between the Yatayat schema, and the generalized OSM Public Transit schema. They are:
- the inclusion of stops with "start" , "end" or "terminus" roles, for the simplification of routing (even in the presences of small data quality issues).
- the assumption that routes are two-way by default (as is common). One-way routes must be specially marked, with oneway=yes in the route relation itself.