To me, admin_level=8
doesn’t necessarily mean “city”. admin_level=*
tells us which boundaries nest inside which boundaries, which affects not only geocoding results but also the boundary line’s dash pattern or the label’s size on a rendered map. admin_level=8
can mean the name is less prominent than the surrounding admin_level=6
, and the line is fainter with shorter dashes.
We just generally call level 8 “city” because many well-known cities have admin_level=8
boundaries. In the surrounding San Francisco Bay Area, there are almost a dozen admin_level=8
boundaries representing the third kind of municipality, towns. border_type=city
is what actually means city, and border_type=city;county
seems like a reasonable encoding for city and county. One can get very lucky assuming admin_level=8
is some kind of municipality, but they’ll find a little less luck assuming the inverse, that every municipality is admin_level=8
.
Speaking of naïve data consumers, the main website’s search tool contributes to these assumptions by associating the levels with a set of terms that apparently don’t correspond to any country anywhere. This prompted the Puerto Rico community to demote barrios to admin_level=9
so they’d be labeled as “villages” instead of “cities”.
The Washington Metro calls one of its stops Washington National Airport.
Names really do matter with this one. People expect to see the string “Washington, D.C.”, or “Washington, District of Columbia”, in the same contexts as “Columbus, Ohio”, or “Miami, Florida”, perhaps moreso because we’re used to having to distinguish the city from Washington State. But “Washington, D.C.”, makes for an ugly map label. In the context of a map, “Washington” suffices. Data consumers will automatically form “Washington, D.C.”, in the right contexts if there are two boundaries, but if there’s only one, we force them into either “Washington” or “Washington, D.C.”, without a real choice.