OpenStreetMap logo OpenStreetMap

A Local Mappers API

Posted by mvexel on 2 May 2019 in English.

There’s been countless times where I was mapping someplace far away, and I’ve wanted to ask a local mapper for advice or help.

There’s not many ways to do that effectively, or easily.

An obvious thing to do is to leave a note either on the feature I have a question about or as a map note. Then hope that someone local reads notes. Or you can find local mappers through the Neis ‘Who’s around me?’ tool, but I find that it turns up a lot of stale mappers (who are not active anymore.) Also the tool is not open source, and you can’t integrate it with other things.

I don’t find either of those options very satisfying.

So perhaps we could have an API that queries for local mappers in a radius.

That begs the question what a local mapper is, in technical, queryable terms. A simple approach would be to look at changesets that have a fairly small bounding box, are close to the point you are interested in, and not too old. Group those by mapper, and that will give you a reasonable proxy for ‘local mappers near a point’.

I whipped up a proof of concept API that does just that.

Here’s a request that fetches local mappers near the center of Münster, Germany:

http://localhost:5000/mappersnearme?lat=51.9610&lon=7.6247

This returns, after some waiting, a list of mappers as JSON:

[
    [
        375,
        1760129,
        "lowlander"
    ],
    [
        100,
        8339,
        "mtmail"
    ],
    [
        78,
        423913,
        "alan1209"
    ],
...

Each record has the number of local changesets, the OSM user ID and username. The list is ordered by that last number so that the most active local mappers should appear at the top.

Here are the mappers at the top of the Münster local mappers list:

Looking at these mappers’ edits, they all seem to be mappers who may be able to answer a question about a local mapping issue. A promising result!

I’m sure there’s much to be improved on this idea, so please leave your comments or help make it into something practically usable.

Hat tip to ToeBee for ChangesetMD and mojodna for the SQL / PostgreSQL help!

Discussion

Comment from valerietheblonde on 3 May 2019 at 01:49

Nice work.

Comment from Glassman on 3 May 2019 at 02:08

How is this different from Pascal Neis’s Overview of OpenStreetMap Contributors aka Who’s around me?

I also have the problem of a large number of Amazon Logistics employees adding driveways and other road improvements working in my area. They could be filtered out by excluding their modified version of the iD editor. It shows up as iD 2.12.2.

Now we just need a way to send a message to a group of nearby mappers. Sigh….

Comment from Mateusz Konieczny on 3 May 2019 at 03:54

How is this different from Pascal Neis’s Overview of OpenStreetMap Contributors aka Who’s around me?

See

Or you can find local mappers through the Neis ‘Who’s around me?’ tool, but I find that it turns up a lot of stale mappers (who are not active anymore.)

apparently it filters out inactive mappers.

Comment from mvexel on 3 May 2019 at 04:18

I just wanted to demonstrate something useful that is a) easy to implement and b) there for anyone to improve upon. Mateusz pointed to one difference with the Neis tool, but perhaps someone who knows their secret sauce can weigh in.

Comment from GOwin on 3 May 2019 at 05:17

Nice one, Martijn! It would be lovely to connect this with the Notes, where local knowledge is quite helpful.

Comment from bryceco on 3 May 2019 at 05:21

If you’re using iOS you can get this information from Go Map!! under Settings - Nearby Mappers.

Comment from pangoSE on 3 May 2019 at 06:31

Thanks for sharing and working on this!

Comment from amapanda ᚛ᚐᚋᚐᚅᚇᚐ᚜ 🏳️‍🌈 on 3 May 2019 at 10:14

Nice! Related to this, I’ve sometimes hand processed planet OSM files to see who maps certain features. If you want to make tagging improvements it’s helpful to talk to people already mapping that type of thing.

Comment from istvanv_telenav on 3 May 2019 at 10:33

nice little flask app, good job

Comment from Zverik on 3 May 2019 at 11:59

From this post I’ve learnt about flask-restful and sourcehut, thanks :)

Are you moving all your future work to sr.ht? Are there downsides?

Comment from mvexel on 3 May 2019 at 13:25

@zverik sourcehut is something I’m trying out. It doesn’t have search so you have to know about a repo to discover it. It’s a paid service (optional right now) but it’s independent and open source. See https://lists.sr.ht/~sircmpwn/sr.ht-announce for project updates. I don’t know if I will put more projects on there.

Flask-restful is supported by some major company so it’s pretty well maintained unlike some other Flask extensions. And as you see it lets you stand up a prototype REST API very quickly. It wouldn’t be a huge leap to get it to production level.

@Rory I’d be interested in seeing some of your workflows. That sounds really interesting.

@Bryce I never noticed that feature! Awesome. It looks like this is only fellow GoMap edits?

@Istvan @pangoSE @GoWIN thanks!

Comment from mvexel on 3 May 2019 at 15:28

@Glassman someone was interested in reviving the groups branch..It’s very stale at this point so I don’t know how feasible it is. But it’s vaguely related to what you (and I) would love to be able to do.

The original idea for the branch was to have a lightweight implementation of opt-in groups. Anyone could form a group and ask people in or give them the URL to join. The group itself could consist of a variant of the user diaries page.

The big hurdle for building groups out beyond that is spam. It’s already such a big problem with the diaries. Ideally you’d be able to ‘invite’ people within a geographical scope (or local mappers through an API like this) to join, but how do you prevent folks from using it as a spam tool? A reputation API would be handy for that :D

Comment from tordans on 4 May 2019 at 09:21

@mvexel Thanks for this discussion, tool and writeup. I wonder if we are getting at this from the wrong side.

OSM already has plenty of tooling to ask for feedback by the local community. But we have next to no tooling to trigger notifications for those questions. As a result, most of the existing feedback goes unanswered.

Some examples:

Notes on the map

I write a note on the map somewhere. Right now no one will notice except by accident or some power user who actively look for it. So ATM, my node will likely be un answered for ages if ever.

What is missing? Notifications. Mappers that know the area where I placed the node should get a notification and be able to react to it.

There are several ways to solve this – one idea is below.

Fixme keys and changeset comments and changeset-review-requested-keys.

Same as notes above. I can write them, but no one will notice. We need tooling to get people to notice. Or to make it easier for people to discover them.

Once people discover those comments/questions/fixme s, the discussion part is already solved. Noted can be discussed. Changesets can be discussed. Both have at least some notifications (email) already.

So instead of looking for a way to contact “nearby mapper”, why not look for a way to make it easier for mappers to see what is discussed nearby?

Contacting nearby mapper has two disadvantages: It’s only 1on1. Or, if you add groups, it’s another layer of communication; which OSM already has too many of (telegram, mail, forum, changesets, nodes, 1on1).

Related: I wrote about this as a proposal for a GSOC project. The idea is buried in the changelog ATM, so I will copy it here for reference:

Subscribe to changes for a region I know well

Summary: Wikipedia has a simple but powerfull tool to increase the quality of a page: Whenever I edit it, I can also subscribe to changes. This way I can contribute to the quality of the article over time. It also helps against bad edits. (More https://de.wikipedia.org/wiki/Hilfe:Beobachtungsliste). — OSM does not have a well integrated solution for this usecase. Ideally, this tool where integrated tightly with the OSM website and iD Editor to allow a one click subscription to changes in the current region. The tool would send emails with a helpful summary of the change and encourage nice replies to changes (positive or contructive). The tool will continues to send emails until the user stops reacting to the emails (same as Wikipedia).

Notes: Related: The closes that OSM has to solve this, is OSMCha: You can create a filter for a region and subscribe it via RSS. However, both steps are quite complicated. And also, the RSS view and mobile view of OSMCha in general do not help a lot when reviewing those changes while on the go. See https://github.com/mapbox/osmcha-frontend/issues/345 for more.

Log in to leave a comment