Retrieving notes with a Perl script

Posted by richlv on 25 September 2015 in English (English)

OSM notes

OpenStreetMap website allows users to add notes. Adding a note They are supposed to be used when there’s something to be improved on the map, but the person can not do that for some reason - maybe no time to survey it right now, or maybe it’s an external visitor who does not have the knowledge to contribute the fix directly.

Existing notes can be commented on and eventually resolved by contributors. A note with comments Often a contributor might want to place notes on their GPS device or phone to go and survey the reported fix/change, but the OSM Notes API returns a GPX file that is not very suitable for that - it has a CDATA section, some tags and ends up being very hard to use - or on some devices, the actual note text ends up being trimmed.

Getting notes that way isn’t very easy either, because one has to construct a URL, and, in the case of bounding box… ugh. Which field goes where, that’s something I always have trouble with. There’s a feature request to allow exporting note GPX from the main OSM site, but that requires some effort and has not happened yet.

Existing tools to retrieve them

Let’s turn to external tools. There was a great tool by SomeoneElse Notes01, but it was written in Java. While Java is the king for enterprise systems, it seemed a bit of an overkill for OSM note downloading and compiling it (following latest-latest is important in open source :) ) did not seem that appealing either.

Well, all that, plus a small interest in playing with Perl - I have no coding skills, but expanding past shell scripting has been on my todo list for a while.

Introducing osmnotes

So enter “osmnotes”. My first thing from the scratch in Perl, so probably awful - feedback highly, highly welcome.

It allows to:

  • retrieve notes by note ID (just copy it from
  • retrieve notes by bounding box (ugh, lat/lon/what…)
  • retrieve notes by specifying corners as URLs
  • retrieve notes for a pre-defined region

The first two are probably self-explanatory. Getting by note ID:

perl --noteid 13,14
perl --noteid 13 --noteid 14

Getting by bbox:

perl --bbox 23.9131,56.8792,24.3938,57.0995

What’s more interesting and maybe easier to use - getting by corners and regions. “Corners” means top left and bottom right - and you can just go to, position the map and copy the URL for both. For more precise positioning use the sharing with a marker. An example invocation:

perl --topleft "" \
--bottomright ""

And what if there’s a region you would like to reuse? That can be saved in a JSON file. Once done so, it can be reused like this:

perl --region latvia:riga
perl --region latvia

You can combine node IDs, bboxes, regions, corners… it will just go and download it all. You should still take care of overlapping bboxes, duplicate notes are not handled in any way for now.

So, um, here’s the github project and you are welcome to try it out and provide any and all feedback :)

Comment from marczoutendijk on 25 September 2015 at 09:10

Nice idea with some helpfull extra’s, but you probably should also have a look at Pascal Neis’ site:

Which has many options to retrieve notes on a per country basis (as a RSS feed!) and to select between notes that have a comment and notes that don’t.

I use this tool daily to check for notes in my country (which is small).


Comment from richlv on 25 September 2015 at 09:18

thanks, i was aware of the note feeds and was following them myself - but i don’t think they allow saving notes to gpx for usage on a gps, do they ?

Comment from marczoutendijk on 1 October 2015 at 09:20

No indeed, that’s not possible. But I always carry my tablet with me when I’m fixing those notes, reading the notes on the spot self - from my screen. Which give me also the oppurtunity to fix them right away. Of course for complex edits that is not the best solution, given the limitation of mobile editiors, but changing names, adding tags etc. is easy to do with GoMap

But there is definitely a use for your tool! Nicely done!

Login to leave a comment