Email or username:

Password:

Forgot your password?
Top-level
Ilya Zverev

My previous map editor was... a messenger bot! I made it for finding local shops and businesses, because we had like half a thousand. And OSM didn't have that much, neither it had photos, so I made my own database and my own data collection pipeline — right inside the Telegram messenger! No interactive maps or geolocation, but surveying was fast and enjoyable.

I left Belarus many years ago, so alas it's not updated. But without it, there would be no Every Door.

github.com/Zverik/bot_na_rayon

Three screenshots of the telegram bot. First shows an address and suggests sending an apt number or listing shops in the buildind. Second shows a map with cafes and a numbered list. Third one shows information for Jazz Coffee with buttons for editing.
108 comments
Ilya Zverev

My focus on ground surveying started basically when I joined OSM. Among my first wiki pages was "Solo Mapping Party": thoroughly documented experience of drawing and filling in map sheets.

wiki.openstreetmap.org/wiki/RU

Seven years later I made a QGIS plugin for automatically forming walking papers of any area, with special care for mapping parties and making the map as big as possible.

openstreetmap.org/user/Zverik/

It resulted in my first pull-request to QGIS 3 — alas still not supported by the plugin.

My focus on ground surveying started basically when I joined OSM. Among my first wiki pages was "Solo Mapping Party": thoroughly documented experience of drawing and filling in map sheets.

wiki.openstreetmap.org/wiki/RU

Screenshot of QGIS 2.18 with an OSM map. A button for the walking papers plugin is pressed, and four menu items are visible: "Download OSM Data", "Open OSM Data", "Create Pie Layers", and "Prepare Atlas".
Ilya Zverev

Surveying from a car passenger seat is something people rarely do. They prefer to, idk, make photos for Mapillary and call this mapping.

Precise surveying from a car is virtually impossible: when moving at 90 kph, each second you move by 25 m, which is like a bridge length.

So in 2012 I developed a tool that saved the exact time you pressed a shortcut. I also made a JOSM plugin to precisely align the measurements with the imagery.

wiki.openstreetmap.org/wiki/Na

Found ten logs, but no OSM uploads.

Surveying from a car passenger seat is something people rarely do. They prefer to, idk, make photos for Mapillary and call this mapping.

Precise surveying from a car is virtually impossible: when moving at 90 kph, each second you move by 25 m, which is like a bridge length.

So in 2012 I developed a tool that saved the exact time you pressed a shortcut. I also made a JOSM plugin to precisely align the measurements with the imagery.

A screenshot of "NanoLog" program. There is a list of events starting with "let's assume we're driving and there's a milestone". And a list of keyboard shortcuts, like "F1: edge of a bridge; F2: town border; F4: Speed limit 40 kph". All timestamps have 1/100 of a second precision.
Luc

@zverik the biggest problem with highway mapping (since you mention 90 km/h) is interpolation for me: the GPS just doesn't update frequently enough to place the exact point where this emergency phone or camera exists

Does the JOSM plugin do that when you import the gpx track and timestamp?

Ilya Zverev

@luc You noticed the problem exactly: GPS often logs points just once a second. That's why NanoLog makes a separate list of timestamps. When paired with a GPS track, you use that only as a line with a few fixed points.

But NanoLog points, you can move back and forth with a centimeter precision, using visible bridges and road markings for georeferencing.

I frankly don't remember the state of the plugin. I think I got it to move the points, liked what I saw, and jumped to another project :)

Ilya Zverev

Speaking of JOSM plugins, I've made a few.

This is Relation Toolbox. It reverses how we work with relations: instead of editing relations themselves, we edit an object's membership.

With it, you choose a relation, and then click on nodes and ways (and other relations) to add or remove them from the chosen one.

It also introduced automatic multipolygon construction and de-construction.

wiki.openstreetmap.org/wiki/JO

Fun fact: my first ever SotM talk (in 2011) was on this plugin.

Speaking of JOSM plugins, I've made a few.

This is Relation Toolbox. It reverses how we work with relations: instead of editing relations themselves, we edit an object's membership.

With it, you choose a relation, and then click on nodes and ways (and other relations) to add or remove them from the chosen one.

Screenshot of the "Relation Toolbox" panel from JOSM. It shows six relations (restriction, route, disused:route). One is highlighted in yellow. There are "new", "multi", and "find" buttons.
Ilya Zverev

You know how most imagery is offset, and you need to align it with GPS traces and other stuff before mapping? No? Haha.

My another project from that time was the Imagery Offset Database. A huge list of reference points than helps align imagery automatically. Complete with a JOSM plugin and tons of documentation. Turned eleven last month, still very active.

offsets.textual.ru/

iD editor was written by americans with perfect imagery, so it still doesn't support it:

github.com/openstreetmap/iD/is

You know how most imagery is offset, and you need to align it with GPS traces and other stuff before mapping? No? Haha.

My another project from that time was the Imagery Offset Database. A huge list of reference points than helps align imagery automatically. Complete with a JOSM plugin and tons of documentation. Turned eleven last month, still very active.

A screenshot of Imagery Offset plugin that shows a single stored offset of 18 meters. It was created by me in 2013, and calculated 1.1 km away from the screen center. There are also checkboxes for "Calibration geometries" and "Deprecated offsets".
Ilya Zverev

The key to IODb's usefulness is collaboration: by using the stored offsets, you indirectly interact with other mappers to share the work.

Direct interaction was made possible with the GeoChat JOSM plugin. You see somebody having the same area open in JOSM — you say hi. Also helps avoid conflicts.

The protocol and the server are very simple (and hosted on OSM dev instance), I'm suprised it still works. Maybe somebody should remake it for modern age and mobile editors...

wiki.openstreetmap.org/wiki/JO

The key to IODb's usefulness is collaboration: by using the stored offsets, you indirectly interact with other mappers to share the work.

Direct interaction was made possible with the GeoChat JOSM plugin. You see somebody having the same area open in JOSM — you say hi. Also helps avoid conflicts.

The protocol and the server are very simple (and hosted on OSM dev instance), I'm suprised it still works. Maybe somebody should remake it for modern age and mobile editors...

GeoChat plugin panel in JOSM. There are two tabs: "Public" and "Debug_Man". A short interaction is visible:

Users mapping nearby: Alexandr_Zeinalov
[10:34] Zverik: This is a test
User Debug_Man is mapping nearby
[10:35] Debug_Man: Zverik: hi!
[10:35] Debug_Man: how're you?
Ilya Zverev

How much do you like mapping? Do you map every day? Do you WANT to map every day?

Inspired by other streak-tracking tools, from Pascal's HDYC to github, I have made a simple game: submit a changeset every day, and gain points. A bonus point if you do the task.

streak.osmz.ru/

The healthy thing would be to reach several hundred points and drop this. Please make breaks in your mapping! Tomorrow I'll show you how I did it.

Screenshot of OSM Streak. User Zverik is logged in and has 504 points (four stars). His task is to map a farmland. He has one changeset made today, he's updated a supermarket. He has 16 hours to submit a changeset.
Ilya Zverev

After two years of mapping, I noticed how OSM took over the major part of my life. So I've turned to programming, because technical solutions are the best, I mean, easiest.

"No more mapping" JOSM plugin, once installed, prevents JOSM from launching. Given at the moment the only alternative was Potlatch 2, which was sub-par for JOSM fans, it essentially blocked all mapping.

A few days later other developers deleted the plugin and its source code from the JOSM repository. Still remember that.

JOSM plugins list with a single plugin filtered: no_more_mapping. Description reads, "Disallow using JOSM forever (WARNING: this plugin prevents JOSM from loading and is hard to rid of)".
DELETED replied to Ilya
Ilya Zverev replied to DELETED

@1363487 hahaha right :) Alas JOSM development model requires core devs to update all the plugins after API changes, and this plugin was excluded from the updates, so now it just throws exceptions instead of shutting down JOSM.

Ilya Zverev replied to Ilya

So, back to editors, I guess. I wrote quite a few. Before Every Door, the most known was the low-level one. I didn't think of a name for too long.

Level0's main invention was not a user interface, but a user-editable representation of OSM XML. With it, it's pretty easy to edit tags, move or add POI, or even edit line geometries. All while feeling like a hacker.

wiki.openstreetmap.org/wiki/Le

It was obviously inspired by the french RawEditor, for which I even made a wrapper first.

Level0 screenshot from OSM Wiki. Some objects from a latvian city are downloaded, and there is a ton of buttons.
Amᵃᵖanda | OSM Witch 🧙🏻‍♀️ replied to Ilya

@zverik Level0 was a great, easy way for sites (like townlands.ie) to do simple “imports”/“mechanical edits”. I had the tags (in level0 format) which people could add to objects & a link to level0 edit URL. Mappers could open in new tab and paste the tags. Done. Edits in a few clicks.

Certain versions of this could be done with @MapRoulette now, I suppose. But level0 formatted tags & a URL is much faster to get working.

mtmail replied to Ilya

@zverik I still use it regularly. ♥️ addr:postcode and addr:city mixed up on 50 buildings? I query overpass for a list of ids, query level0 with those, search&replace, then upload again. Or easy to remove a member from a relation.

Ilya Zverev replied to Ilya

Copy-pasting an URL into Level0 just to edit tags was too much work, so recently I've made it into a browser plugin.

wiki.openstreetmap.org/wiki/Op

Really simple and obvious stuff: see a tag error? Click "Edit tags" and fix it. No need to go anywhere or deal with the javascript-heavy iD.

Inside it's a bunch of weird hacks. I'm still surprised that in two years nobody has tried to integrate it into the website itself. Like, whom are we making that website for?

github.com/openstreetmap/opens

Copy-pasting an URL into Level0 just to edit tags was too much work, so recently I've made it into a browser plugin.

wiki.openstreetmap.org/wiki/Op

Really simple and obvious stuff: see a tag error? Click "Edit tags" and fix it. No need to go anywhere or deal with the javascript-heavy iD.

Screenshot of osm.org website with a tags editing panel. Editing "Way: Veskitammi Selver ABC", there is a long list of tags in the form "key = value", and save/cancel buttons. On the map to the right the selected building is visible.
TheStroyer replied to Ilya

@zverik it's unfortunate that there is so little improvement of the interface of the official OSM website. It seems to be stagnant. Is there no one who want to work on it?

Caleb Maclennan replied to Ilya

@zverik A tag editor should absolutely just come baked in to the #OSM site out of the box.

Ilya Zverev replied to Ilya

So this reminds me, right around the Level0 I also finished the project I spent three months on, day to day. It introduced maps to multiple forum engines.

MapBBCode is primarily a way to mark a map data in bbcode, which is text. The hard thing was to make a series of libraries and plugins and modules to integrate it and Leaflet into engines like phpBB and FudForum.

mapbbcode.org/

And then it turned out, finding people to share supporting would be much harder.

An interactive map with a route from Saint-Petersburg to Tallinn via Border control rendered from the bbcode displayed below. It reads [map]coordinate(S); other coordinates and annotations[/map]. There are two buttons: "Update" and "Edit".
Ilya Zverev replied to Ilya

The last editor I wanna mention is Maps.Me editor. I didn't make it all by myself, obviously, we had a brilliant team, and I just helped from sidelines.

It brought a hundred thousand new mappers to OpenStreetMap, although few of them stayed. In my few talks on this I argued it was the future of contributing: millions who don't care about the map, but bring the data.

Maps.Me got bought out, so now I recommend its fork, @organicmaps (pictured). Amazing how they still keep going. Support them.

Organic Maps place editor screenshot. Visible is a card for "Tchaikovsky" restaurant. There are names in Estonian and English, address editor ("Vene 9"), business hours field with a button to edit those, and a cuisines list.
Ilya Zverev replied to Ilya

To monitor what people were actually editing with Maps.Me, I made a tracker: MMWatch. Alas there are no living instances of it now.

The idea was to make a feed that you could easily assess with your eyes. No changesets, lots of filters, all the information presented. Basically that what I expect of modern change monitoring tools, but oh well. "Show Me The Way" did it best.

Here you could also mark suspicious edits and revert them with a button. Reverters are kind of editors too.

MMWatch screenshot, titled "OSM Edits Made With MAPS.ME". It shows several panel with statistics: "General" (total: 323123), "Top Users", "Edited Countries" (with Russia, Ukraine, and Germany leading), "Top Main Tags" (building=yes), and "Versions" (android leading). It also shows four changed objects with their tags. There are some service buttons for each change: links to changesets and users, and buttons for JOSM and Level0.
Ian Dees replied to Ilya

@zverik I was just thinking about Show Me The Way ... how could I make it better? feels like it could use a refresh now that there are so many more edits happening than when it was created ~10 years ago

Ilya Zverev replied to Ian

@ian Frankly I mostly used is as a screensaver. In that regard, it would help to better randomize edits, e.g. skip consequtive edits from the same user. When you observe for minutes how somebody maps buildings in one village, it becomes stale.

There could be a brand new project for a "starship console", the same but with walls of relevant text, and maybe better grouping, so you could see a changeset in total.

Maybe with options to focus on action, and alerts when something suspicious happens.

Ian Dees replied to Ilya

@zverik yea I was thinking about an option to put all the changes on a slowly spinning globe rather than focusing on individual changes. Maybe highlighting spots with more changes than normal? 🤔

Ilya Zverev replied to Ian

@ian Depends on the "why". For a screensaver, its value is in showing the diversity of mapping, imo. Hense the density is a downside.

For a monitoring tool, I'd first go in the way of filtering changes. Both conventional (e.g. area) and not (e.g. imports, weird buildings and roads, updates to old objects). Since it uses changes, not changesets, it could have some interesting options.

Ilya Zverev replied to Ilya

Reverting a change has been as important task in OSM as it is impossible. With geodata, there are just too many edge cases. And OSM, unlike Wikipedia, is not a set of objects which you can process independently, it is one big ball of wibbly-wobbly nodely-wayly stuff.

So I thought it might be fun to write a proper 3-way reverter myself:

github.com/Zverik/simple-rever

It doesn't get too deep in algorithms, hence it can reject a changeset, but if it works, it works 100% without conflicts.

Ilya Zverev replied to Ilya

And if doing "pip install" is too much work, there is a web version of that, ready for your changeset lists:

revert.osmz.ru/

Of course it's limited, since I don't want to overload mine or API servers.

Kamil Monicz (NorthCrab) recently published his own take on such reverter, but the usage of Google's text processing library leads to weird unreported issues when reverting geometry modifications. So be careful:

wiki.openstreetmap.org/wiki/Os

Screenshot of Revert UI. There is a box for changesets (has four big numbers filled in), a comment ("need those benches back"), and one button, "Revert these". There is also a link to a queue, and a short description text.
Ilya Zverev replied to Ilya

After OWL (look it up) died, we were left without map monitoring tools. So I wrote a backend in Perl, learnt OpenLayers and made this website.

WhoDidIt tracks node edits and groups them into small rectangles, so you can see where people changed geometries, and could subscribe to an area.

My instance did non survive the https, but thankfully Simon made a fork. Alas I can't get it to work either:

simon04.dev.openstreetmap.org/

It's definitely old, OSMCha covers all that better. But it was pretty.

After OWL (look it up) died, we were left without map monitoring tools. So I wrote a backend in Perl, learnt OpenLayers and made this website.

WhoDidIt tracks node edits and groups them into small rectangles, so you can see where people changed geometries, and could subscribe to an area.

My instance did non survive the https, but thankfully Simon made a fork. Alas I can't get it to work either:

Screenshot of WhoDidIt, taken from the Pic of the Day OSM wiki page. Shows a map with multiple colored rectangles, and some filtering buttons. There is a popup open, which shows two changesets and their node and way counts.
Ilya Zverev replied to Ilya

For a possible new version that also accounted for ways and relations, I first looked at augmented diffs. But every time I try to use them, I regret it.

So I started writing "changechange": a script that keeps track of references and enriches official osmChange files with geometries and references.

github.com/Zverik/changechange

It would not lead to 100 MB minutely diffs, like in Overpass, but enough to keep track of changes and maintain filtered extracts.

Didn't have resources to finish though.

For a possible new version that also accounted for ways and relations, I first looked at augmented diffs. But every time I try to use them, I regret it.

So I started writing "changechange": a script that keeps track of references and enriches official osmChange files with geometries and references.

github.com/Zverik/changechange

Ilya Zverev replied to Ilya

Regarding mapping statistics, we are still down to counting nodes and ways. For a mapping party in 2021 I spent three weeks experimenting with something better.

OSM Changes Counter is not well documented, but can count changes to objects of a given type, split them by city, apply weights (e.g. tagged node is worth more than a road way).

It also correctly counts roads splits and merges to output results in km — I think it's the only tool in all OSM that does that.

github.com/Zverik/osm-changes-

Regarding mapping statistics, we are still down to counting nodes and ways. For a mapping party in 2021 I spent three weeks experimenting with something better.

OSM Changes Counter is not well documented, but can count changes to objects of a given type, split them by city, apply weights (e.g. tagged node is worth more than a road way).

Ilya Zverev replied to Ilya

This one is not about OSM, but might be interesting to railway enthusiasts like me :)

GeoAlbum is a photo album with geospatial context. The script was inspired by @tmcw 's Big: keyboard navigation, data in html tags. You make an html page, include the library file, and it turns into an interactive album with numbered photos and additional layers.

github.com/zverik/geoalbum

I used it to share photos from a railway construction site along three years:

textual.ru/lk120430/

GeoAlbum screenshot, railway construction from 2014. First photo A: "Glaring nothing in 2012, concrete viaduct to nowhere in 2013, turned out almost ready: a steamroller was levelling sand embankments." Second photo B: "Here is the service road we took". To the right there are two maps: an overview with numbered photo spots, and the detail map with lettered photo locations.
Ilya Zverev replied to Ilya

In 2020 the @sotm was held online for doomsday reasons. I usually help with fun things at these conferences, so for 2020 I made an @openstreetmap quiz. Having tried it now, I'd say I made it a bit harder than I should have.

zverik.github.io/sotm2020-quiz

Being a fan of data structures, I of course made it a quiz framework, but unlike GeoAlbum, this repo got zero forks. Probably because I didn't share it much.

Today is the last day to submit your talk for @sotm 2024 btw!

2024.stateofthemap.org/calls/g

In 2020 the @sotm was held online for doomsday reasons. I usually help with fun things at these conferences, so for 2020 I made an @openstreetmap quiz. Having tried it now, I'd say I made it a bit harder than I should have.

zverik.github.io/sotm2020-quiz

Being a fan of data structures, I of course made it a quiz framework, but unlike GeoAlbum, this repo got zero forks. Probably because I didn't share it much.

Ilya Zverev replied to Ilya

I dabbled in creating map styles like ten years ago, with Mapnik and TileMill. For our local cycling community I made a style that looks excellent printed in black&white, on which we could overlay routes. It was called like the community: "Veloroad".

Trained eye could notice multiple things on it that even modern styles don't do: look at road and river names, station symbols, place visibility.

There is a working tile server, but super slow. Probably gonna take it down.

osmz.ru/veloroad.html#7/58.374

I dabbled in creating map styles like ten years ago, with Mapnik and TileMill. For our local cycling community I made a style that looks excellent printed in black&white, on which we could overlay routes. It was called like the community: "Veloroad".

Trained eye could notice multiple things on it that even modern styles don't do: look at road and river names, station symbols, place visibility.

Veloroad map style, centered on Viljandi, Estonia, zoom ~12. Visible are black and grey lines for roads, road and lake names, a railway in the style of soviet military maps. Some labels are in Russian.
Ilya Zverev replied to Ilya

Obviously running command-line tools to produce a map is not ideal for non-GIS people. So I also made a web UI to prepare route maps.

You just upload a GPX trace, adjust the printing bounds, add a scale bar if needed, and download a PDF. Another online tool would merge several PDFs into a booklet.

It's actually a set of tools underneath, some fix mapnik's SVG issues, some preprocess the values. I know of at least one business spawned from this (not mine obviously).

Screenshot of "Get Veloroad" page. To the right is a map with a blue bounding box. To the left, a set of settings for a printed maps. These include paper format, bounding box adjustment, trace file upload, scale bar, map style, and an output image format.
TheStroyer replied to Ilya

@zverik would you have preferred it would be your own company to make a product out of it? Or do you want to have a different company based on OSM?

Ilya Zverev replied to TheStroyer

@TheStroyer I don't want to run a company based on a single product, because I don't have an attention span and management skills for that :) I'm pretty fine with my tools used for business, and with this one, I helped set them up actually.

TheStroyer replied to Ilya

@zverik ah yes short attention span. That's why you have so many different projects 😂
But seriously, manh of these projects are really great. They just needs l have started just one project in OSM. And it's probably less complex than many of your projects

Ilya Zverev replied to Ilya

Ten years ago everybody made maps with Mapnik. There were several scripts that simplified the task, but all had issues. So I wrote another.

Nik4 makes preparing a map image easy. No calculations needed, just choose an area, put physical or pixel dimensions, and you got the exact map you expected.

github.com/Zverik/Nik4

There were many little features inside that removed hassles. Like partial rendering, scale factors, ppi and route fitting. And fixing cairo's SVG output.

Ilya Zverev replied to Ilya

Of course another question that was heard from every business, "how do we get the tiles". Mapnik had a sample python script packaged, but it was slow and hard to use. I'm pretty good at APIs, so I made my own.

Polytiles can render regular raster tiles for a given bbox in multiple threads. Obviously. It also can use a polygon file or a relation from OSM, it can render retina tiles, generate an mbtiles file, or just produce multiple lists for other tools.

github.com/Zverik/polytiles

Ilya Zverev replied to Ilya

Obviously setting up Mapnik locally is hard, and people wanted to download OSM tiles with a proper UI.

In 2011 I took over the development of JTileDownloader, which does exactly that. Bulk downloading was frowned upon even then. I tried to ease the load: imposed a 5 tiles/sec limit and altered downloading order to meta-tiles (8x8 tile packs).

wiki.openstreetmap.org/wiki/JT

Still, @osm_tech don't care, JTD was banned by user-agent, and people returned to anonymous bulk downloaders with no safeguards.

Obviously setting up Mapnik locally is hard, and people wanted to download OSM tiles with a proper UI.

In 2011 I took over the development of JTileDownloader, which does exactly that. Bulk downloading was frowned upon even then. I tried to ease the load: imposed a 5 tiles/sec limit and altered downloading order to meta-tiles (8x8 tile packs).

JTileDownloader java app screenshot with two panels. To the left, a pane with dozens of options, including bounding boxes, GPX file, zoom levels, tile server, and a button to download tiles. To the right, a slippy map with a box over Lithuania selected.
Ilya Zverev replied to Ilya

And back to my projects from days back, that still operate. In the same trend, seeing something and improving on it, I took Frederik's BigMap and added an online tile-stitching service.

bigmap.osmz.ru/

The UI is the same, still bad, but it's the easiest way to get a raster map for an area. And also georeferencing files for OziExplorer or QGIS. Many people use it daily.

I see how it could be made better, faster and easier, but as always, not enough time. And no alternatives haha.

Screenshot of a map, on which is overlaid a block with many controls. It says "Map is 4x3 tiles (1024x768 px) at zoom 10, aspect 1.33:1" on top. There are three 4-directional buttons: Expand, Shift, and Shrink. And four options to zoom in or out. Below there are links to download georeferencing files, perl or python scripts, or put the job into a queue.
Rihards Olups replied to Ilya

@zverik Have used this one (grabbing the generated Perl script) - thank you for this tool :)

How is georeferencing done?

Fla replied to Ilya

@zverik @organicmaps OrganicMaps makes it easy to *add* a place, but I never found how to *edit* one.

Organic Maps replied to Fla

@fla @zverik select a place and press Edit Place button at the bottom. Just make sure you have the latest maps data.

Fla replied to Organic

@organicmaps @zverik

I dont have any Edit button. I am correctly logged in my OSM account. My build is 2024.03.31-8-FDroid but it was also the case with all the previous version.

Mikkel Roald-Arbøl replied to Organic

@organicmaps @fla @zverik I also don’t have an Edit button on iOS. On the newest Testflight version 2024.03.31 (7).

Ilya Zverev replied to Mikkel

@roaldarboel @organicmaps @fla Edit button is not shown if maps are older than three months. Could you plz check that your maps are updated?

Fla replied to Ilya

@zverik @roaldarboel @organicmaps

Ah, indeed, that's the reason! Well, would have been better to still display the button but then explaining that maps have to be updated first.

Go Up