Next Tuesday the OSMLondon pub meet-up will be at “The Volunteer” pub near Baker Street!
Last time we were at the Blue Posts near Tottenham Court Road. We’ve been there many times before, but not for several years (we’ve been avoiding Sam Smiths for reasons, as I explained last time). It didn’t seem to have changed much though. We took over a large part of the pleasantly quiet upstairs a
23 hours ago
Next Tuesday the OSMLondon pub meet-up will be at “The Volunteer” pub near Baker Street!
Last time we were at the Blue Posts near Tottenham Court Road. We’ve been there many times before, but not for several years (we’ve been avoiding Sam Smiths for reasons, as I explained last time). It didn’t seem to have changed much though. We took over a large part of the pleasantly quiet upstairs area. I think someone else took a photo, so I didn’t bother (?). Anyway we had maptastic chit-chat as always. I noted down a couple of interesting conversation topics:
We talked about a recurring topic: Should we send automated welcome emails after users sign up? It’s pretty odd that we don’t do this, if we compare ourselves to just about any other user sign-up website, but I think the counter-argument has always been that we’re a very international community, and so we can do this by providing data on new contributors in a region, and letting local communities craft much better more friendly language and context-aware welcome emails. I’m sure this topic has been re-hashed many times over the years.
A leading welcoming tool is “OpenStreetMap Welcome Tool” welcome.osm.be from LCCWG. I’ve not tried it. I see it’s not enabled for UK/GB/England (I think some UK people are welcoming new mappers in small areas using OSMCha) but a key feature would seem to be the ability to mark a recipient as “has been welcomed”. I was thinking an alternative hack would be to always welcome user’s via a discussion on their first changeset, just as a “weird trick” to turn it into a publicly viewable rather than private message, so we can see who’s been welcomed.
But anyway I personally think the idea of a brief automated welcome email on registration should still be considered, because manually welcoming seems unlikely to reach everyone, and also there’s that frustrating fact that many users sign up then never get as far as making an edit.
And speaking of these internal channels of promotion, Firefishy was plotting and scheming to do some experiments with homepage banners (like the graphics you may have seen for promoting SOTM). We now have the ability to show these in a location-dependant way, which raises questions about how to organise the promotion of events, but Firefishy was pondering doing an experiment with a banner to promote a particular editor in a particular region, and see what kind of shift in the editor usages stats would happen as a result. Kind of like an “A-B testing” experiment.
We talked about updating shops/POIs data, and how we should really try to drive more use of the FHRS data. There’s some handy comparison tools. But we talked about maybe gamifying this a bit more, or perhaps presenting rankings by council regions to encourage competitive mapping.
Those were some things I noted, but there were many other topics besides. If you fancy joining in with this kind of discussion face-to-face in a pub… come along! The next OpenStreetMap London pub meet-up will take place Tuesday 10th at “The Volunteer” pub on Baker Street. It’s 293 metres north of Baker Street tube, which isn’t a very inaccessible watering hole, but with a name like that I couldn’t resist! See you there?
23 hours ago
see community.openstreetmap.org/t/update-on-my-id-tagging-schema-and-id-grants-completion-of-612-hours-of-work/149730 for overview
see below for more specific list, it was too long to be posted on forums
Funded by OpenStreetMap Foundation
I tested and reviewed this changes prepared by others, recommended changes to be merged and it was followed by maintainers:
see community.openstreetmap.org/t/update-on-my-id-tagging-schema-and-id-grants-completion-of-612-hours-of-work/149730 for overview
see below for more specific list, it was too long to be posted on forums
Funded by OpenStreetMap Foundation
I tested and reviewed this changes prepared by others, recommended changes to be merged and it was followed by maintainers:
-
use sculpture for craft=sculptor, not wall-hanging picture - thanks to OpenHistoricalMap for icon and OpenHistoricalMap for importing it into Pinhead (by matkoniecz)
-
Bump typescript-eslint from 8.61.0 to 8.61.1 in the eslint group across 1 directory (by dependabot[bot])
-
unify diacritics stripping logic (by k-yle)
-
feat: Prioritize parent relations of connected features in relation dropdown menu (by bhavyaKhatri2703)
-
switch to id-tagging-schema v7 (by tyrasd)
-
fix multipolygon nodes unable to be moved (by k-yle)
-
Delete the unused lane parsing code (by wantaekchoi)
-
render diameter when a feature is selected (by k-yle)
-
Fix displayLength parameter doc saying area (by wantaekchoi)
-
remove redundant CLDR overrides (by k-yle)
-
remove name:wlp (typo) (by k-yle)
-
fix crash when resizing the browser tab (by k-yle)
-
allow tags like not:*:wikidata to have multiple values (by k-yle)
-
migrate language_names to typescript (by k-yle)
-
Add rendering for ford tag on highway features (by Geo-2695)
-
US English fix: change ‘Kerb’ to ‘Curb’ in parking fields (by lokendra005)
-
Use pinhead-laptop icon for internet cafe (by Geo-2695)
-
Bump @openstreetmap/id-tagging-schema from 7.1.1 to 7.2.0 (by dependabot[bot])
-
Improve discoverability of common street presets (by maansi33)
-
Add multifaith place of worship preset (by dheeraj12347) (also made some adjustments myself)
-
add missing changelog entries (by k-yle)
-
[relations, part 0] extract osmMatchTags into a re-usable helper function (by k-yle)
-
Add relation line render in Aerialway Route relation (by Geo-2695)
-
tidy type-defintions for actions (by k-yle)
-
migrate operations to typescript (part 2) (by k-yle)
-
migrate bing streetside to typescript (by k-yle)
-
migrate kartaview to typescript (by k-yle)
-
migrate vector tiles to typescript (by k-yle)
-
disable the locator overlay when switching to osm carto (by k-yle)
-
fix crash due to typo in osmose (by k-yle)
-
migrate wiki{base,data,pedia} to typescript (by k-yle)
-
NSI: only remove existing wikidata/wikipedia tags if they match the NSI suggestion (by k-yle)
-
Add street_vendor field to Marketplace preset (by tyrasd)
-
Give each mismatched geometry fix its own annotation (by wantaekchoi)
-
Make handling of fields containing :both more consistent (by k-yle)
-
migrate operations to typescript (part 3) (by k-yle)
-
Always restore dblclick-zoom when cancelling add-way behavior (by aditya1010-max)
-
Treat aerialway features as linear features by default (by Geo-2695)
-
migrate osmNote to typescript (by k-yle)
-
convert some more trivial files to TS (by k-yle)
-
fix bug where ref=* labels did not appear for relation members (by k-yle)
-
fix wrong preset icon for platform_edge (by k-yle)
-
fix some preset icons unreadable in dark mode (by k-yle)
-
fix hundreds of API requests sent when you resize the sidebar (by k-yle)
-
prevent certain keyboard shortcuts causing the work on the currently drawn feature to be lost (by k-yle)
I tested, approved and merged improvement prepared by someone else:
-
fix *:both:*:both keys appearing in the taginfo project file (by k-yle)
-
automatically include american english terms in other english dialects (by k-yle)
-
Use book_with_bookmark_in_slot Pinhead icon for library dropoff (by ooosssay)
-
Try kidneys icon for nephrology (by Dimitar5555)
-
Bump js-yaml from 5.2.3 to 5.3.0 (by dependabot[bot])
-
Bump typescript from 6.0.3 to 7.0.2 (by dependabot[bot])
-
Remove replacement from the hidden ferry terminal preset (by Geo-2695)
-
Icons for mixed and leafless forests in the leaf_type combobox (by fibonacci-matrix)
-
US English fix: change ‘storey’ to ‘story’ in house field description (by ak8abhinay)
-
Avoid duplicate drive-through field on post boxes (by amannsan)
-
Don’t show denomination field when religion is empty (by Dimitar5555)
-
Stop suggesting footway-to-path replacement (by amannsan)
-
Bump @vitest/coverage-v8 from 4.1.10 to 4.1.11 (by dependabot[bot])
-
Bump eslint from 10.8.1 to 10.9.1 (by dependabot[bot])
-
Bump @waysidemapping/pinhead from 15.25.0 to 16.26.0 (by dependabot[bot])
-
Use a patterned ticket icon for lottery shops, workaround for regression in the Font Awesome 6 → 7 upgrade (by fibonacci-matrix)
-
Also update previously modified icons in the shop field (by fibonacci-matrix)
-
Use icons from Carto for castle_type=palace, castle_type=stately (by fibonacci-matrix)
-
Use jar icon from Pinhead (Carto) for shop=deli (by fibonacci-matrix)
-
Use “venus” icon from Pinhead for gynaecologists, fixes regression in the Font Awesome 6 → 7 upgrade (by fibonacci-matrix)
-
Add wheelchair description field (by SaifuddinM23)
-
Use hot dog icon from Pinhead (by fibonacci-matrix)
-
Remove extra placeholders that may be generated automatically (by fibonacci-matrix)
-
Use different icons for shop=bakery and shop=pastry - with a cupcake icon from Carto (via Pinhead) for pastry shop (by fibonacci-matrix)
-
change office=telecommunication icon to suitcase with phone (by Dimitar5555)
-
Bump eslint from 10.11.0 to 10.13.0 (by dependabot[bot])
-
Bump js-yaml from 5.4.2 to 5.5.0 (by dependabot[bot])
-
Bump typescript-eslint from 8.70.1 to 8.72.0 (by dependabot[bot])
-
Bump eslint-plugin-prettier from 5.5.6 to 5.5.7 (by dependabot[bot])
-
Bump @eslint/json from 2.1.0 to 2.1.1 (by dependabot[bot])
-
Bump @types/node from 26.6.2 to 26.6.5 (by dependabot[bot])
-
Bump vitest from 5.0.3 to 5.0.5 (by dependabot[bot])
-
Bump better-ajv-errors from 2.0.3 to 3.0.3 (by dependabot[bot])
-
Bump @vitest/eslint-plugin from 1.6.27 to 1.6.28 (by dependabot[bot])
-
Use more appropriate icon for go kart facilities (by fibonacci-matrix)
-
Compass rose icon (by fibonacci-matrix)
-
Reuse building type translations (by FloEdelmann)
-
Reuse translations for building_area field (by fibonacci-matrix)
-
Use paint roller icon from Pinhead, replacing icon with broken viewBox (by fibonacci-matrix)
-
Use unique icon for vehicle inspections (by fibonacci-matrix)
-
Use unique icon for fish & chips fast foods (by fibonacci-matrix)
-
Use “dove” icon from Pinhead, replacing broken Font Awesome icon (by fibonacci-matrix)
I tested, approved and merged improvement prepared by someone else:
I suggested merging own code written before grant started and it was followed:
- update Transifex instructions (by matkoniecz)
Changes I implemented myself:
-
Record new OSMF funding for work by matkoniecz (Mateusz Konieczny)
-
“roo” should have “roof” listed as entry before “roofer”
-
Handle chicken buildings as building=farm_auxiliary
-
Archive schema-builder repository.
-
set place=farm label to “Individually Named Farm” and make it searchable
-
add destination tagging to highway=motorway
-
allow lines for aeroway=holding_position
-
allow deploy preview to run (potentially) outside PR context
-
stop PRs about patch updates to eslint-plugin
-
fix broken links in docs
-
remove dead link
-
note that Tor is fine and iD works with it
-
More accurate fields status, update issue link
-
CONTRIBUTING.md - put translating earlier
-
do not describe Mercator meters as meters
-
fix broken link in docs
-
fix github doc link
-
move power points from point layer to power layer
-
more clear link formatting
-
fix broken link in CONTRIBUTING.md
-
tweak osmPavedTags and osmSemipavedTags
-
remove obliterated: prefix used 5 times worldwide
-
better cuttings comment
-
Better preset name for bare amenity=parking
-
replace 3rd-party action-download-artifact with 1st party one
-
fix broken taginfo reports for addTags, list removeTags as belonging to preset (as code intended)
-
remove collection_times for Dog Excrement Bin
-
subject:wikidata for monument in moreFields
-
intestine icon for gastroenterology
-
fix surface parking preset location, add missing terms [DO NOT MERGE YET]
-
Try better icon for miniature golf
-
person_wearing_martial_arts_belt_front_kicking icon for dojo
-
add religion/religious search terms to PoW
-
try to make building=service more findable
-
more search terms for midwife
-
Use standard English (Land Use)
-
add outdoor_seating to restaurant in fields
-
remove ep_geldkarte from payment_multi
-
Add category for advertising features
-
fix checking of referenced presets in build script
-
Make description of what is being defined more userproof
-
Added dedicated section for major changes in release-drafter.yml
-
Use integer field type for lanes and set minimum number of lanes to 1
-
exclude icon dependencies from cooldown
-
extract icon code to own function
-
do not suggest that testing is optional
-
add missing newline and unbreak quote
-
remove usage stats as section in PULL_REQUEST_TEMPLATE
-
Remove deprecation section from “new tag” issue template
-
Rename “Crossing With Pedestrian Signals” preset to “Crossing With Traffic Signals”
-
Retitle label to one not hijacked by dependabot
-
Fix schema to allow empty strings as roles
-
Fix examples for matchTags in schema for relation members
-
Fix schema validation for special restrictions field type
-
minor grammar fix
-
Enforce string pattern of stringsCrossReference property in json-schema
-
use arabic comma workaround also for terms of presets
-
Remove duplicate links to code of conduct / privacy policy
-
Move general rules to general guidelines, as it applies not only to submitting issues
-
Document categories and default listing in SCHEMA.md
-
fix typo
-
locationSetCrossReference can reference both fields and presets
-
Fix example and documentation of geometry property in SCHEMA.md
-
Define default value of increment property in field schema as 1
-
fix typo
-
Clarify that fields can stand for fields exclusively or also for moreFields
-
Try to give hints about how to start creating a new preset
-
Change wording in schema documentation to be more editor-neutral
-
Replace (deprecated) substr with substring method
-
Fix definition of listReusedIcons build option: it may be a number
-
Add section for json-schema PRs in changelog
-
Inherit shop fields in shop=pasta preset
-
Barber - inherit fields from hairdresser preset, as they exactly match
-
Include aliases and terms from podiatrist preset (from other podiatrist preset)
-
Make one of podiatrist preset unsearchable
-
minValue, maxValue, increment are also for integer fields
-
mention CoC in GOVERNANCE.md
-
remove dead code
-
More clear errors - undo splitting before logging
-
Add diet tags to moreFields in bakery and pastry presets
-
Use the same icon for ice cream and frozen yogurt
-
Mention terms for fields in SCHEMA.md
-
tweak terms description in issue template
-
It is Taginfo not TagInfo - fix typo in documentation
-
remove direction= from choker as undocumented and unclear
-
Fix street search
-
Narrow down valid values with pattern, where possible
-
Align search terms for parking presets
-
explain why English is skipped
-
Remove deprecation rule for wood=mixed
-
Remove undocumented value “hobby” for key scuba_diving:
-
Add cuisine=waffle value - as “Waffles”
-
add roof:shape=many as value
-
assume that @openstreetmap/id-tagging-schema is not hijacked in dependabot.yml
-
replace 3rd-party action-download-artifact with 1st party one
-
fix surface parking preset location, add missing terms [DO NOT MERGE YET]
-
Mark climbing:bolts tag as integer
-
use different example of a field
-
fix redirect
-
fields may have relation as geometry type
-
fix typo (extaTerms -> extraTerms)
-
Enumerate also integer fields as needed, stop allowing specific variant of invalid field definition.
-
If geometry field is specified for members it should contain at least one geometry - enforce it with schema
-
Add missing commas in documentation
-
Remove duplicated misplaced sentence in docs
-
Clarify that a type=multipolygon relations are not relations
-
Indicate that relation structure definition is optional
-
Add resource=lead/silver/copper as field value
-
Add “roof” and “car roof” as search terms for building=carport
-
Add “bicycle stand” search term to amenity=bicycle_parking
-
Use chicane icon in dropdown
-
Add material=ceramic as field value
-
Remove taginfo suggestions from bollard key
-
Provide translated options for shop and disused:shop dropdowns.
-
playground= - use preset icons in dropdown where dedicated icon exists
-
Use dedicated rehabilitation icon (from Temaki) also in dropdown
-
Simplify overly complex phrasing in README
-
Fix bad typeCombo for government field
-
Restore gnis:feature_id display for swamps.
-
Avoid unnecessary yes values silenty applied by fitness_station= field
-
add operator= field to route=road
-
Unify craft=brewery label
-
Avoid unnecessary yes values silenty applied by healthcare_therapist= field
-
Add covered, indoor, layer fields to _platform_point preset
-
inherit operator= from power in power=switchgear
-
Add inscription= to highway=milestone
-
document de facto interpretation of options set for checkbox field
-
fix solar thermal collector bug that could induce wrong generator:output:electricity=yes
-
Delete data/fields/design.json as unused [requires moving existing translations]
-
Use single nicer t-shirt icon instead of two different t-shirt icons
-
Add inscription= to historic=aircraft
-
Add translatable options to place= dropdown.
-
Add hazard=damaged_road value to hazard field
-
Add translated strings and icons to advertising= dropdown.
-
Add inscription= field to advertising=sign
-
Add inscription= field to historic=building - in additional fields
-
show reasonable access defaults on barrier=stile
-
put major values first in construction field for roads
-
Guide user how to obtain data and reaffirm that this data is machine-readable set of properties
-
Update sport=boules label to “Boules (Including Bocce)”
-
Use more common name for elongated_coin, add extra term
-
add ref= to moreFields of advertising features
-
stop inheritance for advertising sign in moreFields
-
Align vending.json and dedicated preset for transit tickets
-
Handle “geometry” label correctly in drafting release description
-
link data/fields in docs
-
Do not override reference to golf=tee in tee field
-
Document reference property for fields
-
SCHEMA.md documentation - do not reference deleted preset
-
Simplify and fix links in docs (deprecation doc was linking deprecated repo :) )
-
Fix docs: placeholder reference does not import also terms
-
Documentation improvements: fix fields mentions
-
Do not allow useless deprecation rule adding tags everywhere
-
cycleway field was renamed in 6.0.0
-
Detect referencing nonexisting attribute
-
List field types rather than relying on overly tricky negation
-
Mandate proper pattern for iconsCrossReference fields
-
Asssorted phrasing improvements in SCHEMA.md documentation
-
align should/must in schema and SCHEMA.md
-
Make confusing addTags follow typical setup
-
try 85 and 95 offsets rather than trying 95 twice
-
simplify condition (and fix it)
-
document availability as npm package
-
Refactor field groups in json schema
-
Give unique hash to reports from mutually_exclusive_tags.ts
-
railway:preferred_direction must not be treated as ref when reversing
-
Make waterway=dam lines more visible on the map
-
Use identifier as more clear than name
-
try to give Oauth hint how to edit on test server
-
Fix inheritance of fields for mangroves
-
remove access= field from generic advertising, add it as a field for advertising=board
-
Do not suppress operator= and colour= for route=detour
-
Fix broken link API.md (.js -> .ts)
-
remove IE-specific workaround
-
remove no longer necessary polyfill
-
focus() is now generally available
-
remove not needed exclusion from browser list
-
Drop handling of (unsupported) IE11
-
Drop leisure=beach -> natural=beach replacement
-
Use dedicated symbolic icon for advertising agency (from Pinhead, thanks to quincylvania)
-
Remove autoreplacement of ambiguous case for building:level
-
make description of shared_lane more accurate
-
power=substation + location=kiosk - deprecation target got deprecated already
-
Stop adding subway=yes to station=subway
-
How many tents may be placed on a campsite or pitch is integer
-
Number of hoops on a basketball court must be an integer
-
expected_rwn_route_relations must be an integer
-
number of people per carriage is an integer
-
capacity:persons in practice is not a numeric field
-
drop suspect deprecation rule for information=bicyclemap
-
Document browser baseline 2022 as compatibility target
-
deprecated.json - upgrade also to man_made=petroleum_well if doing this upgrade at all
-
List known tourism= options for that field, showing them using translatable labels
-
List known landuse= options for that field, showing them using translatable labels
-
Add construction=busway support in highway=construction
-
List known water= options for that field, showing them using translatable labels
-
Deprecate man_made=well deprecation as it may be man_made=water_well or man_made=petroleum_well
-
List known fitness_station= options for that field, showing them using translatable labels
-
remove no longer needed unary plus operator
-
Change “20 months ago” to “1 year ago”
-
Stop using fake PTv2 route names (name=NORTA 2: French Market → Canal at Bourbon and similar will be ignored on routes)
-
do not suggest adding roads and bridges on ice roads
-
Do not complain about afterAll
-
Add very simple NSI test - start for proper testing of this part of iD
-
add tooltip for “x” removal action in multiCombo/semiCombo value list
-
Make local iD openable from CLI
-
Add one more tooltip reusing existing string - help button in turn restriction field
-
my OpenStreetMap Foundation grant was completed
Changes I implemented myself (reheader):
-
fix vitest run --no-isolate, by blocking retries [LLM generated code]
-
dedicated highly visible rendering for railway=platform_edge [LLM generated code]
-
fix RTL regex with en dash rather minus in range [partially LLM generated]
-
better redact custom imagery API keys in imagery_used tag [partially LLM generated]
-
don’t flip values of tags not relative to way direction when reversing [partially LLM generated]
-
Render in purple playground objects mapped lines/areas [LLM assisted change]
-
Do not attempt to clean image and wikimedia_commons values [LLM used for debugging]
LLMs
There is also a sad part. Recently I was also experimenting with using LLMs for part of the work. I absolutely dislike that LLM are a thing, their emergence is second worst thing that happened in my life so far.
Some complaints raised about them are just not making sense. But there are also many valid reasons to dislike then. For start I absolutely detest dependency on a proprietary SaaS. That is run by people who outright hate me, or at best merely want to exploit me. Or open weights produced in a proprietary way, in way that inherently makes impossible for me to reproduce it.
Sadly at this point LLMs are actually highly useful. It is quite easy to fall into traps of various kinds, but can be actually effective in some ways.
The question remains whether they actually should be used and which uses are legitimate. And how to avoid various novel problems. And I am still unsure about proper answer here.
Obviously undisclosed use and/or submitting vibecoded pull requests is just invalid. But there is plenty of potential uses that make sense and can potentially be helpful.
(though I hope that this thread is not going to be about LLMs, I am getting allergy to even mentions of them - though at the same time I am tempted to write a long rant why they are bad in general and also specifically for me)
Other work funded by OpenStreetMap Foundation
I recommended closing and it was followed
-
No transmission of saved data [translated title from French original] (by Lemeilleurdelanature2026)
-
Problem with the layers “IBGE - Mapa de setores urbanos” and “IBGE - Mapa de setores rurais” (by eduardoaddad)
-
Improve Phone Number Entry with Google’s libphonenumber (by talllguy)
-
Allow cancelling of changeset uploading (by hikemaniac)
-
Spurious “Areas cannot cross over themselves.” (by ManDay)
-
Improve focus visibility for action buttons in note editor (by Arpan200502)
-
only standart attributes in favorites (by Katze0815)
-
Historical monuments in France (by Mahabarata)
-
Document maprules param and make it work (again) (by tordans)
-
Changing the role of a relation member doesn’t always register as a change (by skylerbunny)
-
Add marching ants to show forward direction of lines (by potaja)
-
Add standard keyboard scrolling to member list (by 1-navneet)
-
Turn Restrictions Editor simplification (by Bibi56)
-
Tamil characters are broken (by ammahir)
-
highway=service shows implied access of yes (by systemed)
-
KeepRight interface followup issues (by bhousel)
-
Add ability to snap a way onto another way (by diana-nicolae)
-
Add ability to snap a way onto another way (by diana-nicolae)
-
Update Asian language data (by SteveLz)
-
Improve Modal Layout: Group Shortcuts and Buttons with Responsive Scrolling. Solves #10591 (by Deeptanshu-sankhwar)
-
Fix shortcuts modal scrolling: constrain scroll to content area and preserve header scroll behavior (by isabelladesi)
-
fix: the bing maps api key is stored as an aes-encry… in… (by anupamme)
-
Right click menu for the ribbon? (by bhousel)
-
Add tabs to the search results popover (by quincylvania)
-
Spellchecking warnings for certain tag names (to catch typos by users) (by peternewman)
-
Add a way to undo a specific change just before saving? (by helmo)
-
#2586 (by unknown)
-
Ways with access=no render no differently in iD (by newnumber2)
-
“Tip of the day” in the “Welcome back” box (by forteller)
-
Make hashtags field customizable (by willemarcel)
-
Show partial relation memberships in multiselection (by Shyam-123pandey)
-
Add {x+1} etc. tile simple math capabilities for Custom Background Settings (by jidanni)
-
Fixed streetside viewfield (by JoshM2)
-
Network error warning? (by tastrax)
-
Add number shortcut labels to quick preset buttons (by quincylvania)
-
only standart attributes in favorites (by Katze0815)
-
Update walkthrough for selecting the feature type before drawing (by quincylvania)
-
Workflow for adding relations with the ribbon UI (by quincylvania)
-
Add standard scrolling to left sidebar (by jidanni)
-
Scroll Map Data pane to Map Features section when clicking hidden features button (#9402) (by SaifuddinM23)
-
Add railway halt area support (by Geo-2695)
-
Pasted entrance just has point icon (by jidanni)
-
sidewalk is not the first result when searching for ‘sidewalk’ (by k-yle)
-
“Highlight unsaved edits” prevents selecting(?) (by tordans)
-
White Osmose icon stuck in left menu (by danieldegroot2)
-
keep multilingual row when the entered language is not recognized (#13019) (by ssthormess)
-
Switch es-toolkit/compat to es-toolkit (by Hirdyansh-bh)
I closed it outright (as rejected, unclear, duplicate, abandoned, LLM with no human oversight, misplaced, impossible etc):
-
mark some strings as strings (by matkoniecz)
-
set downlevelIteration=true in tsconfing.json (by matkoniecz)
-
Change “Pedestrian Crossing” to “Crosswalk” (by ghost)
-
Remove payment on trolley:deposit=no (by Dwarf-Nebula)
-
Support additional surface keys. (by matkoniecz)
-
Icons (by quincylvania)
-
Preset (common) name field (by sun-geo)
-
Create building=toilets as the default building tag for amenity=toilets (by TheAdventurer64)
-
stop using yes when nothing was selected in typeCombo (bad PR) (by matkoniecz)
-
Automatic geometry simplification is too aggressive (by matkoniecz)
-
Crossing:island prefilled as assumed no (by Fizzie41)
-
Yohours fails to parse some valid syntax, switch to openingh.openstreetmap.de ? (by matkoniecz)
-
Edit menu operations are not available for invisible relations (by slhh)
-
Roads disconnected from other roads, except via a parking lot (by jidanni)
-
Hard to actually choose the grey item (by jidanni)
-
Fix V’Lille preset in the same way that IDEcycle and Métrovélo (by Mahabarata)
-
Do not suggest to change bus=no to bus=yes (by Aimmig)
-
direction of ditches/drains (by Mahabarata)
-
“Line has no tags” when part of a relation (by TheAdventurer64)
-
make linter complaining about minor issue less annoying (by matkoniecz)
-
linter: mention actual command to improve formatting (by matkoniecz)
-
Add checkbox: Remember my selection, great for people needing to add 50 streets, 50 buildings, etc. (by jidanni)
-
named tracks are quite unusual (by matkoniecz)
-
intestine icon for gastroenterology (by matkoniecz)
-
Bump dawidd6/action-download-artifact from 21 to 24 in the github-actions group (by dependabot[bot])
-
Adding a validator or warning system for places with missing data (addresses, hours, websites, etc.) (by theadventurer62)
-
Prompt user to upgrade shop=yes and other generic presets (by matkoniecz)
-
When disconnecting points from ways, leave entrance=* on vertex (by kjonosm)
-
Fix for issue #4090: cmd.js line 20-26 replaced with OS-specific keyboard shortcut mappings with localization. (by StillAbeginnerr)
-
Add “copy tags” keyboard shortcut (by jidanni)
-
Photo overlay all on / all off toggle (by jidanni)
-
Warn when connecting to a link (by jidanni)
-
Momentary error messages (by jidanni)
-
Save changes locks up, how to import changes.osc (by seahorse41)
-
Zooming out is buggy (by klmnopqrst1337-dot)
-
Correction for Brazilian address format (by TagaSanPedroAko)
-
Better support for combinations of guard_rail and embankment (by emil813-cmd)
-
Capitalize the initial letter of genus, species, and taxon tag values (by Marc-marc-marc)
-
Simplify Turkish address form (by w2r4)
-
User can enter sport=skateboard;basketball to the field while “almost no app/map can properly deal with that”? (by slrslr)
-
Only use existing nodes when Circularising (by hb0nd)
-
Idea: getting asked for street number before searching for the street on the map (by Mekago55)
-
Keep walkthrough edit menus above chapter navigation (by tuttucodes)
-
Fix data loss when changing the language of a multilingual name on a multiselection (by amanbn8)
-
Fix flash message overflow (by alejandro-2g)
-
Allow partial disconnects for node selections (by tuttucodes)
-
mention use of addTags when matching presets (by matkoniecz)
-
express that file structure is for humans (by matkoniecz)
-
feat: add scroll-to-pan preference 🤖🤖🤖 (by impostrophe)
-
hide empty name field if noname tag is present (by tyrasd)
-
lángos (famous Hungarian food) is missing from cuisine (by valkaisanyi-sys)
-
Accept units in Elevation field (by 1ec5)
-
Remove redundant field placeholders (by Rishabh-377)
-
No icon for kindergarten (by maro-21)
-
[UI] Suggestion dropdown overlaps map controls on mobile view (by ashutosh-engineer)
-
Looping Tutorial after deleting Lines - Firefox (by clorofolle)
-
Ideas for operations on Way-based areas and multipolygons (by emil813-cmd)
-
Preferences in iD Are Not Synchronized Across Devices (by Deeptanshu-sankhwar)
-
control empty role of boundaries (by Mahabarata)
-
Add indicator in footer when iD cannot store changes locally (by tyrasd)
-
Add preset for shop=estate_agent (by fibonacci-matrix)
-
Add historic=tank preset (by DhairyasheelS)
-
Don’t escape double quotes and backslashes in the text tag editor [LLM generated] (by monsterlag)
-
Don’t block uploads for member-only edits of relations without a type tag [LLM generated] (by monsterlag)
-
Add values for fountain= (by marekkrug)
-
Incorrect loop increment in move-limiting logic (by nisshchayarathi)
-
fence_type=wood is deprecated, do not change other deprecated tag into it (by matkoniecz)
-
Sorting field entries by usage frequency during the build process (by fibonacci-matrix)
-
Leave a gap behind when reordering relation members. (by BjornRasmussen)
-
Draging a node of any line with swypping the background creates extra node of the line (by ihareg)
-
Batch uploaded GPX-files in a zip-file, not showing up in iD (by magu01)
-
feat: make locked fields unlockable via the lock icon (#12330) (by oaksprout)
-
sync user preferences from the openstreetmap API (by Deeptanshu-sankhwar)
-
Fixed Background imagery attribution that can become visible on light backgrounds (by ChehakTrehan)
-
Enhance Feature List: Enable Multi-Selection via Search Results (by Deeptanshu-sankhwar)
-
Add a warning if surface does not match the tracktype from highway=track (by mcliquid)
-
Red select highlight persists after deselect when changing zoom rapidly (by rivermont)
-
Add Tracetrack Topo background layer (by Nekzuris)
-
Possible to add a color picker to the “colour” tag ? (by Randalf-gh)
-
‘Repeat’ is incorrectly toggled when changing geometry (by rivermont)
-
Restriction relation not showing in minimap (by danpat)
-
Add missing target=_blank (by matkoniecz)
-
Add icons to buildings based on type and other properties (by RudyTheDev)
-
operations: disconnect what it can instead of failing all-or-nothing (by Jbansal2)
-
Road segment incorrectly tagged when using the structure tool (by camdenney)
-
Shift + right-click menu not appearing on Firefox/macOS (by quincylvania)
-
Icon for building=civic and building=public (by matkoniecz)
I closed it outright (as rejected, unclear, duplicate, abandoned, LLM with no human oversight, misplaced etc)
I recommended closing as fixed and it was followed (not listing ones closed by PR merges):
-
Latest Safari seems to have broken footer positioning. (by Bonkles)
-
Adding kk-Cyrl on Transifex (by ozomatik-glitch)
-
Access section exposes non-localizable, raw tag values (by ghost)
-
Improve embanked path rendering (by RudyTheDev)
-
Cannot zoom to warnings before uploading (by rene78)
-
Add support for retina aerial imagery (by zdila)
-
Display barriers with appropriate access tags (by tohaklim)
-
Add validator for mismatched crossing tags between crossing nodes and crossing ways (by aditya1010-max)
-
Improve keyboard navigation for preset list (by BlueSombra)
-
Can’t delete payments and currencies with the trash bin icon (by maro-21)
-
Crossing and Cycleway Refactoring Notes (by tordans)
-
Street level imagery: Date filter indicators hidden on low zoom (by danieldegroot2)
-
Error with persistent crosshair when using extract tool on crossing (by danieldegroot2)
I closed it outright as fixed (not listing ones closed by PR merges):
-
show source field on saving form (by matkoniecz)
-
Toggle between local language and English (by slhh)
-
Names with brands and qualifiers are not offered brand tags (by crimsondusk)
-
raw editor: value cut while deleting another empty line (by sun-geo)
-
Validator doesn’t warn existing issues on load (by ignaciolep)
-
Change “Show Third Party Icons” to “Show Third-Party Icons” and remove “Twitter” from tooltip (by jasontang11)
-
Tag value is hidden when it is too long (by Dimitar5555)
-
Public transport presets inappropriately suggest to change type or name of features (by jarek)
-
Adding of field location to the preset of a single solar panel (by git-tgo)
-
Render network value in the label of route relations (by SomeoneElseOSM)
-
#659 (by unknown)
-
#2152 (by unknown)
-
Description mismatch in Fields section (by iriman)
-
Add support for retina aerial imagery (by zdila)
-
Clicking “Zoom in to edit” crashes Firefox (by 1ec5)
-
Suggested tags may be for a bad brand when single brand:wikidata is listing multiple POI types (by pkubowicz)
-
Review existing icons whether we use outdated Pinhead codes (by matkoniecz)
-
It is not possible to enter the letters Ś and ś in Polish language. (by Slawek234)
-
Standalone webpage for browsing presets (Preview, Website) (by 1ec5)
-
Extend way operation blocked for the first second of selecting a node at the end of a way. (by BjornRasmussen)
-
“Follow” for a polygon (by Mahabarata)
-
Editor doesnt respond to hash changes anymore (by zbycz)
-
Search to an element, element hides relation membership (by blackboxlogic)
-
iD possibly creating data outside the Mercator square (by imagico)
-
Splitting roads can reorder ways incorrectly in a route relation with loops (by ockendenjo)
-
Teach disconnect in walkthrough (by manfredbrandl)
-
fix external presets/modes race condition (by maxgrossman)
-
Street level imagery: Highlight stays loaded when switching to another provider (by danieldegroot2)
-
location-conflation V3 handling (by tordans)
Funded by European Union via Nlnet Foundation
Changes I implemented myself:
-
taginfo manifest - more accurate listing of supported keys (this repository was merged into id-tagging-schema, see github.com/openstreetmap/schema-builder#migration)
-
document removeTags
-
new icon for building=outbuilding
-
List Roentgen icons in taginfo dataset
-
“plumbing” should find craft=plumber
-
add some obvious terms to office=estate_agent
-
typeCombo -> combo - fix trade=yes appearing when user tries to cancel editing
-
use breakwater icon also for man_made=groyne
-
reorder some entries as demanded by linter
-
Be more verbose where order differs
-
Don’t suggest sport=motor for highway=raceway, create dedicated preset for highway=raceway without specified sport
-
typeCombo -> combo, to prevent useless =yes values
-
add term to capacity field
-
add “bike rack” term to amenity=bicycle_parking
-
add address as moreField to landuse=residential, restores address display for landuse=residential from NSI
-
remove “Landuse” osmism from primary label, replace by “Land Use”
-
add “surface parking” term to parking.json
-
Add Planet include to exclude-only locationSets (temporary workaround) (by nathanpixodeo)
-
make place=farm icon similar to other place= than physical features
-
remove military=nuclear_explosion_site preset
-
use different placeholder for capacity, more fitting for more presets
-
remove capacity= from amenity_give box as unclear and not used and not documented
-
fix broken links
-
move capacity to moreFields for amenity=public_bookcase
-
amenity=trolley_bay - remove capacity field
-
remove capacity from man_made=dovecote
-
add religion identifiers to search terms of wayside shrine
-
typeCombo -> combo, to prevent useless =yes values (more cases)
-
remove implicit inheritance
-
typeCombo -> combo, to prevent useless =yes values (more cases)
-
yet another attempt to find more clear label for maxweightrating
-
do not forbid matching to multiple presets
-
Changelog for v7
-
fix broken links
-
Revert “Netlify preview: Add CORS for iD Staging deploy”
-
Use Pinhead icon for lifeguard - thanks NPMap for the icon and quincylvania for collecting it!
-
handle “build” label in release-drafter
-
power=tower may be referred to as a pylon, add also other terms
-
fix typo in SCHEMA.md
-
mention =-1 and =reversible in context of onewayCheck field type
-
use proper icon for traffic_calming=mini_bumps
-
Use roentgen-traffic_cushion for both preset and option
-
glacial erratic is by definition not attached
-
make differences more clear in traffic_calming= dropdown icons
-
use less abstract icon for playground=map
-
better cheese icon for shop=cheese from Pinhead, thanks to ooosssay for the icon
-
indicate merge of repository
-
fix moreFields not inherited in shop=cheese
-
fix typo in SCHEMA.md
-
try more readable icon for Archery Range from Pinhead, thanks to westnordost for the icon
-
use better life_ring icon from Pinhead, thanks westnordost for the icon
-
Split booking from general reservation field
-
link relevant code, fix bad references
-
add back crossing:markings=zebra:bicolour in Poland
-
Changed icon to “Meat” for restaurant/steakhouse (by fibonacci-matrix)
-
mention =-1 and =reversible in context of onewayCheck field type
-
Changed icon to “tube and toothbrush” for shop=chemist (by fibonacci-matrix)
-
add name= field to natural=wetland
-
remove ele= for shop=
-
amenity=ice_cream shop can inherit from shop=
-
add destination to motorized roads
-
Add some nitpicking to preset docs.
-
assign permissions specifically in deploy-preview.yml
-
clarify that inheriting from not yet existing fields is fine, as futureproofing
-
add dam term to reservoir
-
Add cuisine=syrian support [should it wait for 500 uses?] (reopened PR and fixed merge conflicts, though it was comparable to making this trivial PR in the first place)
-
use simpler icon for millstone
-
describe that editors should likely support by-tag search
-
Add building=tent
-
set “matchScore”: 0.9 for train wash, as it should rank lower than say train station as it is obscure and expert type of facility
-
Merge US and global presets for post boxes
-
remove landuse=farm preset
-
remove hidden landuse=pond preset used 3 times worldwide
-
use temaki-cushion icon for playground=cushion (by marensiegel from Temaki)
-
use more specific icon for playground=pump, matching dropdown
-
use Temaki icon also for playground=slide, not only dropdown option
-
Add website field to standard preset for shops help in testing and reviewing impact welcome
-
document consequence of instantiating preset with "*" wildcard value
-
add “women’s healthcare” to midwife preset
-
remove collection_times for Dog Excrement Bin
-
subject:wikidata for monument in moreFields
-
fix broken taginfo reports for addTags, list removeTags as belonging to preset (as code intended)
-
use dedicated OSM Carto icon for cave rather than a triangle
-
tweak phone/website for pharmacy and hairdresser
-
reduce dependabot spam to once a month
-
add some terms for street cabinet
-
use dedicated OSM Carto icon for public bookcase rather than library one
-
move phone= to more fields for shops in general
-
add “equestrian” to search terms of shop=sports
-
Use dedicated rehabilitation icon (from Temaki)
I tested, approved and merged improvement prepared by someone else:
-
Added Indian Fast Food and expanded Indian Restaurant presets (by Naveena11-cmd)
-
Implementing icons from Roentgen 0.16.0 (by BrianMacIntosh)
-
Added translatable key for “vending=bottle_return” (by fibonacci-matrix)
-
Change ‘brewery’ field label to title case (Sold Beer Brands) (by BrianMacIntosh)
-
Change addr: neighbourhood placeholder to English (US) spelling, change takeaway to takeout to use English (US) (by mugdhachalla)
-
Remove aerialway/capacity field from “Goods Aerialway” preset” (field was specified as people per hour) (by Geo-2695)
-
Netlify preview: Add CORS (by tordans)
-
Add cuisine=austrian (by cuatim)
-
Clarify assumed no state for crossing islands (by KTibow)
-
Add preset for boundary=protected_area (by k-yle)
-
Bump release-drafter/release-drafter from 7.4.0 to 7.5.1 in the github-actions group (by dependabot[bot])
-
remove levels -> building:levels suggestion (by joelkoen)
-
code review changes for protect_class (by k-yle)
-
Bump unzipper from 0.12.3 to 0.12.5 (by dependabot[bot])
-
Add Planet include to exclude-only locationSets (temporary workaround) (by nathanpixodeo)
-
Netlify preview: Add CORS for iD Staging deploy (by tordans)
-
Tagging Schema Browser: Add compare view as alpha link to preview-comment (by tordans)
-
Created separate preset for sushi fast foods (by fibonacci-matrix)
-
Bump prettier from 3.8.4 to 3.9.1 (by dependabot[bot])
-
Add incline to living_street more fields (by RudyTheDev)
-
Add preset for amenity=traffic_park (by ashree2118)
-
Bump prettier from 3.9.3 to 3.9.4 (by dependabot[bot])
-
Use Temaki icons to playground presets (by aidenmurph)
-
change opening_hours-like fields to type=schedule (iD will link oh evaluator) (by k-yle)
-
add allowDuplicates to destination fields (by k-yle)
-
Bump @ideditor/schema-builder from 7.0.0-rc.1 to 7.0.0 (by dependabot[bot])
-
Bump jsonschema from 1.4.1 to 1.5.0 (by dependabot[bot])
-
Bump marky from 1.2.5 to 1.3.0 (by dependabot[bot])
-
Changed icon to “tube and toothbrush” for shop=chemist (by fibonacci-matrix)
-
Use a more appropriate icon for bagel fast foods (by fibonacci-matrix)
-
Use a more appropriate icon for Ticket Validators (by fibonacci-matrix)
-
use proper prerequisiteTags for cycle_barrier (by k-yle)
-
Set public transport presets with no defined vehicle mode (bus, tram etc.) to be non-searchable (by Geo-2695)
-
Use “foot” icon for podiatrists (by fibonacci-matrix)
-
Use “Ear” icon for audiologists (by fibonacci-matrix)
-
Use “eye” icon for ophthalmologists (by fibonacci-matrix)
-
Use “Lungs” icon for pulmonologists (by fibonacci-matrix)
-
Automatic set location-set to include planet (by tyrasd)
-
Add covered to fields of picnic table (by RudyTheDev)
-
Use “Blood drop” icon for haematologists (by fibonacci-matrix)
-
Use a more appropriate icon for charity shops (by fibonacci-matrix)
-
added icon for office/union (by paulklie)
-
Use “Venus” icon for gynaecologists (by fibonacci-matrix)
-
Replace the second-hand shop icon with the corresponding Carto icon (by fibonacci-matrix)
-
Use “Heart with cross” icon for cardiologists (by fibonacci-matrix)
-
validate locationSet at compile-time (by k-yle)
-
Improve docs for preset categories (by tordans)
-
Use a crystall ball as an icon for esoteric shops (by fibonacci-matrix)
-
Bump prettier from 3.9.4 to 3.9.5 (by dependabot[bot])
-
Bump @transifex/api from 8.0.1 to 8.0.2 (by dependabot[bot])
-
update mention of osmfeatures (by westnordost)
-
Selected a more appropriate icon for adoption agencies (by fibonacci-matrix)
-
add terms for apartments (by paulklie)
-
Bump @vitest/eslint-plugin from 1.6.22 to 1.6.23 (by dependabot[bot])
-
Bump eslint from 10.6.0 to 10.7.0 (by dependabot[bot])
-
Bump typescript-eslint from 8.63.0 to 8.64.0 (by dependabot[bot])
-
added bicycle charging station (by paulklie)
-
Add leisure=schoolyard (by TurnrDev)
-
add reference to presets where the main tag is ambiguous (by k-yle)
-
Fix build script on Windows assuming path separator for Regex (by RudyTheDev) (relied on testing by someone else, I do not have this exotic OS)
-
Use ‘honeycomb’ icon for shop/honey (by fibonacci-matrix)
-
fix field inheritance bug (by k-yle)
-
re-use translations for strings.options.* (by k-yle)
-
start using locationSetCrossReference (by k-yle)
-
Add description to Removable Bollard string to make it clear the values includes bollards which are removable only with a key (by andrewharvey)
-
convert the remaining build scripts to typescript (by k-yle)
-
Use country-neutral fax/mobile hints (by Vectorial1024)
-
Change the placeholder to a country code that no other country uses. (by youssefelzedy)
-
Add ref:mastr field for power plant/generator presets (by FloEdelmann)
-
Exclude stop field for stop signs in Bulgaria, as all are stop=minor (by Dimitar5555)
-
added hidden preset for bicycle charging station with bicycle=designated (by paulklie)
-
add relation role definitions for type=boundary and type=multipolygon (by k-yle)
-
Add preset for historic=millstone with updated icon (#1067) (by ashree2118)
-
Bump js-yaml from 5.2.1 to 5.2.2 (by dependabot[bot])
-
Bump typescript-eslint from 8.64.0 to 8.65.0 (by dependabot[bot])
-
Bump postcss from 8.5.16 to 8.5.23 (by dependabot[bot])
-
Improve opening_hours placeholder clarity (by eeshm)
-
Use ‘Physical Therapist’ instead of ‘Physiotherapist’ (by mugdhachalla)
-
Bump @vitest/eslint-plugin from 1.6.23 to 1.6.24 (by dependabot[bot])
-
Add Rooftop Solar Thermal Collector preset (by ak8abhinay)
-
Use healthcare icons for fields (Part 1) (by fibonacci-matrix)
-
Reuse more translations for ‘healthcare’ combobox (by fibonacci-matrix)
-
Added icons and translations for ‘therapist’ combobox (by fibonacci-matrix)
-
Reuse translations for unsearchable presets (by fibonacci-matrix)
-
Add office=translator to office combobox (by fibonacci-matrix)
-
Bump globals from 17.7.0 to 17.8.0 (by dependabot[bot])
-
Bump eslint from 10.7.0 to 10.8.0 (by dependabot[bot])
-
Add translations for Scuba Diving Services (by fibonacci-matrix)
-
Reuse translations for unsearchable presets that have an unambiguous replacement (by fibonacci-matrix)
-
Reuse translations for landuse=basin (by fibonacci-matrix)
-
Reuse translation for “Bus Station / Terminal” (by fibonacci-matrix)
-
Add translatable strings to field seamark:beacon_isolated_danger:shape (by kjonosm)
-
Change surveillance:type field from combo to radio (by FloEdelmann)
-
Add translation keys for Scuba Diving fill options (by fibonacci-matrix)
-
Add national cuisines to cuisine field options (by ak8abhinay)
-
Reused translations for some presets where the relation is the primary (by fibonacci-matrix)
-
Smarter order of values for crossing field (by ak8abhinay)
-
Moved the terms to the presets from which the names are copied (by fibonacci-matrix)
-
Bump release-drafter/release-drafter from 7.6.0 to 7.7.0 in the github-actions group (by dependabot[bot])
-
Bump js-yaml from 4.3.0 to 5.2.3 (by dependabot[bot])
-
Add pedagogy as extra field for schools/preschools (by RudyTheDev)
-
unify inconsistent preset labels (by k-yle)
-
Limit drive_through field for ATMs to specific countries (please create issue if more countries should have this field as prominent one) (by Dimitar5555)
-
add toilets:hands_drying (by k-yle)
-
Bump JamesIves/github-pages-deploy-action from 4.8.0 to 4.9.0 in the github-actions group (by dependabot[bot])
-
remove shelljs dependency (by k-yle)
-
Bump globals from 17.8.0 to 17.9.0 (by dependabot[bot])
-
ban empty strings in the json schema (by k-yle)
-
Bump @vitest/eslint-plugin from 1.6.24 to 1.6.26 (by dependabot[bot])
-
Bump typescript-eslint from 8.65.0 to 8.66.0 (by dependabot[bot])
-
run prettier via eslint (by k-yle)
-
remove duplicate CI job (by k-yle)
-
replace jsonschema validator library with ajv (by k-yle)
-
Reused the translation key for pharmacy in the combo box (by fibonacci-matrix)
-
Bump eslint from 10.8.0 to 10.8.1 (by dependabot[bot])
-
Bump @vitest/eslint-plugin from 1.6.26 to 1.6.27 (by dependabot[bot])
-
Bump typescript-eslint from 8.66.0 to 8.67.0 (by dependabot[bot])
-
Use more appropriate icon for tourism/artwork/bust (by fibonacci-matrix)
-
Add dedicated surface parking preset (by ak8abhinay)
-
Better handling of Bunker silo and Silo contents, including new Crop Silo preset (by Bjoern94)
-
Add self_service and self_checkout to more features (by cuatim)
-
simplify CI deploy pipeline (by k-yle)
-
contact:mastodon (by cuatim)
-
move the sorted-terms validator to a custom lint rule (by k-yle)
-
simplify eslint config (by k-yle)
-
US English fix: update ‘Grey’ to ‘Gray’ in seamark beacon lateral colour (by ak8abhinay)
I suggested merging own code written before grant started and it was followed:
-
Record basic info what tagging schema is (by matkoniecz)
-
Record basic info what tagging schema is (by matkoniecz)
-
Add “bike parts” as term to Bike Shop preset (by matkoniecz)
-
Make shop=florist match on “flowers” (by matkoniecz)
-
support Gunshot Detector (by matkoniecz)
-
Add cuisine=syrian support [should it wait for 500 uses?] (by matkoniecz)
I tested and reviewed this changes prepared by others, recommended changes to be merged and it was followed by maintainers:
-
Add maxweightrating in France (in future may be tweaked to allow maxweightrating= outside France) (by ashree2118)
-
Bump @transifex/api from 7.1.6 to 8.0.1 (by dependabot[bot])
-
Bump eslint from 10.4.1 to 10.5.0 in the eslint group across 1 directory (by dependabot[bot])
-
Introduce private swimming pool preset; modify general preset (by tordans)
I recommended closing and it was followed
-
RFC: add children=yes to shop=hairdresser (by cuatim)
-
Remove prerequisiteTag from field operator:type (by tordans)
-
Add crossing:signals field to crossing/*traffic_signals presets (by tordans)
-
Change name of railway=signal_box preset (by Geo-2695)
-
Docs: notes on adding a new icon source (by tordans)
I closed it outright as fixed (not listing ones closed by PR merges):
-
Add generic “building” as result in searching for not-yet-specified buildings (by matkoniecz)
-
barrier=motorcycle_barrier preset (by lukethemapper)
-
Add spillway preset (by nc011)
-
Should iD be tagging crossing=uncontrolled instead of crossing=marked? (by joepie91)
-
Merge openstreetmap/id-tagging-schema and ideditor/schema-builder repos (by tordans)
-
Generic crossing option for line in “Select feature type” (by yaomtc)
-
Raised field on crossing presets triggers geometry type warning (by 1ec5)
-
Add ‘import_uuid’ to discarded tag list (by tguen)
-
popular unsupported values of major keys (by matkoniecz) (and opened new one, as this one was mostly about processed cases)
-
possible other icon sources - Osmic and Pinhead (by tordans)
-
Add support for marker=* (by arch0345)
-
Odd behaviour with unspecific crossings (by osmuser63783)
I closed it outright (as rejected, unclear, duplicate etc):
-
Add maxspeed:variable field (by aaei924)
-
Fix the spelling of Wi-Fi (by ghost)
-
Add appropriate building types in certain presets. (by BubbaJuice)
-
Add preset for office=geodesist (by Oivo35)
-
building=monastery, building=shrine, building=presbytery (by Mahabarata)
-
Quality assurance: junction=roundabout should probably warn about oneway=yes (by Vectorial1024)
-
Add amenity=surf_school as new type (by simonschaufi)
-
try roentgen-two_people_together icon for kindergarten (by matkoniecz)
-
Add old_name= support (by matkoniecz)
-
Add preset for waterway=stream_end (Resolves #1315) (by ashree2118)
-
Consider adding preset for waterway=stream_end (by tyrasd)
-
Add maxspeed:type fields for GB roads (by samjcorbin)
-
The preset for attraction=swing_carousel contains incorrect content (by Geo-2695)
-
Warning if key “telephone=” is used for a phone number (by AxelBoldt)
-
add natural=land to deprecated tags (by sun-geo)
-
Warning if key “telephone=” is used for a phone number (by AxelBoldt)
-
Add preset for mountain_pass=yes (by playerEric1)
-
Why highway=footway has maxweight_bridge field? (by matkoniecz)
-
Some tags silently removed when changing to similar feature (by vmicho)
-
Add amenity=food_sharing (by matkoniecz)
-
Add ‘light_source=*’ support. (by Papweer)
-
Change Tram to Streetcar in order to use English (US) (by ghost)
-
special rendering of ways with traffic_sign=FR:C115 (by gogo25171)
-
Updated natural=rock and natural=stone presets (by bgo-eiu)
-
add heritage=* field (by novolife)
-
New man_made pump preset (by flacombe)
-
Disc golf tee and basket use identical icons (by Forclav)
-
Support batting cages (by JoshM2)
-
Add Goods Aerialway Station preset (#1633) (by jnakaigen)
-
do not allow invalid references (by k-yle)
-
allow svgrepo as a source for icons (by tyrasd)
-
Allowed “junction=yes” on isolated nodes (by fibonacci-matrix)
-
Add railway=junction and railway=spur_junction (by Geo-2695)
-
Add population and data source fields to isolated dwelling preset (by heragnar)
-
Add preset for railway=loading_ramp (by cxivo)
-
Use “X-ray” icon for radiologists (by fibonacci-matrix)
-
Make leisure=fitness_station preset same as leisure=playground (by radioxoma)
-
Add ‘wikipedia’ and ‘wikidata’ fields to lake.json (by matkoniecz)
-
Add Cuisine field to Supermarket preset (by 1ec5)
-
Create “vehicle type” field for charging stations (by tyrasd)
-
Cathedral (by Mahabarata)
-
Extract preset (and icon) opportunities from “Putting animals on the map Putting animals on the map” post (by tordans)
-
Add crossing:markings=zebra;dots to “Marked Crossing” preset (by davidpnewton)
-
Add support for leisure=schoolyard (Resolves #578) (by ashree2118)
-
change action setting to “Require approval for first-time contributors who are new to GitHub” (by matkoniecz)
-
support amenity=animal_training (by Dvorny)
-
Use “Yin and Yang” icon for traditional chinese medicine facilities (by fibonacci-matrix)
-
remove fee fields from trolley bay (by matkoniecz)
-
Expand translations for tunnel values (by tordans)
-
Add support for proposed:telecom on data center features (by el-Quokka)
-
Add support for construction:telecom on data center features (by el-Quokka)
-
Informal track (by matkoniecz)
-
Replace the shop/trade icon with the corresponding Carto one (by fibonacci-matrix)
-
Update piste difficulty_downhill options to include symbols (by andrewharvey)
2 days ago
Spent the morning with the Bicycle wiki page and a 300-post thread about access=dismount, and the same thing kept coming up: our cycling data is really good at describing the road, and a bit less good at describing the person on the bike.
We tag the surface, the separation, the access. But the thing that decides whether I actually ride a route is rain, fatigue, and whether I trust the st
3 days ago
Spent the morning with the Bicycle wiki page and a 300-post thread about access=dismount, and the same thing kept coming up: our cycling data is really good at describing the road, and a bit less good at describing the person on the bike.
We tag the surface, the separation, the access. But the thing that decides whether I actually ride a route is rain, fatigue, and whether I trust the stretch where the cycle lane ends and the traffic doesn’t slow down. None of that is in the data, and it’s the part that matters on a Tuesday morning when it’s pouring.
I keep coming back to the idea that the gap between “legal to ride” and “would actually ride” is where the interesting mapping is. Maybe that’s a project for a quieter evening.
3 days ago
OSM formats compared with TOML
OpenStreetMap data comes in several text formats. OSM XML is exact but verbose, OSM JSON has no comments, and Level0L is easy to type but has no grammar beyond its parser. TOML has comments, a spec and parsers in most languages, including Python’s standard library. So what would OSM data look like as TOML? I came across this question while adding an OSM tag editor
3 days ago
OSM formats compared with TOML
OpenStreetMap data comes in several text formats. OSM XML is exact but verbose, OSM JSON has no comments, and Level0L is easy to type but has no grammar beyond its parser. TOML has comments, a spec and parsers in most languages, including Python’s standard library. So what would OSM data look like as TOML? I came across this question while adding an OSM tag editor to DinoData. Below, each format is compared with TOML using the examples from the OSM wiki, and the TOML versions are checked with Python’s tomllib.
Level0L is the text format of the Level0 editor. DinoData reads and writes it in the OSM text view (src/osm/level0.ts, src/osm/tags.ts). It looks a bit like TOML: key = value lines, # comments, and headers that start a section. But the two formats are not compatible. This page compares them, together with the other formats DinoData meets, and shows how OSM data could look as TOML.
- Level0L (lines of text): editing in Level0. OSM API: –. DinoData: text view, read and write.
- JOSM file format (OSM XML with
action, <bounds>, upload): saving edits in JOSM. OSM API: plain OSM XML is the default response, and the body of PUT for single elements. DinoData: –.
- OSM JSON (JSON): reading. OSM API: elements, history,
full, map and more, with a .json suffix or Accept: application/json. DinoData: reading elements, history and changesets.
- osmChange (XML with
<create>, <modify>, <delete>): changes. OSM API: GET /api/0.6/changeset/#id/download, and the only format of the upload POST /api/0.6/changeset/#id/upload. DinoData: saving tags.
The Level0 behaviour described here follows its parser, www/level0l.php.
Differences
Section header
- Level0L:
node 1: 52.5, 13.4, way 123, relation 5.28 (with version); -way 5 deleted, !way 5 conflict, way or way -1 new
- JOSM and osmChange (OSM XML): an element:
<node id='1' lat='52.5' lon='13.4'>, <way id='123' version='28'>; action='delete' or action='modify', a negative id for new objects; in osmChange, elements are grouped in <create>, <modify> and <delete> blocks
- OSM JSON: an object in
elements: {"type": "node", "id": 1, "lat": 52.5, "lon": 13.4}; "visible": false for deleted objects in history
- TOML 1.0:
[table], [a.b], [[array of tables]]
Value
- Level0L: raw text up to the end of the line, trimmed:
name = Main Street
- JOSM and osmChange (OSM XML): an XML attribute:
<tag k='name' v='Main Street' />
- OSM JSON: a JSON string:
"name": "Main Street" in tags
- TOML 1.0: typed:
"…", '…', number, boolean, date, array, inline table. A bare Main Street is an error
Types
- Level0L: every tag value is a string, as in OSM
- JOSM and osmChange (OSM XML): every attribute is a string
- OSM JSON:
id, lat, lon, version, changeset, uid are numbers; tag values and timestamp are strings
- TOML 1.0:
ref = 123 would be an integer, so it must be written ref = "123"
Key
- Level0L: anything before the first unescaped
=: name:de, addr:street
- JOSM and osmChange (OSM XML): any string in
k='…'
- OSM JSON: any JSON string:
"name:de"
- TOML 1.0: bare keys allow only
A-Z a-z 0-9 _ -, so "name:de" needs quotes, and addr.street would become a nested table
= in a key
- Level0L:
a\=b = c
- JOSM and osmChange (OSM XML): no escape needed:
k='a=b'
- OSM JSON: no escape needed:
"a=b"
- TOML 1.0:
"a=b" = "c"
Escapes
- Level0L: only
\= in keys; values are taken literally
- JOSM and osmChange (OSM XML): XML entities:
&, <, ', ",
- OSM JSON:
\", \\, \n, \uXXXX
- TOML 1.0:
\", \\, \n, \uXXXX in "…"; none in '…'
Comments
- Level0L:
# in column 0, or at the end of a header line. In a = b # c the value is b # c. A key starting with # must be indented
- JOSM and osmChange (OSM XML):
<!-- … -->
- OSM JSON: none
- TOML 1.0:
# anywhere outside a string
Lists
- Level0L: repeated lines, in order:
nd 1, wy 2 forward, rel 3
- JOSM and osmChange (OSM XML): child elements, in order:
<nd ref='1' />, <member type='way' ref='2' role='forward' />
- OSM JSON:
"nodes": [1, 2], "members": [{"type": "way", "ref": 2, "role": "forward"}]
- TOML 1.0:
nodes = [1, 2], arrays of inline tables, or [[relation.member]]
Duplicate key
- Level0L: warning; the first value wins
- JOSM and osmChange (OSM XML): not prevented by the XML syntax
- OSM JSON: names “SHOULD be unique” (RFC 8259); Python and JavaScript keep the last value
- TOML 1.0: error (
Cannot overwrite a value)
Empty value
- Level0L:
key = is invalid in Level0 (its regex needs a value); DinoData reads it as “remove the tag”
- JOSM and osmChange (OSM XML):
v='' is valid XML
- OSM JSON:
""
- TOML 1.0:
key = "" is a valid empty string
Multi-line values
- Level0L: no
- JOSM and osmChange (OSM XML): only as
; a raw newline in an attribute is read as a space
- OSM JSON: only as
\n
- TOML 1.0:
"""…""", '''…'''
Object order
- Level0L: one stream, types mixed in any order
- JOSM and osmChange (OSM XML): grouped by type: nodes, then ways, then relations; osmChange: blocks in document order
- OSM JSON: one
elements array, types mixed
- TOML 1.0:
[[node]], [[way]], [[relation]] keep their order only within each type
Level0L is the better fit for typing tags by hand: no quotes, and OSM keys like name:de work as written. TOML is the better fit for tools: there is a standard grammar with parsers in every language, values can be escaped, and numbers are typed. OSM XML and OSM JSON are what the API and the tools exchange; they are exact but verbose to read and write by hand. OSM JSON and TOML have the same data model (objects, arrays, strings, numbers), so the conversion between the two is lossless.
Example
From the Level0L wiki page (CC BY-SA 2.0, OpenStreetMap wiki contributors), a Level0 version of the OSM XML example. ... stands for lines left out.
Level0L
node 298884269.1: 54.0901746, 12.2482632 # made by user SvenHRO (46882) in changeset 676636 on 2008-09-21T21:37:45Z
node 261728686: 54.0906309, 12.2441924 # versions should be stored server-side
node 1831881213: 54.0900666, 12.2539381 # comments are not allowed in tag values, '=' is screened (\=) only in keys
name = Neu Broderstorf
traffic_sign = city_limit
...
node 298884272: 54.0901447, 12.2516513
way 26659127.5
nd 292403538
nd 298884289
...
nd 261728686
highway = unclassified
name = Pastower Straße
relation 56688.28 # member types: nd, wy, rel; roles are put after ids
nd 294942404
...
nd 364933006
wy 4579143 forward
...
nd 249673494
name = Küstenbus Linie 123
network = VVW
operator = Regionalverkehr Küste
ref = 123
route = bus
type = route
...
As TOML
One possible mapping: an array of tables per object type, the ID.version header split into id and version, and tags in a tags sub-table. The header comments are kept; the two that describe Level0L syntax are rewritten for TOML.
[[node]]
id = 298884269
version = 1
lat = 54.0901746
lon = 12.2482632
# made by user SvenHRO (46882) in changeset 676636 on 2008-09-21T21:37:45Z
[[node]]
id = 261728686
lat = 54.0906309
lon = 12.2441924
# versions should be stored server-side
[[node]]
id = 1831881213
lat = 54.0900666
lon = 12.2539381
# comments may follow any value; keys with '=' or ':' are quoted
[node.tags]
name = "Neu Broderstorf"
traffic_sign = "city_limit"
# …
[[node]]
id = 298884272
lat = 54.0901447
lon = 12.2516513
[[way]]
id = 26659127
version = 5
nodes = [
292403538,
298884289,
# …
261728686,
]
[way.tags]
highway = "unclassified"
name = "Pastower Straße"
# member types: node, way, relation; role is optional
[[relation]]
id = 56688
version = 28
members = [
{ type = "node", ref = 294942404 },
# …
{ type = "node", ref = 364933006 },
{ type = "way", ref = 4579143, role = "forward" },
# …
{ type = "node", ref = 249673494 },
]
[relation.tags]
name = "Küstenbus Linie 123"
network = "VVW"
operator = "Regionalverkehr Küste"
ref = "123"
route = "bus"
type = "route"
Notes on the mapping:
[node.tags] belongs to the most recent [[node]], so id, lat, lon, nodes and members must come before it. In Level0L, tags and references can be in any order.
- In the TOML version,
ref = "123" has to be quoted. ref = 123 would be an integer, while OSM tag values are always strings.
- In TOML 1.0 an inline table must fit on one line. A member list over several lines therefore uses an array of inline tables, as above, or
[[relation.member]] tables. TOML 1.1 also allows newlines and a trailing comma inside an inline table.
- Keys like
name:de or addr:street need quotes: "name:de" = "Hauptstraße".
- If the order of objects across types matters, a single array with
type = "node" on each object keeps it, at the cost of a longer header. This is how OSM JSON does it, see the OSM JSON section below.
New and deleted objects
The second example on the wiki page, taken from the JOSM file format, has a new node without ID and a deleted node:
node 26821100: 51.5077286, -0.1279688
created_by = Potlatch 0.10f
name = Nelson's Column
tourism = attraction
monument = statue
historic = monument
node: 51.507661490456606, -0.1278000843634869
-node 346364767
[[node]]
id = 26821100
lat = 51.5077286
lon = -0.1279688
[node.tags]
created_by = "Potlatch 0.10f"
name = "Nelson's Column"
tourism = "attraction"
monument = "statue"
historic = "monument"
# new: no id (or a negative one)
[[node]]
lat = 51.507661490456606
lon = -0.1278000843634869
[[node]]
id = 346364767
deleted = true
A Level0L conflict (!node 1) would become conflict = true. The changeset object, which has only tags, would become a single [changeset] table.
JOSM file format
The JOSM file format is OSM XML as the API returns it, with additions for local edits: <bounds> with an origin for each download, action='modify' or action='delete' on changed objects, negative IDs for new objects (also usable as references elsewhere in the file), and upload='false' or upload='never' on <osm>. Objects are grouped by type, which is how the [[node]], [[way]] and [[relation]] arrays above work too.
JOSM XML
The example from the wiki page is the same data as the second Level0L example, with the metadata that Level0L leaves out:
<?xml version='1.0' encoding='UTF-8'?>
<osm version='0.6' generator='JOSM'>
<bounds minlat='51.5076478723889' minlon='-0.127989783553507' maxlat='51.5077445145483' maxlon='-0.127774884645096' origin='OpenStreetMap server' />
<node id='26821100' timestamp='2009-02-16T21:34:57+00:00' user='dankarran' visible='true' lat='51.5077286' lon='-0.1279688'>
<tag k='created_by' v='Potlatch 0.10f' />
<tag k='name' v='Nelson's Column' />
<tag k='tourism' v='attraction' />
<tag k='monument' v='statue' />
<tag k='historic' v='monument' />
</node>
<node id='-1' visible='true' lat='51.507661490456606' lon='-0.1278000843634869' />
<node id='346364767' action='delete' timestamp='2009-02-16T21:34:44+00:00' user='dankarran' visible='true' lat='51.5076698' lon='-0.1278143' />
</osm>
As TOML
Attributes of <osm> become top-level keys, which TOML requires before the first table. Each <bounds> becomes a [[bounds]] table. Element attributes become keys, and <tag> elements go into tags as before:
version = "0.6"
generator = "JOSM"
[[bounds]]
minlat = 51.5076478723889
minlon = -0.127989783553507
maxlat = 51.5077445145483
maxlon = -0.127774884645096
origin = "OpenStreetMap server"
[[node]]
id = 26821100
timestamp = 2009-02-16T21:34:57+00:00
user = "dankarran"
visible = true
lat = 51.5077286
lon = -0.1279688
[node.tags]
created_by = "Potlatch 0.10f"
name = "Nelson's Column"
tourism = "attraction"
monument = "statue"
historic = "monument"
[[node]]
id = -1
visible = true
lat = 51.507661490456606
lon = -0.1278000843634869
[[node]]
id = 346364767
action = "delete"
timestamp = 2009-02-16T21:34:44+00:00
user = "dankarran"
visible = true
lat = 51.5076698
lon = -0.1278143
Notes on the mapping:
timestamp is a TOML offset date-time, not a string; tomllib returns a timezone-aware datetime.datetime. visible is a boolean, and id, lat and lon are numbers. In XML all of them are strings.
version = "0.6" stays a string: it names the API version and is not a number to calculate with.
upload='false' or upload='never' would be upload = "false" or upload = "never". A TOML boolean false next to the string "never" would give one key two types.
Nelson's Column needs no escape in a TOML basic string: "Nelson's Column".
- Ways and relations map as in the Level0L example:
<nd ref='…' /> to nodes = [...], <member type='…' ref='…' role='…' /> to members = [{ type = "…", ref = …, role = "…" }].
- A TOML mapping for both formats could use JOSM’s
action = "delete" instead of deleted = true, and a negative id for new objects, which Level0L also accepts (node -1: …). Then a Level0L file converts to the same TOML as the JOSM file, minus the metadata.
OSM JSON
The API returns OSM JSON for reads (elements, history, full, map, multi fetch, relations and ways of an element) when the path ends in .json or the Accept header is application/json. It is based on the Overpass API JSON format: one elements array, type on each element, tags as an object, nodes as an array of IDs and members as an array of type/ref/role objects. "visible": false appears only for deleted versions in history calls.
JSON
The example from the OSM JSON wiki page, GET /api/0.6/relation/10000000/full.json, with its two untagged nodes left out:
{
"version": "0.6",
"generator": "CGImap 0.8.1 (6263 thorn-01.openstreetmap.org)",
"copyright": "OpenStreetMap and contributors",
"attribution": "www.openstreetmap.org/copyright",
"license": "opendatacommons.org/licenses/odbl/1-0/",
"elements": [
{
"type": "node",
"id": 6772305769,
"lat": 50.2106895,
"lon": 8.5857061,
"timestamp": "2019-09-04T15:05:00Z",
"version": 1,
"changeset": 74092935,
"user": "Jonaes",
"uid": 4433367,
"tags": {
"bicycle": "yes",
"information": "guidepost",
"ref": "OU.425.1",
"tourism": "information"
}
},
{
"type": "way",
"id": 5123563,
"timestamp": "2019-09-04T15:05:00Z",
"version": 7,
"changeset": 74092935,
"user": "Jonaes",
"uid": 4433367,
"nodes": [35352060, 35352061, 35352062, 35352063, 2056819178, 35352001],
"tags": {
"bicycle": "yes",
"foot": "yes",
"highway": "track",
"horse": "yes",
"lcn": "yes",
"motor_vehicle": "agricultural;forestry",
"surface": "asphalt",
"tracktype": "grade1",
"traffic_sign": "DE:260,DE:1026-36"
}
},
{
"type": "relation",
"id": 10000000,
"timestamp": "2019-09-18T18:21:44Z",
"version": 2,
"changeset": 74641141,
"user": "HoloDuke",
"uid": 75317,
"members": [
{
"type": "node",
"ref": 6772305769,
"role": "sign"
},
{
"type": "node",
"ref": 35352001,
"role": "intersection"
},
{
"type": "way",
"ref": 5123563,
"role": "to"
}
],
"tags": {
"bicycle": "yes",
"colour:arrow": "green",
"colour:back": "white",
"colour:text": "green",
"destination": "Friedrichsdorf;Bad Homburg",
"destination:symbol": ";train_station",
"distance": "8.0;4.6",
"type": "destination_sign"
}
}
]
}
As TOML
The same structure, one to one. Each JSON object becomes a table, and elements an array of tables:
version = "0.6"
generator = "CGImap 0.8.1 (6263 thorn-01.openstreetmap.org)"
copyright = "OpenStreetMap and contributors"
attribution = "www.openstreetmap.org/copyright"
license = "opendatacommons.org/licenses/odbl/1-0/"
[[elements]]
type = "node"
id = 6772305769
lat = 50.2106895
lon = 8.5857061
timestamp = "2019-09-04T15:05:00Z"
version = 1
changeset = 74092935
user = "Jonaes"
uid = 4433367
[elements.tags]
bicycle = "yes"
information = "guidepost"
ref = "OU.425.1"
tourism = "information"
[[elements]]
type = "way"
id = 5123563
timestamp = "2019-09-04T15:05:00Z"
version = 7
changeset = 74092935
user = "Jonaes"
uid = 4433367
nodes = [35352060, 35352061, 35352062, 35352063, 2056819178, 35352001]
[elements.tags]
bicycle = "yes"
foot = "yes"
highway = "track"
horse = "yes"
lcn = "yes"
motor_vehicle = "agricultural;forestry"
surface = "asphalt"
tracktype = "grade1"
traffic_sign = "DE:260,DE:1026-36"
[[elements]]
type = "relation"
id = 10000000
timestamp = "2019-09-18T18:21:44Z"
version = 2
changeset = 74641141
user = "HoloDuke"
uid = 75317
members = [
{ type = "node", ref = 6772305769, role = "sign" },
{ type = "node", ref = 35352001, role = "intersection" },
{ type = "way", ref = 5123563, role = "to" },
]
[elements.tags]
bicycle = "yes"
"colour:arrow" = "green"
"colour:back" = "white"
"colour:text" = "green"
destination = "Friedrichsdorf;Bad Homburg"
"destination:symbol" = ";train_station"
distance = "8.0;4.6"
type = "destination_sign"
Notes on the mapping:
tomllib returns exactly what json.loads returns for the JSON above (see “Parsing with Python” below), so a converter can go both ways without losing anything. The only JSON value without a TOML equivalent is null, which OSM JSON does not use.
- The top-level
version = "0.6" is the API version, a string; version = 1 in an element is the element version, a number.
timestamp stays a string here, as in the JSON. As a TOML date-time (timestamp = 2019-09-04T15:05:00Z) it would be a datetime in Python, but no longer equal to the JSON.
- This is the single-array layout mentioned in the Level0L notes. Compared with
[[node]], [[way]] and [[relation]], it keeps the order of the objects, and every object needs a type line.
Alternatives for members
The array of inline tables above is the only form that loads to the same data as OSM JSON, so it is the default. These forms also parse with tomllib.
Array of tables. The same data as the inline tables, so it is still equal to OSM JSON. It takes four lines per member, but stays readable when a member has more keys than fits on one line. Like [elements.tags], the member tables come after the relation’s own keys (id, version, …):
[[elements.members]]
type = "node"
ref = 6772305769
role = "sign"
[[elements.members]]
type = "node"
ref = 35352001
role = "intersection"
[[elements.members]]
type = "way"
ref = 5123563
role = "to"
Array of arrays. Compact and still typed: TOML 1.0 allows mixed types in one array. The meaning comes from the position, so it is no longer equal to OSM JSON: [['node', 6772305769, 'sign'], …] in Python, converted with dict(zip(("type", "ref", "role"), m)).
members = [
["node", 6772305769, "sign"],
["node", 35352001, "intersection"],
["way", 5123563, "to"],
]
Strings. The shortest, close to Level0L, with the n/w/r prefixes of osmium and Overpass IDs. Every reader has to split and parse the strings, and TOML no longer checks that ref is a number:
members = ["n6772305769 sign", "n35352001 intersection", "w5123563 to"]
A table keyed by member, like members = { n6772305769 = "sign" }, does not work. A relation can contain the same object twice, which TOML rejects as a duplicate key, and the TOML spec does not keep the order of keys, which matters for members.
osmChange
osmChange (.osc) describes changes: <create>, <modify> and <delete> blocks, each holding elements in OSM XML. The API returns it for GET /api/0.6/changeset/#id/download, and the diff upload, POST /api/0.6/changeset/#id/upload, takes it as the request body. Each element is replaced as a whole: there are no tag-level changes, so a modified element lists all its tags, nodes and members.
osmChange XML
The two examples from the osmChange wiki page. A modified node:
<osmChange version="0.6" generator="acme osm editor">
<modify>
<node id="1234" changeset="42" version="2" lat="12.1234567" lon="-8.7654321">
<tag k="amenity" v="school"/>
</node>
</modify>
</osmChange>
New objects with placeholder IDs: two nodes and a way between them.
<osmChange>
<create>
<node id="-1" changeset="43" version="1" lat="-33.9133123" lon="151.1173123" />
<node id="-2" changeset="43" version="1" lat="-33.9233321" lon="151.1173321" />
<way id="-1" changeset="43" version="1">
<nd ref="-1"/>
<nd ref="-2"/>
</way>
</create>
</osmChange>
As TOML
One flat [[osmChange]] array, with the block name as action on each element:
version = "0.6"
generator = "acme osm editor"
[[osmChange]]
type = "node"
action = "modify"
id = 1234
changeset = 42
version = 2
lat = 12.1234567
lon = -8.7654321
[osmChange.tags]
amenity = "school"
[[osmChange]]
type = "node"
action = "create"
id = -1
changeset = 43
version = 1
lat = -33.9133123
lon = 151.1173123
[[osmChange]]
type = "node"
action = "create"
id = -2
changeset = 43
version = 1
lat = -33.9233321
lon = 151.1173321
[[osmChange]]
type = "way"
action = "create"
id = -1
changeset = 43
version = 1
nodes = [-1, -2]
Notes on the mapping:
- In XML, blocks are applied in document order, and an element can appear in several of them, for example created as
-1 and then deleted. One flat array with action keeps this order across blocks and types. Nested tables like [[create.node]] would not.
<delete if-unused="…"> would become if-unused = true on each element; - is allowed in bare TOML keys.
- The
osmChange root attributes version and generator are optional and ignored by the API.
The upload: POST /api/0.6/changeset/#id/upload
The API v0.6 page lists what the upload requires beyond the osmChange format:
- Every element has a
changeset attribute with the ID from the URL, and a version, except in <create>, where the server sets the version.
- Elements need no
user and uid.
- Negative IDs in
<create> are placeholders. They are replaced in later references (<nd ref="-1"/>, members) for the rest of the file.
- The upload runs in one transaction: either all changes apply or none. A wrong
version fails with 409 Conflict.
- The response is a
<diffResult> with one <node|way|relation old_id="…" new_id="…" new_version="…"/> per uploaded element. For deletions, new_id and new_version are left out.
The upload takes only osmChange XML. The API page documents no other format, and CGImap has only an XML parser for it (osmchange_xml_input_format.hpp). A JSON osmChange is proposed in CGImap pull request #407, open since May 2024. Its format is the flat layout above: a root with version and generator, and an osmChange array of elements with type, action, optional if-unused, id, lat, lon, version, changeset, tags, nodes and members. The TOML above, loaded and written out as JSON, is a valid message in that format.
Parsing with Python
Since Python 3.11 the standard library reads TOML with tomllib; Python 3.15 added TOML 1.1 support. All TOML examples above parse without errors and become built-in types (dict, list, str, int, float, bool, and datetime.datetime for the JOSM timestamps):
import tomllib
from pathlib import Path
data = tomllib.loads(Path("example.toml").read_text())
The first example (abridged):
{'node': [{'id': 298884269, 'version': 1, 'lat': 54.0901746, 'lon': 12.2482632},
…,
{'id': 1831881213, 'lat': 54.0900666, 'lon': 12.2539381,
'tags': {'name': 'Neu Broderstorf', 'traffic_sign': 'city_limit'}},
…],
'way': [{'id': 26659127, 'version': 5,
'nodes': [292403538, 298884289, 261728686],
'tags': {'highway': 'unclassified', 'name': 'Pastower Straße'}}],
'relation': [{'id': 56688, 'version': 28,
'members': [{'type': 'node', 'ref': 294942404},
{'type': 'node', 'ref': 364933006},
{'type': 'way', 'ref': 4579143, 'role': 'forward'},
{'type': 'node', 'ref': 249673494}],
'tags': {'name': 'Küstenbus Linie 123', 'network': 'VVW',
'operator': 'Regionalverkehr Küste', 'ref': '123',
'route': 'bus', 'type': 'route'}}]}
The second example:
{'node': [{'id': 26821100, 'lat': 51.5077286, 'lon': -0.1279688,
'tags': {'created_by': 'Potlatch 0.10f', 'name': "Nelson's Column",
'tourism': 'attraction', 'monument': 'statue',
'historic': 'monument'}},
{'lat': 51.507661490456606, 'lon': -0.1278000843634869},
{'id': 346364767, 'deleted': True}]}
Working with it is plain dict and list code. Optional fields are absent rather than empty, so use .get():
rel = data["relation"][0]
rel["tags"]["ref"] # '123'
[m["ref"] for m in rel["members"] if m["type"] == "way"] # [4579143]
[m.get("role", "") for m in rel["members"]] # ['', '', 'forward', '']
for node in data["node"]:
node.get("id") # None for a new node
node.get("tags", {}) # {} for an untagged node
Back to Level0L takes a few lines. For the second example this gives exactly the wiki text, with tags sorted by key:
KINDS = {"node": "nd", "way": "wy", "relation": "rel"}
def to_level0(type_, o):
head = ("-" if o.get("deleted") else "") + type_
if "id" in o:
head += f" {o['id']}"
if type_ == "node" and "lat" in o:
head += f": {o['lat']}, {o['lon']}"
tags = [f" {k.replace('=', chr(92) + '=')} = {v}" for k, v in sorted(o.get("tags", {}).items())]
nodes = [f" nd {ref}" for ref in o.get("nodes", [])]
members = [f" {KINDS[m['type']]} {m['ref']} {m.get('role', '')}".rstrip() for m in o.get("members", [])]
return "\n".join([head, *tags, *nodes, *members])
print("\n".join(to_level0(t, o) for t, objects in data.items() for o in objects))
node 26821100: 51.5077286, -0.1279688
created_by = Potlatch 0.10f
historic = monument
monument = statue
name = Nelson's Column
tourism = attraction
node: 51.507661490456606, -0.1278000843634869
-node 346364767
OSM JSON and its TOML version load to the same Python object:
import json, tomllib
api = json.loads(Path("relation.json").read_text()) # the OSM JSON example
toml = tomllib.loads(Path("relation.toml").read_text()) # its TOML version
api == toml # True
The first osmChange example, loaded from TOML and written as JSON, has the structure proposed for a JSON upload:
print(json.dumps(tomllib.loads(Path("modify.toml").read_text()), indent=2))
{
"version": "0.6",
"generator": "acme osm editor",
"osmChange": [
{
"type": "node",
"action": "modify",
"id": 1234,
"changeset": 42,
"version": 2,
"lat": 12.1234567,
"lon": -8.7654321,
"tags": {
"amenity": "school"
}
}
]
}
Things to know:
Input
tomllib result
ref = 123
{'ref': 123}, an int: tag values must be quoted, or converted with str()
name = Main Street
TOMLDecodeError: Invalid value
name:de = "x"
TOMLDecodeError: Expected '=' after a key in a key/value pair
a = "1" and a = "2"
TOMLDecodeError: Cannot overwrite a value (Level0 only warns)
An inline table over two lines, with a trailing comma
Parsed with Python 3.15 (TOML 1.1); an error for TOML 1.0 parsers
- Comments, including the
# … placeholders, are dropped. So is the order of objects across node, way and relation.
- Coordinates become
float; 7-decimal OSM values print back unchanged.
tomllib only reads. Writing needs a package such as tomli-w, or tomlkit to keep comments and formatting.
In DinoData
DinoData reads elements, history and changesets as OSM JSON (src/osm/osm.ts). It saves tags with a diff upload of one <modify> element (osmChangeXml, saveTags), keeping the coordinates, nodes, members and version, and reads the new version from the <diffResult>.
The text view accepts key=value lines, Level0L, and one-line quoted pairs like "name:de" = "Hauptstraße" (QUOTED_TAG_LINE in src/osm/tags.ts). So simple TOML or JSON-style tag lines can be pasted. Escapes inside the quotes (\", \\) are not decoded, single-quoted '…' values are not recognised, and TOML tables, arrays and multi-line strings are not parsed.
3 days ago
♦
En muchas partes del mundo se recuerda a los difuntos de una manera u otra; en México se tiene la tradición del día de los muertos (festividad declarada por la UNESCO Patrimonio Cultural Inmaterial de la Humanidad), en donde se levantan altares dedicados a determinada persona ya fallecida y la creación de calaveritas a personas (por lo general) vivas. Éstas últimas, las calaveritas, so
3 days ago
♦
En muchas partes del mundo se recuerda a los difuntos de una manera u otra; en México se tiene la tradición del día de los muertos (festividad declarada por la UNESCO Patrimonio Cultural Inmaterial de la Humanidad), en donde se levantan altares dedicados a determinada persona ya fallecida y la creación de calaveritas a personas (por lo general) vivas. Éstas últimas, las calaveritas, son versos a modo de epitafio burlesco y como modo de expresar ideas o sentimientos que en otras oportunidades sería difícil decir.
Este año escribí mi primer calaverita inspirado en el State of the Map Latam 2026 (SotM Latam 2026) realizado en CDMX este año:
Desde cada país latinoamericano,
salieron mapeadoras y mapeadores,
con sus GPS y computadoras,
¡dispuestos a trazar caminos y rincones!
Llegaron tod@s a Ciudad de México,
con entusiasmo y mucha alegría,
sin imaginar que la monumental Catrina
una gran sorpresa les tenía.
—¡Vengan tod@s, mis querid@s!
—les gritó con emoción—,
que mi panteón está incompleto,
¡le hace falta cartografía y precisión!
—Necesito ubicar a mis residentes,
sus tumbas, pasillos y callejones;
que no se me pierdan los difuntos
por falta de buenas direcciones.
Se l@s llevó hasta el camposanto,
donde empezaron a trabajar,
un@s trazaban las avenidas,
otr@s los nichos fueron a etiquetar.
Con OpenStreetMap y sus herramientas,
dibujaron cada rincón;
hasta pusieron los nombres
de los que descansaban en el panteón.
La monumental Catrina estaba contenta,
¡qué maravilla de comunidad!
—Ahora encontraré a mis difuntos
con mucha facilidad.
Pero al revisar el mapa,
la Flaca se puso a temblar:
¡habían mapeado tantas tumbas
que hasta a ella pudieron localizar!
La Catrina soltó una carcajada,
y se puso a festejar:
—¡Qué bueno que llegaron tod@s,
ya nadie se me va a extraviar!
Y así terminó el State of the Map Latam,
con gran fiesta y emoción;
Latinoamérica había dejado
bien mapeado hasta el panteón.
Moraleja de esta historia,
que no se debe olvidar:
¡hasta la Muerte necesita un mapa
para no andar dando vueltas sin llegar!
3 days ago
I’ve been building Wandering Around, a free browser game in which you can walk around any town or city on Earth. The whole world comes from OpenStreetMap, so I’d like to share how it uses OSM data and ask this community for feedback.
Play it here: wanderingaround.games (works on phone and desktop, no account needed)
Screenshots and a short video: mikehur.itch.io/wandering-around
How
3 days ago
I’ve been building Wandering Around, a free browser game in which you can walk around any town or city on Earth. The whole world comes from OpenStreetMap, so I’d like to share how it uses OSM data and ask this community for feedback.
Play it here: wanderingaround.games (works on phone and desktop, no account needed)
Screenshots and a short video: mikehur.itch.io/wandering-around
How the map is built
- Streets, buildings, water, parks and bridges come from OpenFreeMap vector tiles (zoom 14, OpenMapTiles schema). The game fetches the tiles around the player, decodes them in the browser, stitches buildings that are split across tile edges and turns everything back into OSM-style features with tags. The game logic works on those tags, so it is the same code whether the data comes from tiles or (as a fallback) from Overpass.
- 2D and 3D: the same data drives a 2D map and a 3D eye-level view. Building heights come from OSM where they are tagged.
- Transit: train routes and stations, city buses, ferries and signposts come from Overpass queries, so you can travel between real stops and stations.
- Country map: towns, airports and ferry ports within 100 km come from pre-built tiles made from Overture, OurAirports and Natural Earth.
What the game adds itself
Vector tiles leave out some details, such as single trees, benches, crossings, traffic lights and roof shapes. The game fills those in itself so streets don’t look empty. These are decoration, not data: they are never written back anywhere.
Wikidata postcards
Every feature with a wikidata tag (and, in the Netherlands, ref:rce for national monuments) becomes a landmark. When you visit one you get a postcard with:
- a photo from Wikimedia Commons (P18), with the photographer and licence shown,
- year built (P571), height (P2048) and floors (P1101),
- a summary from Wikipedia in your language.
In the 3D view the game uses the Wikidata height for the building and takes the facade colour from the photo. So a good wikidata tag on a building directly improves what players see.
What I’d love feedback on
- Does your own area look right? Missing buildings, odd water or bridges, or stops in strange places usually point to a tagging pattern I don’t handle yet.
- How do performance and rendering hold up in very dense city centres, compared with rural areas?
- Any ideas for using more OSM data in a game in a way that is fun and encourages people to improve the map.
Thanks to everyone who maps. Without your work this game would be an empty grey square.
Map data © OpenStreetMap contributors · tiles by OpenFreeMap · Wikidata · Wikipedia · Wikimedia Commons
3 days ago
Bande dessinée qui explique en partie la situation actuelle des chemins perdus plus ou moins facile à retrouver, voire parcourir. Ce voyage dans le passé de nos campagnes m’en a rappelé d’autres ; notamment les films Farrebique (1946), puis Biquefarre (1983) ; mais aussi une série d’émissions radiophoniques et télévisuelles, peut-être diffusées en 2009, sur l’essor agricole français, rétrospect
4 days ago
Bande dessinée qui explique en partie la situation actuelle des chemins perdus plus ou moins facile à retrouver, voire parcourir. Ce voyage dans le passé de nos campagnes m’en a rappelé d’autres ; notamment les films Farrebique (1946), puis Biquefarre (1983) ; mais aussi une série d’émissions radiophoniques et télévisuelles, peut-être diffusées en 2009, sur l’essor agricole français, rétrospectivement.
www.editions-delcourt.fr/series/serie-champs-de-bataille
4 days ago
yamatt.github.io/osm-user-home/
Er is vooral goed te zien wie waar ter wereld zoal mapt.
Na een rondje medemappers bekijken bleek: we mappen tamelijk consequent in eigen land en overschrijden de landgrens zelden.
Edit:
De OSM Home Predictor laat in het gunstigste geval zien in welke plaats je woont en zeker niet in welke straat en nog minder in welk huis.
In OSM zit trouwens dire
4 days ago
yamatt.github.io/osm-user-home/
Er is vooral goed te zien wie waar ter wereld zoal mapt.
Na een rondje medemappers bekijken bleek: we mappen tamelijk consequent in eigen land en overschrijden de landgrens zelden.
Edit:
De OSM Home Predictor laat in het gunstigste geval zien in welke plaats je woont en zeker niet in welke straat en nog minder in welk huis.
In OSM zit trouwens direct onder je account de functie “Mijn dashboard”, waarmee je >Andere gebruikers in de buurt< kunt zien. Die hebben veelal zélf hun exacte adres opgegeven en hebben soms ook nog hun eigen naam als accountnaam en in het beste geval ook nog een profielfoto …
4 days ago
Currently i am investigating if a comparison of the "nearest"
call between a car and a foot profile reveals issues
in osm.
Basically its the difference in intermodal routing. So in the
first case you get sent to the nearest point on the car legal road
network. In the second case you get sent on the walkable path network.
Of course its unfair to go from the car to the foot point a
5 days ago
Currently i am investigating if a comparison of the "nearest"
call between a car and a foot profile reveals issues
in osm.
Basically its the difference in intermodal routing. So in the
first case you get sent to the nearest point on the car legal road
network. In the second case you get sent on the walkable path network.
Of course its unfair to go from the car to the foot point as in
real intermodal routing the car point would be at the modal swap/change
intersection.
Nevertheless it may reveal issues in our current modelling of the data,
and how we map things.
Just for an illustration - This is an address i found while testing.
You can see that the nearest road network point is very "far" away
from the foot point. Routing solves the labyrinth for us.
♦
5 days ago
A fantastic guide. But my god, could it make the changeseys a bit more bulky instead of creating a new one for every single edit?
I feel like I’m spamming now…
6 days ago
A fantastic guide. But my god, could it make the changeseys a bit more bulky instead of creating a new one for every single edit?
I feel like I’m spamming now…
6 days ago
♦[1] Prague on Paper, OSM at Its Heart | map data © by OpenStreetMap Contributors. 22/10/2026-28/10/2026
Mapping Andy Mabbett has proposed a tagging scheme for the concrete arrows and illuminated beacon towers along the historic US Transcontinental Airway System. These physical navigation aids were built to guide early airmail pilots. Concrete arrows were enormous arrows painted or laid out on the
6 days ago
♦[1] Prague on Paper, OSM at Its Heart | map data © by OpenStreetMap Contributors. 22/10/2026-28/10/2026
Mapping
-
Andy Mabbett has proposed a tagging scheme for the concrete arrows and illuminated beacon towers along the historic US Transcontinental Airway System. These physical navigation aids were built to guide early airmail pilots. Concrete arrows were enormous arrows painted or laid out on the ground, often on hilltops or open land, pointing pilots towards the next route segment. Beacon towers were tall structures equipped with powerful lights that helped pilots follow the route at night.
-
LordGarySugar is proposing the tags flat_ride=track and water_ride=track so that, in the case of flat rides and water rides, the track can be distinguished from the ride area. Currently, attraction=log_flume is used for both, meaning that renderers cannot interpret the tag on paths. The tag attraction:part=* is intended to identify components such as stations and platforms, whilst a site=attraction relation is intended to link all parts of an attraction. The discussion is taking place on the OSM Community forum.
Community
-
rtnF has analysed the diversity of addr:neighbourhood values in Indonesia.
-
simaransharma has been adding and fixing temple map data in Surat, Gujarat, and is currently looking for other mappers in Gujarat who are also interested in mapping temples.
Local chapter news
-
OSM US published another instalment of their Mapper Highlight series, which highlights mappers, projects, and OSM communities. This October, they interviewed William Edmisten (aka wcedmisten), a Virginia mapper who recently mapped every hospital network in the United States and kept invested followers updated on the OSM US Slack.
Events
-
As part of its Gender Programme, the Unique Mappers Network hosted a virtual breast cancer awareness and geospatial education event on Friday 23 October. The theme was ‘Every Story Is Unique, Every Journey Matters’. It covered breast cancer awareness, prevention, early detection, and the importance of seeking medical advice. It also looked at the role of open mapping in community health awareness.
-
The organisers of the fifth State of the Map Nigeria have postponed their conference from 10 to 13 November to 17 to 20 November 2026, as the University of Uyo has scheduled its graduation ceremony for 9 to 14 November. The venue remains the Town Campus of the University of Uyo in Akwa Ibom State, and the theme remains ‘Open Geospatial Innovation for Climate Action and Community Resilience’. The programme includes workshops, specialist talks on GeoAI, OpenStreetMap, citizen science, and climate action, as well as networking opportunities. Further information can be found on the conference website.
-
The Asociación OpenStreetMap España is hosting ‘SotMes 2026’ at the TomTom offices in Madrid on 6 and 7 November. This free gathering of the Spanish OSM community combines talks with an ‘unconference’. Anyone interested can register .
Maps
-
The Cunning Conquests Atlas is a free resource containing interactive maps of an ever-growing library of journeys. It was built with coastline data from OpenStreetMap and was released on 17 October. You can also watch the videos on YouTube with detailed legends.
-
Proton built a web map where you can look up any ZIP code in the US and find how many surveillance devices (flock cameras) are near your home. The device locations on this Flock camera map come from independent research by cybersecurity researcher Joshua Michael.
-
vetsurgeo launched The Church Atlas, a free map of more than 3,000 churches in 18 languages, using OpenStreetMap data, with Wikidata and Wikipedia providing addresses, summaries, and photos. He also shared the lessons learned about church tagging in a diary entry.
-
rpollock has published Walkably, a map showing pedestrian-friendliness across 31 European countries, based on OpenStreetMap data. Each hexagonal cell that intersects a road is assigned a score for the walkability of everyday destinations and for road quality (traffic, noise, shade in summer, main roads, gradient). An OSM blog post documented the checks made against census data. The full methodology is explained on the project page.
OSM in action
-
[1]
Jiri Podhorecky worked on the graphic design and cartographic preparation of a printed tourist map of Prague, built directly on up-to-date OpenStreetMap data.
-
copilot.travel developed a dynamic map that shows each European capital claiming territory on the basis of the nationality of the first car to reach surrounding places, using typical road speeds and including ferries.
Software
-
Chris Debian has developed PillarPoint, an open-source Android app for people who find, visit, and record British trigonometrical points (trigs) and Ordnance Survey benchmarks. For each trig the app checks whether OSM already has a matching survey point and flags any OSM node that is some distance from the recorded station location.
-
GeoDesk released GOL Tool 2.5, adding support for incremental updates to keep local copies of OpenStreetMap data up to date.
-
Martin Faust has built Rücksitzhelden, a free app for families on long car journeys that shows ► attractions and family-friendly restaurants along the route using OpenStreetMap data.
-
Axel Piepgras has developed ► rueckenwind, an iPhone bicycle navigation app powered by OpenStreetMap data.
-
The well-known ‘Strava Slide’ algorithm, which allows drawn routes to be automatically adapted to and optimised for the Strava heatmap, is now available both as a browser extension ‘strava-heatmap-extension’ for Chrome and Firefox, or a JOSM plugin ‘josm-strava-tracer’. This tool allows the geometry of routes to be captured much more quickly and accurately based on aggregated GNSS tracks.
-
Ukrainian developers Vladyslav and Daryna Shinkarenko have developed Орієнтир, an iOS navigation app that works without GNSS. Instead, the app uses smartphone sensors to estimate the car’s speed and turns. It also offers offline maps of the whole of Ukraine, powered by OpenStreetMap data.
-
Victor explained how OsmAnd’s new search engine, built from scratch and recently released in version 5.5, works.
Programming
-
anthaas described how he automated marking small tasks, related to the Ebola campaign in the Democratic Republic of the Congo, as done in the HOT Tasking Manager using JOSM and the TM API.
Releases
-
HeiGIT has introduced a new openrouteservice web client, which replaces the two previous route planners. This article explains the new features, current limitations, and what users need to know before the old clients and deprecated API URL are shut down on 16 November.
Did you know that …
-
… the Magic Earth navigation app is based on OpenStreetMap data? It offers turn-by-turn navigation, offline maps, and speed camera alerts for iPhone, iPad, and Android; navigation is free, whilst additional features are available via a freemium model. The source code is not open. mobilsicher.de tested the Magic Earth navigation app back in 2019 and gave ► it a positive review (we reported earlier).
Other “geo” things
-
Geografías acuáticas: espacios de conectividad y sociabilidad, edited by Guadalupe Pinzón Ríos and Flor Trejo Rivera and published by the Universidad Nacional Autónoma de México, demonstrates how aquatic environments, rather than being peripheral or serving as spaces that separate societies, should be viewed as settings for diverse forms of connectivity, and within which forms of social interaction were also established that are, in fact, of great significance in a region such as this, where bodies of water deserve greater attention.
-
Sven-Erik Volberg posted a map of the approximate historical boundaries of the larger European states (those with an area over 100,000 square kilometres). The map covers around 1500 years from 500 CE.
-
The Direção-Geral do Território has announced ► the ‘XVII Jornadas Ibéricas de Infraestruturas de Dados Espaciais’ (Iberian Conference on Spatial Data Infrastructure), to be held from 11 to 13 November in Porto, Portugal. Those interested can register ► now.
Upcoming Events
Country
Where
Venue
What
When
🇲🇽
Ciudad de México
Antiguo Colegio de San Ildefonso
State of the Map Latam 2026 ♦
2026-10-27 - 2026-10-29
🇨🇭
Rapperswil-Jona
OST RJ Gebäude 6, Rapperswil
20. Mapathon & Mapping Party Rapperswil 2026 ♦
2026-10-30
🇮🇹
Pesaro
Biblioteca-Archivio “Vittorio Bobbato”
Linux Day Pesaro ♦
2026-10-31
🇮🇳
नई दिल्ली
Jitsi Meet (online)
OSM India - Monthly Online Mapathon ♦
2026-11-01
🇩🇪
Hannover
Kuriosum
Stammtisch ♦
2026-11-02
🇭🇺
Budapest
United Platforms, Fény utca 16.
OSM térképest – 2026 november ♦
2026-11-03
Missing Maps London Mapathon Beginner Friendly (with Training) (Online) [eng] ♦
2026-11-03
🇨🇭
Bern
Provisorium46
Berner OpenStreetMap-Znacht ♦
2026-11-03
🇩🇪
Stuttgart
Forum 3 Café
Stuttgarter OpenStreetMap-Treffen ♦
2026-11-04
🇫🇷
Bar Le Schmilblik
Rencontre mensuelle des contributeurs Paris sud ♦
2026-11-05
🇪🇸
Madrid
TomTom, Edificio Aqua, Calle Agustín de Foxá 4
State of the Map España 2026 (SotMes 2026) ♦
2026-11-06 - 2026-11-07
🇫🇷
Angers
L’Arrière Train, 3 rue de Frémur, Angers
Angers Rencontre mensuelle OpenStreetMap ♦
2026-11-06
🇦🇹
Salzburg
HTL Itzling
Maker Days Salzburg ♦
2026-11-07
🇮🇹
Angera
Mapathon @ Angera ♦
2026-11-07
🇩🇰
København
Cafe Bevar’s
OSMmapperCPH ♦
2026-11-08
CartONG : Mapathons en ligne 2026-2027 ♦
2026-11-09
🇹🇼
臺北市
MozSpace Taipei
OpenStreetMap x Wikidata Taipei #94 ♦
2026-11-09
🇺🇸
Salt Lake City
Woodbine Food Hall
OSM Utah Monthly Map Night ♦
2026-11-10
🇩🇪
Hamburg
Voraussichtlich: “Variable”, Karolinenstraße 23
Hamburger Mappertreffen ♦
2026-11-10
🇺🇸
San Jose
Online
South Bay Map Night ♦
2026-11-10
🇬🇧
City of Westminster
The Volunteer pub
London pub meet-up ♦
2026-11-10
🇩🇪
temporärhaus
OSM-Stammtisch Ulm/Neu-Ulm ♦
2026-11-10
iD Community Chat ♦
2026-11-11
🇩🇪
München
Echardinger Einkehr
Münchner OSM-Treffen ♦
2026-11-11
OSM US Mappy Hour: Mapping Route 66 Past & Present ♦
2026-11-11
🇮🇳
Kottayam
Kottayam, Kerala
State of the Map Kerala (SoTM Kerala) ♦
2026-11-14 - 2026-11-15
🇮🇪
Dublin
4 Inns Court, Winetavern Street, Dublin, D08 XY00
OpenStreetMap Ireland AGM - 2026 ♦
2026-11-14
🇮🇳
New Delhi
South Delhi
OSM Delhi Mapping Party No.34 (South Zone) ♦
2026-11-15
This weeklyOSM was produced by MatthiasMatthias, PierZen, Raquel Dezidério Souto, Andrew Davidson, barefootstache, derFred, vicksun.
We welcome link suggestions for the next issue via this form and look forward to your contributions.
6 days ago
Surprised myself and participated for rrrreal! (well, ok, missed the first day)
Very nice event, liked it a lot.
Report 🫡
m-d.me/notes/osm-dailychallenge-2026/
31DayOSMChallenge #Maptober #Maptober2026
6 days ago
Surprised myself and participated for rrrreal! (well, ok, missed the first day)
Very nice event, liked it a lot.
Report 🫡
m-d.me/notes/osm-dailychallenge-2026/
31DayOSMChallenge #Maptober #Maptober2026
6 days ago
|
A September morning in Vancouver. More than a thousand riders roll out of Stanley Park for the RBC GranFondo Whistler: 122 kilometres of the Sea to Sky Highway, closed to traffic, with Howe Sound on one side and the mountains on the other. Past Squamish, the road starts to climb and keeps climbing all the way to Whistler.
2 days ago
A September morning in Vancouver. More than a thousand riders roll out of Stanley Park for the RBC GranFondo Whistler: 122 kilometres of the Sea to Sky Highway, closed to traffic, with Howe Sound on one side and the mountains on the other. Past Squamish, the road starts to climb and keeps climbing all the way to Whistler.
You cross the line near the top of the results, and everyone says the same thing: you were lucky. With the weather, the wind, the group.
You know better. That result is made of dark February mornings on the seawall, Sunday climbs up Cypress, and long rides to Squamish and back, all recorded in OsmAnd one track at a time. Let’s see what a season of training looks like once Smart Folders put it in order.
♦
Photo by Ben Guernsey on Unsplash
A Folder That Fills Itself
A training season doesn’t arrive neatly packed. Between the rides sit a few hikes and a drive to Whistler, and the Tracks tab lists everything by date, with no idea which recordings mattered.
A Smart Folder works the other way round: you describe the tracks you want, and OsmAnd collects them. The description is a filter that can check almost anything a track knows about itself, including length, duration, speed, elevation, date, location, activity type, and even heart rate. Set the activity to road cycling, limit the dates from February to race day, save the result as “Road to Whistler”, and the whole season lands in one place while the hikes stay out.
New rides join the folder on their own. The tracks themselves stay where they were, so deleting the folder never deletes a ride.
One catch: activity type is stored in each track, and older recordings may not have one. If some rides are missing, set their activity and refresh the folder.
♦♦
One Collection, Many Views
Sixty-seven rides in one folder is tidier than a few hundred, but it’s still a list. Organize by turns that list into groups, sorting the folder by a single parameter: activity, date, location, speed, altitude and elevation, or sensor data such as heart rate. The tracks don’t move anywhere; only the way you look at them changes.
Group the season by nearest city, and you see where the rides began: most of them in Vancouver, a handful from West Vancouver, where the long runs to Squamish set off from Horseshoe Bay, and four from Whistler, once summer made it worth driving up for the climbs. Switch to month and year, and the same folder turns into a calendar, from a cautious February to a crowded August.
Each group shows how many tracks it holds, and empty groups don’t appear at all. Below the list, OsmAnd adds everything up: tracks, distance, climbing, descent, and time in the saddle. It does this for the whole folder and for every group you open. That’s where the season starts answering questions.
♦♦
Drawing the Lines Yourself
Months and cities come with natural borders. Distance doesn’t. Is a 55 km ride a long one or just a solid Tuesday? For length, duration, speed, and altitude, OsmAnd lets you decide where one group ends and the next begins.
Pick one of these parameters, and a slider asks for a step size. Drag it, and the groups rearrange behind it as you go. With a 50 km step, most of the season piles into the first group, which is honest but not very revealing. Bring it down to 20 km, and the season sorts itself out: short morning laps along the seawall, a big block of loops around UBC, the climbs on Cypress and Seymour further up, the long runs to Squamish, and, at the very end, two tracks of almost exactly the same length: the course recon in August and the race itself.
Some of this is free for everyone: grouping by activity, year of creation, and nearest city. The rest, including the monthly calendar from the previous section and every parameter with a step size, comes with OsmAnd Pro. Without a subscription, you can still open these options and preview how the tracks would split before deciding. If a subscription ends, the grouping you’ve already applied stays in place, and only changing it requires Pro again.
♦♦
Keeping It in Shape
The race is over, but the folder doesn’t retire with it. It keeps watching for rides that match its rules, and if the list ever looks out of date, a quick refresh brings it back in line. When the next season starts, there’s no need to build anything new. Edit the filter, move the dates forward, and the same folder starts collecting a new story.
Groups are useful beyond reading, too. Any of them can go straight onto the map, so a whole August of riding appears at once, from the seawall to the climbs above Whistler, every route drawn on top of the others. A group can also be exported in one go, which is handy when a coach asks to see your month and doesn’t want a dozen separate files.
If you plan the next season on a bigger screen, Smart Folders also appear in OsmAnd Web once Settings are synced through OsmAnd Cloud. They keep working best with common parameters such as activity, dates, or distance.
♦♦
The Answer to the Question
So, was it luck? Open February, and the folder answers modestly: five rides, 103 km, just over five hours on the bike, and 839 metres of climbing. Then open August: twelve rides, 577 km, a full 24 hours in the saddle, and 6,806 metres of climbing, including the day you rode the entire race course just to see how it would feel.
♦♦
The whole season fits into a single line at the bottom of the folder: 67 rides, 2,923 km, and more than 33,000 metres of climbing. That’s nearly four times the height of Everest, collected one Cypress hairpin at a time.
No tailwind delivers that. So the next time someone tells you how lucky you were, there’s no need to argue. Just open the folder and hand them your phone.
Share Your Story Every track in OsmAnd has a person and a story behind it. If you’d like to share yours on our blog, whether it’s a long journey, a season of training, or a route you simply love, we’d be glad to hear from you. Write to Tina, and we’ll make it happen together.
We appreciate your interest in us and thank you for taking the time to read this article. Join us on social media to keep up to date with the latest news and share your experiences. Your opinion is important to us.
Follow OsmAnd on Facebook, TikTok, X (Twitter), Reddit, and Instagram!
Join us at our groups of Telegram: (OsmAnd News channel), (EN), (IT), (FR), (DE), (UA), (ES), (BR-PT), (PL), (AR), (TR).
2 days ago
I spent two years mapping the areas surrounding one of the most beautiful drives in the world. Each morning, I looked forward to discovering and mapping an area adjacent to a one I did the day before. This diary entry serves as an introduction to a series of texts covering the challenges I encountered and how I overcame them.
Included below are a few snapshots taken in the field, which capture
2 days ago
I spent two years mapping the areas surrounding one of the most beautiful drives in the world. Each morning, I looked forward to discovering and mapping an area adjacent to a one I did the day before. This diary entry serves as an introduction to a series of texts covering the challenges I encountered and how I overcame them.
Included below are a few snapshots taken in the field, which capture the majestic landscapes along the Icefields Parkway. I have also added a “before and after” map excerpt, as well as a short video, to illustrate how my work gradually took shape over time.
The Place
The Icefields Parkway (Highway 93N), in Alberta, owes its name to the spectacular icefields and glaciers that line the road. The parkway, which is a 232 km stretch of highway cutting through Banff and Jasper National Parks, attracts between 1.2 million and 2 million visitors per year.
The parkway offers exceptional alpine landscape, with glaciers, rivers, turquoise lakes, and breathtaking mountain views directly from the roadside (Figure 1). Best of all, many of these landmarks can be reached in a single day’s hike (Figure 2).
♦
Figure 1: North Saskatchewan River alongside the parkway. Parker Ridge (2350 m) and Nigel SE3 (3025 m) in the background.
♦
Figure 2: Multiple landmark features shown on the “Tracestrack Topo” map (2026), with Figure 1 POV on the bottom right.
The Scouting Trip
I use the term “scouting trip” here, given what I learned (local knowledge) and the time I spent mapping the area afterwards, but visiting the Rockies was a project my wife and I had had for a long time, absolutely not related to OSM!
The plan was to spend a week exploring Jasper, Lake Louise and the Icefields Parkway in between. Unfortunately, when wildfires struck Jasper National Park in 2024, it led to its closure and forced us to change our itinerary at the last minute. We therefore had to abandon this entire segment of the trip and reach Lake Louise via highway 11, the Saskatchewan River crossing and the southern half of the Icefields Parkway (Figure 3).
♦
Figure 3: Highway 11 toward the Saskatchewan River Crossing and the southern half of the Icefields Parkway.
We then had more time than expected to explore Banff National Park. Here are a few pictures taken along the parkway and showing landmark features such as Bow Lake (Figure 4) and Peyto Lake (Figure 5).
♦
Figure 4: South view of Bow Lake with large scree slopes reaching the lake.
♦
Figure 5: Peyto Lake and its large alluvial fan. To the left, Peyto Peak and its glacier in the background.
We spent some time in Lake Louise, where we visited its namesake lake (Figure 6) as well as its even more popular neighbor, Moraine Lake (Figure 7); however, what we enjoyed most was hiking the trails surrounding the town, which offer multiple access points to the Bow River (Figure 8).
♦
Figure 6: Lake Louise and its turquoise waters. Behind me, the “Chateau Lake Louise” and hundreds of tourists like me.
♦
Figure 7: Moraine Lake view taken from the “moraine” crest. Out of frame, hundreds of tourists like me.
♦
Figure 8: Bow River, just a few hundred meters from where we stayed in Lake Louise.
Unexpectedly, the Jasper National Park authorities reopened the Athabasca Glacier area during our stay, giving us the opportunity to drive the parkway again. Along the way, we stopped at the Big Bend (Figure 9), the only hairpin bend on the parkway, before continuing on our way to reach the Columbia Icefield area (Figure 10).
♦
Figure 9: Big Bend viewpoint, looking south toward North Saskatchewan River, and Mount Cirrus (3270 m) on the left.
♦
Figure 10: Icefields Parkway toward Columbia Icefield and the Athabasca Glacier.
The Columbia Icefield is not actually visible from the road, even though the Athabasca Glacier originates there. It is possible to get close to the glacier on foot by taking a trail called “Hike to Toe of Athabasca Glacier” (Figure 11). The name of the trail is misleading, as it ends where the foot of the glacier was in 2006 (Figure 12). Unfortunately, you can’t go further unless accompanied by a guide or taking an “Ice Explorer Experience” bus tour because direct access to the glacier is prohibited due to the inherent risks of such an environment.
We did enjoy the experience anyway!
♦
Figure 11: The few hundred meters hike to reach the closest point to the Athabasca Glacier that you can do on your own.
♦
Figure 12: The Athabasca Glacier closest view you can reach on your own. Taken where the foot of the glacier was in 2006.
It is with all these breathtaking landscapes in mind, and fantasizing about all I had not seen, that I decided to map around the parkway and add the spectacular natural features that were sorely lacking in OSM.
The Mapping – Existing content
The area already contained data from the Canvec import. This import has a reputation for being of poor quality. Made available almost twenty years ago, the data derived from 1:50K topographic maps were much more complete than what could be mapped from the 30-80 m resolution imagery available at that time in OSM. But now, current high-resolution imagery reveals its limitations. Vegetation (wood, wetlands) is of poor quality; road and hydrographic networks are present; but need most of the time to be aligned with the imagery before making finer adjustments.
I also noticed that some key features were added after the import. Maybe the most significant contribution I found came from one user who mapped most hiking trails (there are many) and routes to different summits along the parkway. In such a wild area, this information is helpful for those who, after parking to admire the view, decide to explore the surroundings (like me).
However, apart from these elements, the map was empty all along the road (Figure 13), whereas on the ground, the diversity and immensity of the landscapes struck at each kilometer.
♦
Figure 13: Standard OSM map view from early 2024. Most of the data comes from the Canvec import.
The Mapping – Adding/Editing Data
I had begun making some edits near Jasper while preparing for our trip, but after wildfires affected the town and the park was closed, I had to pause that work to find alternative routes and make new reservations. Once I got home, I started mapping again, but this time following the route we had taken.
I did not yet know that I would spend two years mapping the region, thereby extending my stay and reviving my memories, day after day. By the end of this mapping journey, I had added to the map all the natural features present in an area a hiker might traverse in a day or two, between Jasper and Lake Louise. Here is a small example of what the map looks like now (Figure 14).
♦
Figure 14: Standard OSM map view from late 2026. Same area as Figure 13, after adding/updating all natural features.
There is so much to say about this mapping journey that I plan to cover these various topics in future entries of my journal (hence the “Part 1” in my title). In the meantime, I have illustrated this journey in a short video (46 seconds), which shows the distribution of my contributions over time. Only the nodes are represented in order to achieve a better visual result.
♦
*Click to open the video and turn on the sound :-) *
Jfd553
2 days ago
DinoData is a web-based tag editor for OpenStreetMap nodes, ways and relations, designed for phones first. Open an object, see what it is and what each tag means in your language, edit the tags with inputs suited to them, and save as a changeset. Geometry is not edited.
It runs entirely in the browser and is hosted on Wikimedia Toolforge. It started as a Wikidata editor; the OpenStreetMa
3 days ago
DinoData is a web-based tag editor for OpenStreetMap nodes, ways and relations, designed for phones first. Open an object, see what it is and what each tag means in your language, edit the tags with inputs suited to them, and save as a changeset. Geometry is not edited.
It runs entirely in the browser and is hosted on Wikimedia Toolforge. It started as a Wikidata editor; the OpenStreetMap mode lives next to it in the same app.
Finding an object
Search for a place, or paste what you have: an openstreetmap.org URL (including edit and API URLs), an iD or JOSM remote control link, a short ID like n123 or way 123, or coordinates. Other text is a place search with Photon and Nominatim. “Near me” lists the tagged objects around you via the Overpass API, handy while surveying.
Understanding the tags
- What the object is (“Cafe”), from the translated presets of the iD tagging schema
- Every tag explained from the wiki’s data items: description in your language, status, image, links to the wiki page and the Wikidata concept
- Deprecated and discouraged tags marked
- A small map, the parent ways and relations, and the history: tags added, changed and removed per version, with user and changeset comment
Editing
- Preset fields with matching inputs: chips for yes/no and other choices, a value picker with translated options and the most used values from taginfo, chips for multiple values like
cuisine=pizza;pasta, toggles for diet:*, names per language, a search for wikidata=*, and number, phone and URL keyboards
- Issues with one-tap fixes: deprecated tags, values not matching the format documented on the wiki, tags not meant for the element type, incompatible tags
- Undo per field or tag; pending edits survive reloads and the login
For power users, a text view shows all tags as key=value lines or as Level0 text. Paste tags with Ctrl+V anywhere: key=value lines, tab-separated lines, "key"="value" from taginfo or Overpass turbo, or Level0 text as is. key= removes a tag. Copied Level0 text contains the full object, so it can be pasted into Level0.
Saving
Log in with your OpenStreetMap account (OAuth 2.0 in a popup, so pending edits are kept), review the changes, enter a comment and pick a source. Each save is one changeset with created_by=DinoData. If someone edited the object in the meantime, the tags are merged; only keys changed on both sides need a choice.
Limitations
No geometry editing, no creating or deleting objects, no editing of relation members, one object per changeset, no offline editing. The interface of the OpenStreetMap mode is available in English, German and Dutch.
Try it
Open dinodata.toolforge.org/#osm. DinoData is free software under GPL-3.0; the code is on GitHub, and bug reports and ideas are welcome in the issue tracker.
3 days ago
Saiba Mais: 11914261797
3 days ago
Saiba Mais: 11914261797
3 days ago
Written 2025-10-30… Published 2026-11-03
About three years ago, during my day-to-day mapping activities, I came across a golf course that had some obvious errors. I didn’t think much of it at the time. Just a fairway that was drawn right across the top of a green. But the more golf courses I looked at, the more frequently I encountered this error.
I soon learned about a golf cour
3 days ago
Written 2025-10-30… Published 2026-11-03
About three years ago, during my day-to-day mapping activities, I came across a golf course that had some obvious errors. I didn’t think much of it at the time. Just a fairway that was drawn right across the top of a green. But the more golf courses I looked at, the more frequently I encountered this error.
I soon learned about a golf course simulator video game that was built on OpenStreetMap data and was attracting a large influx of simulator enthusiasts who weren’t seasoned OSM mappers. Along with that came various tools to aid in converting OSM data into these simulators, as well as tutorial videos that made some very bad assumptions about how golf courses should be mapped. These factors set the stage for some very bad mapping practices to spread around the world.
My understanding is that attempts were made to correct these bad habits at the source, but the tutorial author wasn’t interested in revising or removing his video. Combine that with YouTube’s bad decision to hide down votes on videos, and you’re left with de facto training material that is widely disliked but that new golf course mappers have no way of knowing is a poor source of truth.
So this is where I come on the scene and try to make the map better.
I’m a big fan of the broken windows theory. I’ve seen it play out in my own town. A minimally maintained but abandoned pizza parlor near me stood for years waiting for a new occupant to lease it. You’d see prospective tenants touring it every once in a while, but no takers. Eventually, someone tagged the building with graffiti. It wasn’t cleaned up in a timely manner, and things spiraled downward from there: more graffiti, broken windows, stolen copper, garbage left behind by homeless people, and eventually, the building was razed.
I saw similarities with golf courses. This broken “style” of drawing a fairway, intersecting the green, crossing over it, and then intersecting the green again on the way out to the rest of the fairway was becoming commonplace. I fixed one, then another, and another. I thought about contacting the original mappers and educating them, but these were often edits made years ago, and the mappers were probably no longer active.
This is when I came up with my “Broken Greens Theory.” Any green that was “broken” could lead to more greens being “broken” when someone stumbled upon it and thought, “Oh, so that’s how you map a fairway and a green together.”
Any corrections would need to be made soon after the error was introduced, while the edits were still fresh, the mapper was possibly still active, and the damage was limited in scope. At the same time, existing errors would have to be fixed as well, or we’d never reach a point where people weren’t learning bad practices from the existing maps.
I’ve learned a lot over the last three years working on this project, from editing techniques in JOSM (even though I was already well-versed in its use) to spatial database queries. One of the neatest things I learned was about the Dimensionally Extended 9-Intersection Model and how it could be used to query for specific ways that fairways intersected with greens.
I figured out how to construct PostGIS SQL queries to identify all of these intersections and was shocked to find well over 20,000 of them in the United States. I put together tools to group these intersections and feed them, course by course, into JOSM to be manually edited and saved back out.
At the start of the year, I set a goal of fixing this one specific type of golf course error by the end of the year. As I progressed through the year, the number of remaining fixes dropped, and it looked like I was on track. Then I started noticing some intersections on nearby holes, close to ones I was already working on, that hadn’t been caught. Uh oh.
My query only caught intersections where the fairway line crossed into the green and then back out. It wasn’t catching cases where the fairway shared a node with the green, followed the green for one or more nodes, and then crossed into and back out of the green. I was disheartened to revise my query and discover that several thousand more pairs with this slightly different intersection pattern had been overlooked.
I doubled down on my efforts and increased my daily goal. A few months later, I discovered yet another type of mapping error. Some fairways shared every single point as they went around the outside of the green, where a green’s fringe would normally exist.
So I repeated my routine: fixing the query, being disheartened by the discovery of thousands more errors, and redoubling my efforts to get the job done by the end of the year.
Along with all of these edits, when my wrists could no longer take the repetitive strain for the day, I would work on developing more tools to download daily map diffs for the entire globe.
Things are different in the diff world, no pun intended. You can’t simply load diffs for the United States into the database and query them. But I wrote some code to process the XML stream and handle the unusual way that changes are grouped together. I developed tools that would examine changes to golf courses in the target area of the United States, load only those changes into my database along with nearby data, test the new edits for errors, and generate a “report” of edits that warranted further investigation by hand.
Since the start of the year, I’ve identified about 300 cases of people making “bad” edits that were significant enough that I felt reaching out and working with the mapper to correct their behavior would benefit the community.
The first thing I discovered is that changeset comments are almost useless. I’m guessing that over 90% of them are completely ignored. It’s unclear whether they were even read in the first place. I’d love to see someone put together a study on the effectiveness of changeset comments, especially when directed at newer or “drive-by” mappers.
I started requesting blocks for some of these repeat offenders from the Data Working Group and had some success getting their attention through that method. However, some mappers were combative and felt that OSM needed to bend to their will. They were challenging conversations, to say the least.
Over time, I’ve learned that messaging a mapper directly has a much better ROI, but still nowhere near 100% effective. I believe they see the unread message count and are more likely to click on it than to check for changeset comments in an email inbox that they probably use only for spam.
As the year went on, I started seeing fewer and fewer of these fairway/green intersections. Possible explanations include there being fewer courses left to map from scratch, or perhaps it’s the weather, as the season changes and people spend less time mapping. It will be interesting to see how the numbers change over the next year.
With these two approaches to tackling the problem (fixing existing issues and finding new ones), I’ve finally finished fixing every single fairway/green intersection in the United States.
I estimate that I’ve fixed over 30,000 fairways over the past few years. I consider that a big success, and I hope that ongoing maintenance will be quick and manageable.
3 days ago
قشلاق ساری قوئی میکائیل
4 days ago
قشلاق ساری قوئی میکائیل
4 days ago
بندرعباس کوی فرهنگیان کوچه گل افشان بن بست اول ضلع شمال غربی ساختمان مجاهد.
4 days ago
بندرعباس کوی فرهنگیان کوچه گل افشان بن بست اول ضلع شمال غربی ساختمان مجاهد.
4 days ago
While walking around, surveying, I’ve often theorised it would be possible to work out where I lived based on the centre of all the edits I’ve made.
So I made a tool to estimate it. And it’s pretty close.
It gets closer or further away depending on how much history you look at.
But you might find it informative.
yamatt.github.io/osm-user-home/
Edit:
<
5 days ago
While walking around, surveying, I’ve often theorised it would be possible to work out where I lived based on the centre of all the edits I’ve made.
So I made a tool to estimate it. And it’s pretty close.
It gets closer or further away depending on how much history you look at.
But you might find it informative.
yamatt.github.io/osm-user-home/
Edit:
It’s an interesting problem.
OSM needs and wants contributions. But by it’s very nature it can give away users data, without them even realising.
I don’t think there is even a technical fix for that.
But there does need to be a serious discussion with contributors about their data privacy.
Some might not care.
Some might be alarmed.
And alarmed is good.
We need to talk about how we balance users privacy and the power of OSM contributions.
5 days ago
X marks the spot to the crossroads of America. Route 30 travels east to west and Route 41 north to south spanning the whole country. Schererville, Indiana
6 days ago
X marks the spot to the crossroads of America. Route 30 travels east to west and Route 41 north to south spanning the whole country. Schererville, Indiana
6 days ago
I had a great time at SotM LATAM in Mexico City this past week. I got to hear so many talks on diverse subjects, I met friendly and interesting people, and there was a general acceptance that a random person from Canada would be there. Kudos to the organizing team and volunteers who put on a smooth, well run event.
I have never been to a State of the Map before despite thinking about goi
6 days ago
I had a great time at SotM LATAM in Mexico City this past week. I got to hear so many talks on diverse subjects, I met friendly and interesting people, and there was a general acceptance that a random person from Canada would be there. Kudos to the organizing team and volunteers who put on a smooth, well run event.
I have never been to a State of the Map before despite thinking about going since way back in 2016 when I happened to already have a visa for Brazil. That certainly would’ve been harder with my level of Spanish understanding then. I will definitely be back.
Gracias a la comunidad y hasta la próxima. Espero encontrar oportunidades para colaborar.
6 days ago
Today i made my first steps using Claude (sonnet-5) to add coverage, unit and
mutation testing to addressextract.
The testing needed synthetic input data which claude proudly produced.
I find it really fascinating how it derived the corner cases from the code and
made the transformation into an osm.xml which contains all those cornercases.
The first shows admin and p
6 days ago
Today i made my first steps using Claude (sonnet-5) to add coverage, unit and
mutation testing to addressextract.
The testing needed synthetic input data which claude proudly produced.
I find it really fascinating how it derived the corner cases from the code and
made the transformation into an osm.xml which contains all those cornercases.
The first shows admin and postal code boundaries, buildings and addresses
in all sorts of relations. Some positions are to evade caching tricks in
the Quad Tree. Some really present errors addressextract shall find like
address A on node within building outline with address B. All kinds
of missing tags, wrong tags, overlapping tags.
Some are to trick the position inside the bounding box, but
outside of the geometry.
Fascinating times.
♦
♦
6 days ago
Bar Ehiala’S Deck, parte das antenas
6 days ago
Bar Ehiala’S Deck, parte das antenas
6 days ago
|