name-suggestion-index
Canonical common brand names for OpenStreetMap
What is it?
The goal of this project is to maintain a canonical
list of commonly used names for suggesting consistent spelling and tagging of features
in OpenStreetMap.
How it's used
When mappers create features in OpenStreetMap, they are not always consistent about how they
name and tag things. For example, we may prefer McDonald's
tagged as amenity=fast_food
but we see many examples of other spellings (Mc Donald's
, McDonalds
, McDonald’s
) and
taggings (amenity=restaurant
).
Building a canonical name index allows two very useful things:
- We can suggest the most "correct" way to tag things as users create them while editing.
- We can scan the OSM data for "incorrect" features and produce lists for review and cleanup.
The name-suggestion-index is in use in iD when adding a new item
Currently used in:
- iD (see above)
- Vespucci
- JOSM presets available
Browse the index
You can browse the index at
http://osmlab.github.io/name-suggestion-index/brands/index.html
to see which brands are missing Wikidata links, or have incomplete Wikipedia pages.
Participate!
We're always looking for help! If you have any questions or want to reach out to a maintainer, ping bhousel
on:
Prerequisites
Installing
- Clone this project, for example:
git clone git@github.com:osmlab/name-suggestion-index.git
cd
into the project folder,- Run
npm install
to install libraries
About the index
Generated files (do not edit):
Preset files (used by OSM editors):
dist/name-suggestions.json
- Name suggestion presetsdist/name-suggestions.min.json
- Name suggestion presets, minifieddist/name-suggestions.presets.xml
- Name suggestion presets, as JOSM-style preset XML
Name lists:
dist/names_all.json
- all the frequent names and tags collected from OpenStreetMapdist/names_discard.json
- subset of names_all
we are discardingdist/names_keep.json
- subset of names_all
we are keepingdist/wikidata.json
- cached brand data retrieved from Wikidata
Configuration files (edit these):
config/*
config/filters.json
- Regular expressions used to filter names_all
into names_keep
/ discardNames
brands/*
- Config files for each kind of branded business, organized by OpenStreetMap tag
brands/amenity/*.json
brands/leisure/*.json
brands/shop/*.json
brands/tourism/*.json
:point_right: See CONTRIBUTING.md for info about how to contribute to this index.
Building the index
npm run build
- Regenerates
dist/names_keep.json
and dist/names_discard.json
- Any new entries from
names_keep
not already present in the index will be added to it - Outputs many warnings to suggest updates to
brands/**/*.json
Other commands
npm run wikidata
- Fetch useful data from Wikidata - labels, descriptions, logos, etc.npm run docs
- Updates the index summary pagesnpm run
- Lists other available tools
Updating dist/names_all.json
from planet
This takes a long time and a lot of disk space. It can be done occasionally by project maintainers.
You do not need to do these steps in order to contribute to the index.
- Install
osmium
commandline tool and node package globally (may only work on some environments)
apt-get install osmium-tool
or brew install osmium-tool
or similarnpm install -g osmium
- Download the planet
curl -o planet-latest.osm.pbf https://planet.openstreetmap.org/pbf/planet-latest.osm.pbf
- Prefilter the planet file to only include named items with keys we are looking for:
osmium tags-filter planet-latest.osm.pbf -R name -o named.osm.pbf
osmium tags-filter named.osm.pbf -R amenity,shop,leisure,tourism -o wanted.osm.pbf
- Run
node build_all_names wanted.osm.pbf
- results will go in
dist/names_all.json
git add dist/names_all.json && git commit -m 'Updated dist/names_all.json'
License
name-suggestion-index is available under the 3-Clause BSD License.
See the LICENSE.md file for more details.