[Talk-us] Fwd: Re: [OSM-talk] Mapquest launches site based on OSM!

Craig Hinners craig at hinnersection.com
Wed Jul 21 14:15:33 BST 2010


From: Nathan Edgars II <neroute2 at gmail.com>
> There's been no standard way of tagging state highways since before I
> joined at the beginning of this year.

Nor has there been in my four years here. Hell, I was the one who wrote
the wiki suggestion to use the USPS state abbreviations. I am completely
and utterly stunned that it is still there.

One of my four OSM WTFs is overloading the REF tag's value with so much
information. We should be "key rich", not "REF value rich". The *keys*
should have the "meat", not the *values*:

network:country[us]:state[ks] = 10            // renderer sees this and
renders a sunburst
network:country[us]:state[md] = 26            // renderer sees this and
renders a white rectangle

These tags are simply applied to all of the ways that comprise the
route. No complicated relations (the second of my four OSM WTFs)
necessary.

Need all of the ways for a route? It's a simple database query: SELECT *
WHERE key = 'network:country[us]:state[md]' AND value = '26'.

If you have a state with different classes of networks, you just extend
this idea:

network:country[us]:state[va]:primary = 7     // renderer sees this and
renders a guitar pick thingie
network:country[us]:state[va]:secondary = 606 // renderer sees this and
renders a circle

If you have a way that is on two networks, you just give it both tags:

network:country[us]:unitedStatesHighway = 40
network:country[us]:interstate = 70

Oh, yeah: this also gets rid of those asinine arguments about, say,
whether there should be a hyphen in the REF tag between the "I" and the
digits in interstate designations. Don't like the hyphen? Knock yourself
out, and create a *renderer* that shows "I 95" when it encounters
network:country[us]:interstate=95. Prefer hyphens? Or a shield?
Whatever. The point is, that's the domain of the *renderer*, not the
*metadata*.

Moving on, if you have a way that comprises two networks of the same
class, you hit OSM's third WTF, which is the inability to have two tags
with the same key:

network:country[us]:unitedStatesHighway = 50
network:country[us]:unitedStatesHighway = 301

So as a workaround, you have to use the infamous semicolon:

network:country[us]:unitedStatesHighway = 50;301





More information about the Talk-us mailing list