Email or username:

Password:

Forgot your password?
Top-level
Ilya Zverev

Having a GeoJSON to preview an import is good, but how to suggest amendments?

That's why I made CF Audit: an interactive website to go through changes one by one, cross-reference them, and fix anything wrong.

Those fixes are kept for consequent imports with OSM Conflator, so less work next time.

audit.osmz.ru/

I know RocketData iterated on it for their operations, and there's a new IFS fork by @sfkeller team: cfauditgui.geoh.infs.ch/

CF Audit screenshot. There are two maps to the right: OSM and Satellite, with markers for a location of a fuel station being imported. The text on the left says, "Update tags on a point. You can move the marker to a better location. Imagery may be misaligned.". Some tags are available for modification (e.g. brand and opening_hours), and there are three buttons: "Good", "Don't Change", and "Skip".
18 comments
Ilya Zverev replied to Ilya

So I got the conflator, and I got the audit tool, and the entire pipeline as shown on the picture. Did I use it?

Oh did I even. 5k Walmart supermarkets, tens of thousands Shell fuel stations, ~10k addresses in Moscow, various restaurant and shop chains... It all worked perfectly.

Of course it was just a few imports. I envisioned an automated system for high volume of data, still controllable by OSMers, but nobody asked for that, and I didn't have time.

Still, mentioned it at SotM EU 2023.

A chart. External Dataset → Profile → OSM Conflator → Changet GeoJSON → cf_audit browse → cf_audit validate → Audit JSON → OSM Conflator (+Overpass API) → JOSM XML → JOSM → OSM.
Ilya Zverev replied to Ilya

OSM Cards is a postcrossing thing for OpenStreetMap members. You get a person's postal address, write them a few encouraging words on a postcard and add a 5-letter code. When received, they type those letters in a form, and the connection is set up.

I announced this website at SotM 2020 and got a few beautiful cards. I lived in Minsk back then and printed like 50 postcards with the city map to send out — and now idk what to do with them :)

Send me one if you like: osmcards.org/profile/bqh2on123

OSM Cards is a postcrossing thing for OpenStreetMap members. You get a person's postal address, write them a few encouraging words on a postcard and add a 5-letter code. When received, they type those letters in a form, and the connection is set up.

I announced this website at SotM 2020 and got a few beautiful cards. I lived in Minsk back then and printed like 50 postcards with the city map to send out — and now idk what to do with them :)

Amateur radio card with id "uz9osm".
Ilya Zverev replied to Ilya

You know OpenWhateverMap.

openwhatevermap.xyz/

Grant made the original version, then we lost the domain, and then I updated it with modern tiles and some interactivity: clicking on a tile reveals its name and URL.

Map of Lodz, Poland (where SotM EU 2024 is held). Every rectangular tile is in different style.
David replied to Ilya

Very cool, I'm just missing #openseamap

Ilya Zverev replied to Ilya

For the @sotm in Firenze I went all-out with the remote participation part. One thing I did was a Telegram bot, where people from anywhere could introduce themselves.

The idea was to put a face to hundreds of names on online channels. Because once you have a face and a voice attaches to words, it's impossible not to feel a proper conversation going when you type.

Not many people contributed, but still, was fun. The bot was disabled after the conference ended of course.

Screenshot of a telegram bot, "SotM People". I sent "/random", and it replied with a video of Gregory Marler introducing himself. The video is 17 seconds long.
Ilya Zverev replied to Ilya

I feel like I've invented another job for myself, posting those tweets regularly. Let's do a few small things now.

Like, I love doing efficient focused tooling. GeoJSON Point Editor, while not entirely related to OSM, is exactly that. Faced with making a GeoJSON for ~100 point amenities, geojson.io was frustrating to use.

So I made this. Double click for a new point, type some words for properties (in a already focused field!), filter by keys, download the result.

zverik.github.io/point_ed/

I feel like I've invented another job for myself, posting those tweets regularly. Let's do a few small things now.

Like, I love doing efficient focused tooling. GeoJSON Point Editor, while not entirely related to OSM, is exactly that. Faced with making a GeoJSON for ~100 point amenities, geojson.io was frustrating to use.

Screenshot of GeoJSON Point Editor. The left panel has those words: "Double-click on the map or click here (button) to add a point. Download the result (link) or download filtered (link). Filter: (field)." To the right is a map with dozens of small markers. Near one is a label: "Kotelsky".
Ilya Zverev replied to Ilya

Another one I made for my last job, and it's for annotating GeoJSON geometries: "Geometry Review".

You load a set of geometries to compare into it, and it shows a bunch of buttons for each set: "OK", "Bad" etc, your choice.

No extra clicking or studying required, you glance at the map, press a 1/2/3 key, see the next item. And export the result in the end.

Used this tool to annotate hundreds of routes and review predictions.

github.com/Zverik/geometry_rev

Geo is easy until you see it on the map.

Another one I made for my last job, and it's for annotating GeoJSON geometries: "Geometry Review".

You load a set of geometries to compare into it, and it shows a bunch of buttons for each set: "OK", "Bad" etc, your choice.

No extra clicking or studying required, you glance at the map, press a 1/2/3 key, see the next item. And export the result in the end.

Screenshot of Geometry Review. There is a big map with blue and black lines. On the top there are buttons: "Previous", "Next", "Good 9", "Broken 4", "Bad 1". And title: "Order (long string): raw 1398 m, snapped 974 m (70%).". On the right sidebar is a list of route ids grouped into "Bad", "Broken", and "Good" sections, and two buttons: "Copy to clipboard" and "Download".
Another screenshot. There is a map with three markers: blue "2" and black "1" and "2". For black "1", a popup is shown with "car_id", "distance_m", and "duration_sec". On the top there are multiple buttons: "previous", "next", "good", and "bad".
Ilya Zverev replied to Ilya

For a very long time the leading repository on my github was "leaflet-grayscale" with a hundred stars.

I love @leaflet and made too many plugins for it. This one was quite simple — but I guess useful enough.

It just makes the map grayscale.

There are too few layers fit for a visualization background. Sometimes removing colors (and labels if possible) is good enough.

github.com/Zverik/leaflet-gray

Grayscale map from around Chernivtsi, Ukraine
watmildon replied to Ilya

@zverik @leaflet Yes! TIGERMap uses greyscale carto. Thankfully maplibre has a color saturation setting!

Robin Wilson replied to Ilya

@zverik @leaflet leaflet-grayscale is great and I use it a lot, thanks for making it!

Ilya Zverev replied to Ilya

Back to OSM, here's one you'd ban if you could.

Sisyphus make a person's mapping work as pointless as rolling a stone up a mountain. It plain reverts every changeset a person uploads to OpenStreetMap.

We used it in Maps.Me for reverting edits of our QA team.

Not ideal, which Frederik noted, but it works, the map is clean, no hassle with moving data to the sandbox.

Uses simple_revert as a library, of course. That library is underrated.

github.com/Zverik/sisyphus

Ilya Zverev replied to Ilya

People usually need three things from maps: tiles, geocoding, and routing. Three things too mundane to work on.

For Maps.Me Changes Monitoring, I filtered edits by countries. For that I wrote a simple reverse geocoder: QueryAt.

It returns a country, a region, and a populated place for a given location. 3 GB database for the entire world, no configuration or query parameters.

Won't recommend using it now though: 8 years later, you could do better.

github.com/zverik/queryat

Ilya Zverev replied to Ilya

The recent discussion around "class:bicycle" tag reminded me of my "surface:grade" proposal — basically the same thing, but done 13 years earlier, with 25k usages as of now and no clear documentation.

wiki.openstreetmap.org/wiki/Pr

Basically it's a measure of surface quality relative to roads with that surface quality. Not all roads ever, like smoothness=*.

You see a perfect gravel road? surface:quality=3. You're on a technically asphalt road and moving 1 km/h wishing they left it unpaved? Zero.

The recent discussion around "class:bicycle" tag reminded me of my "surface:grade" proposal — basically the same thing, but done 13 years earlier, with 25k usages as of now and no clear documentation.

wiki.openstreetmap.org/wiki/Pr

Basically it's a measure of surface quality relative to roads with that surface quality. Not all roads ever, like smoothness=*.

Ilya Zverev replied to Ilya

Having tag proposals on this list feels like cheating — despite those take weeks to materialize, mostly because of research and writing and discussing in our Russian-speaking community.

For example, my turns lanes proposal took two weeks researching eight other proposals, charting examples, writing the proposal and FAQ.

wiki.openstreetmap.org/wiki/Pr

It failed because it was hard to understand, unlike the semantically weird but simple turn:lanes schema.

Mappers need simple, not consistent.

Having tag proposals on this list feels like cheating — despite those take weeks to materialize, mostly because of research and writing and discussing in our Russian-speaking community.

For example, my turns lanes proposal took two weeks researching eight other proposals, charting examples, writing the proposal and FAQ.

Ilya Zverev replied to Ilya

When I set out to write a reverse geocoder, I had a very narrow scope in mind: basically the east coast of the US. But the longer you study something, the more edge cases you find. Got a few talks out of it:

youtube.com/watch?v=sjE6xy0BBg

Juno Reverse Geocoder is covered in tests no other geocoder would pass, and is built on SQL. I bragged that it was faster than Nominatim, but recently I've tested it and it's like 8 times slower. Still, worked fine for our company.

github.com/gojuno/jrg

When I set out to write a reverse geocoder, I had a very narrow scope in mind: basically the east coast of the US. But the longer you study something, the more edge cases you find. Got a few talks out of it:

youtube.com/watch?v=sjE6xy0BBg

Juno Reverse Geocoder is covered in tests no other geocoder would pass, and is built on SQL. I bragged that it was faster than Nominatim, but recently I've tested it and it's like 8 times slower. Still, worked fine for our company.

SK53 replied to Ilya

@zverik sounds a bit like user GeneralDreedle, although that account automatically everted edits by fantasy mappers

Go Up