OpenStreetMap標誌 OpenStreetMap

A Local Mappers API

於 2 五月 2019 由 mvexelEnglish發表。

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!

電郵圖示 Bluesky圖示 Facebook圖示 LinkedIn圖示 Mastodon圖示 Telegram圖示 X圖示

討論

valerietheblonde2019年5月3日01:49發表的評論

Nice work.

Glassman2019年5月3日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….

Mateusz Konieczny2019年5月3日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.

mvexel2019年5月3日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.

GOwin2019年5月3日05:17發表的評論

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

bryceco2019年5月3日05:21發表的評論

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

pangoSE2019年5月3日06:31發表的評論

Thanks for sharing and working on this!

amapanda ᚛ᚐᚋᚐᚅᚇᚐ᚜ 🏳️‍⚧️2019年5月3日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.

istvanv_telenav2019年5月3日10:33發表的評論

nice little flask app, good job

Zverik2019年5月3日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?

mvexel2019年5月3日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!

mvexel2019年5月3日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

tordans2019年5月4日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.

登入以留言