Branko Kokanovic's Diary

Recent diary entries

OSM Serbia community is having its first “official” tasking manager task. We are mapping small city of Mladenovac:

Tasking manager instance was kindly borrowed by Croatian community. Why Mladenovac? Well, we took Mladenovac as it had worst ratio of population/building at If this is succesful, we thought that people who contributed the most choose next city:)

This is great as this will be good reference of what we can pull together and how many local people we can attract! We already took some nice “before” pictures, so it should be nice comparasion once we are done:) Feel free to drop by or ping here if you want to help out! Everyone is welcome:)

More details in Serbian here:

Location: Banja, Младеновац (варош), Mladenovac Urban Municipality, City of Belgrade, Central Serbia, 11400, Serbia

TL;DR I wrote new console app that takes GTFS as an input and tells you exact changes you need to do in OSM to make it as close to GTFS as possible. Head to source to start using it.

Try it out on your GTFS and let me know how it went! I am open to suggestions, new ideas and new checks!


Purpose of this tool is to help find errors and differences between GTFS and OSM data. It will also help point to errors in PTv2 routes in OSM. It covers wide range of errors, tag checks, geometry checks… (when I say “wide”, I really mean it! - check to keep me honest, I am really proud what you can check today).

Once you import data in OSM (or when new version of GTFS data is released), you can use this tool to check if all data from GTFS is imported in OSM correctly and what are differences.

Tool is heavily relying on PTv2 spec and do not try to deviate from it. One would might say it is “opinionated”:)

This tool is not general-purpose PTv2 quality assurance tool, even though it points to a lot of PTv2 errors in OSM. It is handy if you are OK with console output and quick iterations as you can grep it, cron it, sed it as you like. Check this wiki for other great tools.

Why new tool

Belgrade, Serbia released open GTFS data and I wanted to conflate it to OSM (as an authorative dataset). However, none of the tools could scratch my itch. PTNA is awesome tool and Toni was great to onboard Belgrade, and while it shows errors, I didn’t have level of control I wanted. Our western neighbors in Croatia also developed a tool named Triglav. I experimented with it, but it was currently not generic enough to accept another city and I didn’t know Elixir enough to adopt it to Belgrade:) I tried to fiddle with GO-Sync, but I really didn’t have any control and it was that non-intuitive that I didn’t know how to even start (and yes, I read documentation:D) So, basically, that was whole ecosystem I can find. So, I started writing it as a way to help GTFS=>OSM syncing with a goal to make it usable for any GTFS in the world. I think I am halfway there:)

What’s next

I would like to see some better output. Some HTML dump with some fancy <table> that can do filtering, or even show Leaflet map with GTFS and OSM route for visual inspection. This is ideal task for beginner. If you want to start learning Python, or deepen your knowledge of it, I am willing to mentor you!

Additionally, this tool could be used to automate commits (if you are brave enough and you get sign off from import mailing list and local community:).

Location: Dorcol, Old Town, Stari Grad Urban Municipality, Belgrade, City of Belgrade, Central Serbia, 11000, Serbia

I worked for some time to create Mapnik-based tileserver where names are internationalized. I managed to do it by pulling data from names from Wikidata and Wikipedia. Project is released at:

You can see showcases at:

Idea is to create new columns in PostGIS which get populated from wikidata/wikipedia and then, use those columns in renderer.

Do check it out if you find this useful and submit issues if you see any bugs, or this doesn’t completely do the job for your case!