From OpenStreetMap Wiki
Jump to navigation Jump to search
OsmIntegrator logo

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.

The website address is www.osmintegrator.eu. You will find us on github.


Image 1: Stop sign with stop number (stop number is in the right upper corner - 07)

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:

  1. Lazarillo
  2. Seeing Assistant Move
  3. DotWalker

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:

  1. 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
  2. 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

Image 2: Bytom Dworzec station. There are 16 bus stops with the same name.

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.

Image 3: View from MobileMPK application.

Old data

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

Technical details

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:

  1. Warsaw city, Poland - name=* contains stop number and name, ref=* contains stop identifier
  2. Wrocław city, Poland - name=* contains only stop name, ref=* contains stop identifier
  3. Poznań city, Poland - name=* contains only stop name, ref=* contains stop identifier
  4. Gdańsk city, Poland - name=* contains only stop name, ref:ztm=* contains stop identifier
  5. Gdynia city, Poland - name=* contains only stop name, there is no ref=*
  6. 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
  7. Santiago city, Chile - name=* contains stop number and name, ref=* contains stop identifier
  8. London city, England - name=* contains only stop name, local_ref=* contains stop number
  9. Berlin city, Germany - name=* contains only stop name, ref:BVG=* contains stop identifier
  10. Vienna city, Austria - name=* contains only stop name, local_ref=* contains stop number
  11. Rio de Janeiro city, Brazil - name=* contains the stop name only
  12. New York city, USA - name=* contains the stop name only


There are only two standards for proper stops naming:

  1. name=* contains the stop name and stop number
  2. 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.


Stops Naming

There are following cases:

Stop doesn't contain ref=*

The ref=* will be added to that stop.

name=* and local_ref=* doesn't contain stop number

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

Old data

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:

  1. Name
  2. Position
  3. 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:

  1. One public transport stop was connected with many OSM stops
  2. Names mapping didn't work because OSM names weren't updated for a while and couldn't be found in public transport data
  3. 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

Import plans have been located at the following links:

Automated edits/luktar/OsmIntegrator - fixing stop signs for blind


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:

  1. WIKI - you'll find lot of technical details about OsmIntegrator project
  2. FRONTEND - it's a graphical part of application
  3. BACKEND - it's a logic part of application

Modify your navigation software

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.