Users' Diaries

Recent diary entries

Midterm is here, so this is a proper writeup of what’s landed so far, how the pieces fit together, and what the second half looks like. If you just want the code: everything described here merged in #4106.

Quick context for new readers: Nominatim identifies every place with a single class/type pair derived from OSM tags. An object tagged both tourism=hotel and amenity=restaurant becomes two rows in the database. Admin boundaries need admin_level special-casing everywhere. And there’s no way to express “wheelchair accessible cafe” at all. This project adds a proper category system to fix that at the database level.

Here’s the state of things at the halfway mark.

the data model: ltree[]

Categories are stored as an ltree[] column on place and placex, indexed with GiST. Each category is a dot-separated hierarchical path:

{osm.amenity.restaurant, osm.tourism.hotel}

I benchmarked this against TEXT[] with GIN during community bonding on a full planet import (~3 days to set up, worth it). The TEXT[] approach is what Photon effectively does at the OpenSearch level: pre-expand every prefix at index time (osm.amenity.restaurant also stores osm.amenity) and match with array overlap. It works, but you pay storage for every prefix of every category on every row, and the expansion logic lives in application code.

ltree understands hierarchy natively:


-- all amenities: restaurants, cafes, bars, everything below
WHERE categories @> 'osm.amenity'::ltree

-- exact match
WHERE 'osm.amenity.restaurant'::ltree = ANY(categories)

-- multi-value alternation (waterway checks)
WHERE categories ~ 'osm.waterway.river|stream|canal|drain|ditch'::lquery

Less storage, less code, and the query planner gets a real index to work with.

See full entry

Location: Action Area III, New Town, Kolkata Metropolitan Area, Rajarhat, North 24 Parganas, West Bengal, 700156, India

While field-testing an app I’m building for walking Public Rights of Way (MOROW), I found a real one. Chippenham parish path CHIP108, a legally recorded Byway Open to All Traffic, was mapped in OSM with highway=bridleway, ref=CHIP108, and a free-text note describing its BOAT status, but no designation= and no prow_ref=. Those are the two tags any PRoW-aware tool actually reads, so the path was rendering as an ordinary, unremarkable line. I fixed that one way directly (changeset 185555601), but the obvious next question was whether the same mistake, recording a council’s path reference under the generic ref= tag instead of prow_ref=, is a one-off or systematic.

Before building anything to find out, I went looking for prior art, and found it. Robert Whittaker’s UK PRoW toolkit (https://osm.mathmos.net/prow/) already does this properly, county by county, comparing OSM against official Definitive Map data and generating per-parish tagging-error reports with real way IDs ready to work through. For Wiltshire alone: 8,354 recorded rights of way, only 58% carrying designation=, only 24% carrying prow_ref=. That’s roughly 4,450 km of Wiltshire’s legal PRoW network without a prow_ref tag, a scale question the tool had already answered, far beyond anything I’d have worked out from scratch.

CHIP108 itself doesn’t appear on either of Wiltshire’s error lists, most likely because the detection starts from ways already carrying some PRoW tag and checks the other; CHIP108 had neither. I’ve asked on Robert’s forum thread (https://community.openstreetmap.org/t/roberts-openstreetmap- stuff-osm-mathmos-net/112981) whether that’s a known gap or something worth extending for.

Testing the fix workflow

See full entry

Like much of the web, OSM has been struggling with bots downloading rendered maps, in our case declining to use our planet dumps to get what they want.

I therefore make a suggestion: give suspected scrapers a poisoned version of the map, for instance it could have scrambled POIs, or perhaps roads named after villains. We can then point out the source of the resulting contamination as it goes public.

133500市区(人民大街邮政支局、同心路邮政支局、丰民路邮政支局、河西邮政支局、海兰邮政支局、春化邮政支局);龙城镇部分(牛心村、太平村、…)

133501东城镇全部

133502头道镇部分(原龙水镇的江南社区、龙海村、龙湖村、新民村、龙源村、龙水村)

133503头道镇部分(原头道镇的江北社区、延安村、明兴村、三河村、龙坪村、龙新村、广新村、新北村、镇兴村)

133504头道镇部分(原龙门乡的龙门村、青龙村、长仁村)

133505八家子镇全部

133506西城镇部分(原西城镇的新城社区、金达莱村、二道村、龙浦村、城南村)

133507西城镇部分(原卧龙乡的甲山村、卧龙村、和安村)

133508福洞镇全部

133509龙城镇部分(原土山镇的土山村、官地村、水南村、五明村、和兴村、源河村)

133510南坪镇部分(原勇化乡的高岭村、兴化村)

133511空

133512南坪镇部分(原德化镇的友谊社区、南坪村、龙渊村、柳洞村、车厂村、高产村)

133513南坪镇部分(原芦果镇的芦果村、龙坪);崇善镇部分(原芦果乡的竹林村、兴南、梨树、土城)

133514崇善镇部分(富民社区、大洞村、古城村、上天村)

133515龙城镇部分(工农村等)

For a while, the “Dienst Mobilteit van Antwerpen” (Department of Mobility of the Province of Antwerp) wanted to have (libre) streetview imagery, especially of the Belgian “cycle highways” - a type of cycling network in Belgium.

Mapillary and Panoramax are - of course - a part of their solution.

But how to actually take the pictures? It requires someone travelling along all the cycle paths.

This is where the “groendienst” (the department of Parks + greenery) comes in. They are cycling along all the cyclepaths, to make an inventory of all the invasive species. A special cargo bike is equiped with a special camera to scan the greenery and to automatically detect those invasive species.

The Mobility Department then asked to also install a GoPro on this cargo bike. And just like that, for practically no extra cost, they have streetview imagery!

You can see the cargo bike (parked in their parking garage) here

Singapore has about 2,300 playgrounds in OSM (leisure=playground), but no easy way for a parent to answer the practical question: is this one any good for my kid, today?

So I built PlaySG (https://playsg.sg): a free MapLibre GL map of every playground in the country, refreshed weekly via Overpass. On top of the OSM base it layers AI-read photo tags (shade, equipment, age fit), Google names and ratings where they exist, live NEA weather and haze, the nearest MRT station, and first-party reviews from parents. No ads, no accounts.

A couple of things I learned along the way: tag coverage is sparser than you’d expect — only ~180 of the ~2,290 OSM playgrounds carry a name, and indoor/wheelchair tags are rarer still, which is exactly why the photo-reading layer earns its keep. On the bright side, the weekly Overpass diff regularly catches brand-new playgrounds within days of new estates opening, which still feels a little magical.

Every playground links back to its source object on osm.org, and the About page credits ODbL. Feedback from Singapore mappers is very welcome — especially wrongly-tagged playgrounds, which the app makes easy to spot (and then fix at the source).

Today marks exactly one year since I started making changes to the map of Korea using openstreetmap.

my projects: 제주시 원도심 * 영흥면 * 거북섬 * 제부도 * 대부동 * 영종도 and 자운대

During this time, I’ve met many talented people, participated in many projects that will benefit people for decades to come, and of course (how could I not?), I’ve also satisfied my ego with athletic achievements. Mapping is a great hobby for people like me who can never get enough of new data. Every day of mapping brings new knowledge, and with it, new emotions.

I’ve heard a lot of opinions this year. That mapping is about freedom. That mapping is about community. That mapping is about the environment in which a person lives. Perhaps all of this, and more, is completely true. But for me personally, mapping is about knowledge, data, and education. It’s like having a sweet tooth and finding a bottomless sea of ​​sugar. It’s like finding a beach where diamonds are scattered right under your feet.

See full entry

Location: Guro 3(sam)-dong, Guro-gu, Seoul, South Korea

About three or four years ago, I used OSM to get map information for my autonomous driving test data. However , never had I thought to donate my living experience to the OSM.

On 2026.7.9, I realize that it is time to do it. I update some residents, toilets and cafe’s position. And I also name some unnamed roads and parks where I was born or studied.

Hope to update necessary infomations continiously

Location: 丰庄, 真新街道, 嘉定区, 上海市, 200333, 中国

Martes 7 de Julio de 2026.

Se realizo:

  1. Se agrega etiqueta de Condominio Río Lircay, Barrio Los Pinares IV, se separa Los Pinares II y III.

  2. Se agrega nombres de calles en Los Pinares IV; Huircaleo, Cuminao, Huenchulaf, Huenupan, Calfumil, Kuden, Curiman, Namuncura, Felipe Camiroaga y Antilaf.

  3. Se corrige tramo de vía que corresponde a Av. Kennedy y no a Av. España. Desde República hacia el norte corresponde a Kennedy y desde República hacia el sur corresponde a España.

  4. Se agrega nombres de calles en Los Pinares III; Calfupan, Caulín, Huenchelu, Eyetun, Kopahue, Inacayal, Llacantu, Felipe Camiroaga, Coyanco, Yafu, Malal.

  5. Se agrega nombres de calles en Los Pinares II; Lonco, Cuyen, Ela, Piren, Callen, Peuma.

Location: Los Quilos, Rancagua, Provincia de Cachapoal, Región del Libertador General Bernardo O'Higgins, 2880000, Chile

Другар Claude и ја смо мало истраживали. Нашли смо дискусију [1] која је иницирана са [2]. Након тога вероватно је измењен и вики [3]. Делује да је таг почео да се користи [4].

Неки мој закључак је да brand:sales=brand1;brand2 има смисла додати. Видећемо шта заједница мисли о тагу у наставку, таг додат на Оков са идејом мапирања STIHL дилера [5]

[1] https://community.openstreetmap.org/t/usage-of-brand-for-lists-of-brands-sold/132493
[2] https://community.openstreetmap.org/t/tomtom-maproulette-challenges-july-2025/132487
[3] https://wiki.openstreetmap.org/wiki/Key:brand#Brand_of_feature_vs_brands_on_sale_/_service_/_repair_/_rental
[4] https://taginfo.openstreetmap.org/keys/brand%3Asales#overview
[5] https://www.openstreetmap.org/way/171563659

Last year I hiked the GR20 across Corsica, and afterwards I built a small non-commercial website around it: https://mongr20.com/en/

Everything is computed from the OpenStreetMap GR20 relation: the site states 182.4 km and +11,220 m of elevation gain, split into the 16 official stages. From that single OSM trace I generated:

The map tiles are OpenTopoMap/OSM. No ads, no tracking, no paywall — it is a thank-you project as much as anything. So: thank you to every mapper who has ever touched that red-and-white line across Corsica. The data quality on the GR20 relation is genuinely excellent, and this site simply would not exist without it.

If any mappers here have hiked the GR20 and spot something off (a refuge position, a water source), I would love to hear about it.

همراهی حروف و عدد به طور مثال «بنفشه ۱»، «لاله ۵»، «سروستان ۹» درست است ولی… این همراهی به طور مثال «خیری ۱۲۹»، «کریمیان ۲۳»، «قریب ۲۱»، «باشتنی ۷»، «شادالویی ۱۳۱»، درست نیست. چون اگر «alt_name» و «old_name» و «loc_name» نداریم؟ برای همین درست شده. یا نباید نام قدیمی را درون پرانتز نام جدید گذاشت. مگر در معبر خارجی این چیزها وجود دارد؟

Posted by fghj753 on 6 July 2026 in English. Last updated on 11 July 2026.

Last September I wrote about a concept where instead of hand-listing 15–30 recycling:* tags on every packaging container, the user could just pick the container’s colour and let the editor auto-add the right tags. Well, now the concept has become a working prototype.

Estonia’s container colours try to follow the Danish standard: paper blue, glass green, metal/plastic packaging yellow. Other countries and regions use different colours, but across EU paper, glass and packaging have surprisingly consistent colouring.

Colours used for waste bins across the EU, 2023 survey Source: European Commission, “Harmonising waste-sorting labels across the EU” (2023).

See full entry

Location: Pääsküla, Nõmme linnaosa, Tallinn, Harju County, Estonia

Сколько копий сломано о названиях озёр, а от «Дикое оз.» так и не избавились.

nwr[natural=water]["name"~"оз\\."]

Поиск и Замена… и получаем «озероИлимнир» :\

Что ж, запасаемся чаем и небольшими кусками через Level0 исправляем:

  • «оз. Белое» на «Белое озеро»
  • «оз. Пятницкие» на «Пятницкие озёра»
  • «оз.Бол.Захарьевское» на «Большое Захаревское озеро»
  • «Бол.Панэчаты оз.» на ээээ…. пожалуй на «Бол.Панэчаты озеро»

По пути обнаруживаем что исправлять нужно и в name:ru. А из name:en вычищать «Oz. Jasnoje». Учесть что по-белоруски должно быть «возера». А в украинских названиях оставить популярное написание с заглавной «О». Заглавные….

nwr[natural=water]["name"~"оз\\.", i]

Теперь всё? Ха, а теперь nwr[natural=water]["name"~"о\\."]

Да что мелочиться:

{{geocodeArea::Russia}}->.a;
nwr[natural=water]["name"~"\\."](area.a);

И получаем:

  • Пож.
  • вдхр.
  • вдх.
  • п.
  • пр.
  • пр.
  • прот.
  • ер.
  • Южн.
  • юж.
  • Сев.
  • Мал.
  • М.
  • Б.
  • Д.
  • с.
  • Боль.
  • Бол.
  • бол.
  • р.
  • руч.
  • раз.
  • рз.
  • зал.
  • ст.
  • р.
  • ок.
  • им.
  • Верхн.
  • Верх.
  • Н.
  • Лев.
  • Тех.
  • Вос.
  • сол.
  • овр.
  • пор.
  • Академ.
  • бывш.
  • заброш.
  • недейств.
  • рыб.

‿( ́ ̵ _- ` )‿

Posted by frodrigo on 6 July 2026 in English.

Clearance: Quality filter for OpenStreetMap replication

Clearance is a free software tool for controlling the quality of OpenStreetMap replication diffs. It tracks thematic and territorial edits to OSM and keeps replication extracts (extracts, diffs, and a local Overpass API) up to date.

Instead of trusting every incoming change, Clearance evaluates edits against configurable quality rules based on OSM tags, metadata, geometry and changeset properties. Compliant changes, at object level, pass through automatically. Suspect ones are retained rather than applied. Retained data must either be fixed directly in OSM or approved manually. All data contributions are made only in OSM itself. Reviewing and fixing suspect changes is done collaboratively by the team responsible for a given theme and region.

Because it uses standard OpenStreetMap ecosystem formats for both input and output, Clearance integrates seamlessly into existing OSM data reusers workflows, while providing greater confidence in the consumed data. It is used to filter and review changes on thematic contributions such as tourism POIs across France, or road and emergency access points in Spain.

How Clearance addresses this problem

Clearance imports an initial OSM PBF extract, then checks every incoming change against configurable quality rules. Changes that meet the rules are applied automatically to the replicated database, while suspect changes are held back. Quarantined changes must then be fixed directly in OSM or manually approved by reviewers. After each update, previously held objects are re-evaluated, so a change is released automatically once it no longer fails the rules.

See full entry

Posted by Mapper-Jonas on 6 July 2026 in German (Deutsch). Last updated on 11 August 2026.

Hallo zusammen,

in den letzten Wochen habe ich mich mit dem Thema Indoor Mapping vertraut gemacht. Da ich dabei auf einige Probleme gestossen bin, habe ich nun eine Anleitung geschrieben, die den Einstieg ins Indoor-Mapping erleichtern soll. Bitte beachtet, dass meine Erfahrung mit OpenStreetMap noch sehr begrenzt ist. Falls ich also grobe Fehler in der Anleitung gemacht oder wichtige Teile vergessen habe, könnt ihr mich gerne benachrichtigen.

Viel Spass mit der Anleitung für Indoor-Mapping mit OpenStreetMap

Ziel der Anleitung

Diese Anleitung vermittelt die Grundlagen des Indoor-Mappings mit OpenStreetMap (OSM). Das Ziel besteht darin, die Innenräume von Gebäuden, wie beispielsweise Stockwerke, Räume, Korridore, Treppen oder Aufzüge, korrekt zu erfassen und in OSM zu dokumentieren. Die erfassten Daten können anschliessend in verschiedenen Anwendungen und Viewern visualisiert und für Navigations-, Analyse- oder Informationszwecke genutzt werden.

Hinweis: Bei spezifischen Problemen oder wenn du detailliertere Antworten suchst, empfiehlt es sich, einen Blick ins OSM-Wiki zu werfen. Dort findest du weiterführende Informationen, Erklärungen und mögliche Lösungsansätze.

See full entry

Location: Rapperswil, Rapperswil-Jona, Wahlkreis See-Gaster, St. Gallen, 8640, Schweiz

Viernes 3 de Julio de 2026.

Se realizo:

  1. Modificación de ejes de calles en Villa Galilea G2 y G1 en base al mapa de ESRI.

  2. Se agrego etiqueta de población por ambas etapas.

  3. Se agrego nombre de calle; Santa Clara de Asis.

Location: Campamento Puente Alta, Rancagua, Provincia de Cachapoal, Región del Libertador General Bernardo O'Higgins, 2920001, Chile