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
See
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.
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: