[Tagging] addr:street for routes

Sarah Hoffmann lonvia at denofr.de
Mon Aug 3 10:07:18 UTC 2020

On Fri, Jul 31, 2020 at 06:06:37PM -0400, Jmapb wrote:
> On 7/31/2020 4:24 PM, Sarah Hoffmann wrote:
> > Put one of the variants into addr:street and then all the variants
> > as alternative names onto the road. Obviously that stretch of road
> > is referred to under all these names, so this is what we should map.
> Putting aside the question of *which* variant to put into `addr:street`,
> this sounds like an approach that could work. But we might end up with
> something like `alt_name=Highway 214;Route 214;State Highway 214;New
> York 214;NY-214;New York State Route 214` (or the name_1 ... name_n
> equivalents). I could live with that if it actually helped the geocoding
> but it's not exactly graceful.

The question here is always how much guessing you expect a geocoder to
do. We could train the geocoder to do a lot of fuzzy matching on the
street name variants as the one above. This may sound like a good idea to
make mapping easier for you but in the long run it doesn't help.
For one thing, if Nominatim gives you two or three simple rules how the
matching works, then you can easily figure out yourself what is going on
and fix it. If the matching is more complicated (possibly even involving
AI), then you sooner or later run into an issue where you just don't
understand why things go wrong. The other problem is that Nominatim is
not the only geocoder out there. You may expect one geocoder to do clever
things to understand the tagging but there is very little chance that all
data users will go through the trouble. So being explicit in your tagging
makes the data more useful.

There is some fuzzy matching, you can expect to work, for example
abbreviations like street -> st or even New York -> NY. But going from
ref=NY-214 to 'State Highway 214' is already a long stretch that requires
special local knowledge.

> Ultimately, though, these are alternate names for the route, not for the
> stretch of road. (Which might have its own list of names! For instance,
> a particular stretch of Ulster County Route 40 is known as Main Street,
> Plank Road, Old Plank Road, Old Route 28, and Mount Tremper-Phoenicia Road.)
> > It really doesn't matter that the road has officially no name. The
> > goal is to map what's on the ground.
> For the road itself, what's on the ground is simply the highway shield
> with the number 214. There's no textual version of the name anywhere
> (except as used for the addresses of residences and POIs.) Best practice
> for these sorts of roads, I'm told, is to omit `name=*`, tag `ref=*`,
> and add to a route relation.

Note that 'on the ground' doesn't always mean that there needs to be a
physical sign. I consider an envelope (of a letter) as much on the ground
as a street name you get by asking the inhabitants what they call the
street they live on. If you want to express these nuances you can always
use the different variants of name (offical_name, local_name, old_name, ...).
So, yes, in your situation I'd leave out the name tag, add the ref and
a couple of *_name tags that contain the names used in the addresses or
between locals.

> For the addresses along the road, the vast majority are signed with just
> a housenumber, and those POI signs that do include a street name are
> inconsistent. Government data sources are also inconsistent.
> But an on-the-ground mapper can observe that those housenumbers belong
> to this road, which here is known only by its route number. I feel there
> should be a way to encode that observation without asking the mapper to
> choose a particular textual representation of the route's name...
> especially since it's hard to do that in a consistent manner.
> (Whatever the solution, my aim here is to get an address search that works!)

Nominatim's algorithm currently is to match addr:street with any name or
ref tag on a highway (including service, footway, path, etc.) It allows a
little bit of fuzziness but ideally you use exactly the same spelling. If
nothing is found, it simply uses the nearest street. 

There is another solution, if you really don't like the requirement of
exactly matching names: associatedStreet relations. They do take precedence
over the matching as explained above. Using those relations you can
use a different addr:street name.

Disclaimer: I have a deep dislike of associatedStreet relations and consequently
they suffer from a bit of neglect in Nominatim. :)


More information about the Tagging mailing list