OsmIntegrator (OpenStreetMap Integrator) is a web application designed to integrate external data with the OpenStreetMap system to increase accessibility for 3rd party applications. The current project is about grabbing data from public transport companies and adding them as a tag to OSM stops.
Data added by the OsmIntegrator will be used by blind persons' GPS navigation applpications like Lazarillo, Seeing Assistant Move or DotWalker.
Stop number - it’s a number of a bus or tram stop which is present on the stop board or at least on a public transport website. It’s usually a one-digit number or combination of digit and character placed in local_ref=* e.g. “1” - for the first bus stop or “1t” - for the first tram stop Image 1.
Stop identifier - it’s a unique identifier of a bus or tram stop in a public transport system. It’s usually a few digits number placed in ref=*.
NaviApp - it’s a shortcut for navigation application, installed on a smartphone, dedicated to a blind person. Most popular navigation applications dedicated to blind persons are:
Here is a movie about how to use this kind of application.
Stop sign - it's a sign with a stop name. It's also a place where people should wait for the mode of transport and where the bus or tram will stop and open the doors on that side Image 1.
We use our profeassional skills to make this world a little bit better for blind people. That's it.
There are two major problems with stops in Open Street Map:
- Poor stops description - there are a lot of cities without any standard for numbering stops thus blind persons are not able to locate a correct bus or tram stop by using navigation applications
- Old data - stops are not frequently updated
Poor stops description
Blind persons use navigation software installed on smartphones - NaviApps. Navigation applications use GPS position and Open Street Map objects. The common usage of this kind of application is reading selected objects around blind persons clockwise.
For example, when the blind person moves on the pavement in the city, the application reads the following sentences:
- The crossroad is at 3 o’clock
- The bus stop is at 12 o’clock
- ATM at 4 o’clock etc.
One stop usually has multiple positions
The bus or tram stop is usually placed on both sides of the road or rails. Even in this simple situation it's hard to understand by blind person which stop is leading to what location. Especially if he or she doesn't know that place. There are of course more complex cases when stop is spit to many positions Image 2
Why is the stop number so important?
Stop number is a human readable number assigned to the bus stop. Stop number is not only useful for blind person to identify a correct stop but also to understand what type of transport and when to arrive at that stop. The stop number is commonly used in applications like MooveIt, MobileMPK or any other.
There is also a problem with outdated data. Stops are not updated often so it's causing following problems:
- old stop names - the stop name has been changed
- old stop position - the stop has been moved to another location
- new stop - the new stop has been added
- removed or turned off stop - stop has been permanently or temporary removed from transportation system
Stops naming convention
Blind people need information about the name and number of a bus or tram stop to properly identify it. The stops naming convention is different in each city. The stop name is a standard but stops numbering isn't. Here are some examples:
- Warsaw city, Poland - name=* contains stop number and name, ref=* contains stop identifier
- Wrocław city, Poland - name=* contains only stop name, ref=* contains stop identifier
- Poznań city, Poland - name=* contains only stop name, ref=* contains stop identifier
- Gdańsk city, Poland - name=* contains only stop name, ref:ztm=* contains stop identifier
- Gdynia city, Poland - name=* contains only stop name, there is no ref=*
- Rzeszów city, Poland - name=* contains stop number and name, ref=* contains stop identifier Stop is split to two objects - place where the bus stops and a stop sign where passengers can wait for the bus
- Santiago city, Chile - name=* contains stop number and name, ref=* contains stop identifier
- London city, England - name=* contains only stop name, local_ref=* contains stop number
- Berlin city, Germany - name=* contains only stop name, ref:BVG=* contains stop identifier
- Vienna city, Austria - name=* contains only stop name, local_ref=* contains stop number
- Rio de Janeiro city, Brazil - name=* contains the stop name only
- New York city, USA - name=* contains the stop name only
There are only two standards for proper stops naming:
- name=* contains the stop name and stop number
- name=* contains the stop name and local_ref=* contains stop number
ref=* contains stop identifier in all cases.
Cases where the stop number or identifier was missing were omitted.
There are following cases:
Stop doesn't contain ref=*
The ref=* will be added to that stop.
Stop number will be added to local_ref=*.
name=* contains stop number
There are two variants:
1. Stop number will be moved to local_ref=*
or if this is hard to change local standard
2. This convention should be continue
Each stop should have a unique public transport identifier placed in ref=*. Thanks to that identifier it will be easy to connect this particular stop and check if it exists in public transport system and check for following changes:
- Modifications - temporary or permanent removed
There will also be the possibility to detect that a new stop was added to the public transport system.
Why automatic update wasn't a good idea?
We tried to connect OpenStreetMap and public transport stops automatically but results didn't meet our expectations. Some problems were described below:
- One public transport stop was connected with many OSM stops
- Names mapping didn't work because OSM names weren't updated for a while and couldn't be found in public transport data
- OSM stops were mapped to public transport stops few houndred meters away
We also tried to import public transport data into the OSM system but we finally realized that this data was inaccurate in terms of GPS position. The stops positions were tracked by GPS in mobile phones so there were often few meters movements in random direction. We decided to stick with the OSM stops position.
Human factor is essential!
We understood that automatic mapping and importing wasn't a good idea. To make the OSM system useful for blind persons we have to connect data in a proper way. The human factor is essential to avoid many difficult to track problems with mapping objects between two sources. This is why we decided to create a system which will allow us to connect and verify OSM and public transport stops manually before importing them into the OpenStreetMap.
Import plans have been located at the following links:
The OsmIntegrator system is designed to connect public transport data with OSM data and make it easy to use by blind persons. You can find more about the OsmIntegrator system below.
You can find our system on github:
- WIKI - you'll find lot of technical details about OsmIntegrator project
- FRONTEND - it's a graphical part of application
- BACKEND - it's a logic part of application
If you are a provider of navigation application dedicated to blind and you are using Open Street Map as a data source you can add local_ref=* functionality to your application by using tutorail at this link: OsmIntegrator/NaviAppModification.
- Polish Forum: https://forum.openstreetmap.org/viewtopic.php?id=65654&p=2
- ODbl License: https://forum.openstreetmap.org/viewtopic.php?pid=795400#p795400
- Software solutions: https://forum.openstreetmap.org/viewtopic.php?id=70122
- Test OSM server: https://forum.openstreetmap.org/viewtopic.php?pid=852680#p852680
- Our website: https://rozwiazaniadlaniewidomych.org/
- Our fanpage: https://www.facebook.com/rozwiazaniadlaniewidomych/
- Github organisation page: https://github.com/technologiesforaccessibility
- Slack: https://techforaccessibility.slack.com