New York State city/town boundaries

I’d like to flag the naming convention in New York state regarding same-named cities and towns. For example:

Both are admin_level=7 entities. In reality, both of these places are just “Rye”. @ke9tv introduced this scheme, and for good reason given the confusion.

I’d like to re-open this scheme and ask that we consider instead:
name=Rye + border_type=city for the city and name=Rye + border_type=town for the town. Perhaps a note or description could be added as a disambiguator. It does not appear that “City of” or “Town of” prefixes are anything other than a convenience name for OSM mappers rather than the official or local name.

There’s no good answer here. I was going for ‘least worst.’

It looks extremely weird on a map to have a border between ‘Rye’ and ‘Rye’. There simply doesn’t appear to be a good convention to render an administrative boundary between two entities at the same admin_level that share the same name. I wasn’t inclined to accept ‘fix your state!’ as an answer.

1 Like

FYI, Wisconsin has the same issue:

In Vermont these duplicate name situations are generally disambiguated with a suffix. When a distinction in necessary, the two municipalities sharing the name Rutland are called Rutland City and Rutland Town. The full official names are the City of Rutland and the Town of Rutland, but the shorter, suffixed variants are used more frequently. They can be found on maps, signs, and each government’s website:


For OSM, this means the. Rutland City boundary gets:

official_name=City of Rutland
name=Rutland City
alt_name=Rutland
border_type=city

and the Rutland Town boundary gets:

official_name=Town of Rutland
name=Rutland Town
alt_name=Rutland
border_type=town

It seems like this convention is not used across the lake in New York state which makes things more difficult. How do New York maps focusing on city/town/village boundaries usually handle this? I haven’t been able to find any good examples.

1 Like

It appears to me that the City of Rye and Town of Rye are indeed the official names of these municipalities. It is how the governments refer to themselves on their websites:

I’ve found this to very often be the case, but these official names are generally used less frequently than shorter variants. Typically, the full name is used when referring specifically to the town or city government, and the shorter variant is used when referring to the territory in general. So I would expect City of Rye and Town of Rye to be included in OSM tagging, but as official_name rather than name.

Answers to several questions from ZeLonewolf and ezekielf:

As far as I know, all the municipalities in New York are officially named ‘City of XXX’, ‘Town of XXX’, ‘Village of XXX’. (“County of” XXX, too, for that matter, but it’s commoner to refer in speech to “XXX County.”) I sometimes hear “XXX City” or “XXX Village” but virtually never “XXX Town.” And it doesn’t sound odd at all to say “the Village of Cedarhurst” or “the City of Long Beach”. (although that’s mostly referring to the respective governments, since just “Cedarhurst” or “Long Beach” are unambiguous).

What USGS used to do - was to place both the Town and City in Roman capitals in the area, leave the Town line unlabeled, and label the City line with ‘CORPORATE BOUNDARY’ or some variation thereof. Where two municipalities other than Towns joined, the boundary might get “[name of City or Village] CORPORATE BOUNDARY” on either side. This convention gave the impression to a casual reader that Cities were a lower admin_level than Towns (they are not), but avoided the anomaly of a boundary between “Rye” and “Rye”.

It’s hard to read for Rye because it’s so feature-dense, but the same situation for Plattsburgh (just over the lake from ezekielf) can be seen at CalTopo - Backcountry Mapping Evolved

What do the locals call them? It depends.

It so happens that enclave cities like Rye and Plattsburgh generally have a shared identity with the towns of the same names. Someone living in Town of Rye would usually say that they live in “Rye”, and then clarify “but outside the city limits” if it’s actually relevant.

That’s not always the case. The strongest counter-example is probably the Town and Village of Hempstead. Ask an inhabitant of the Town of Hempstead where they live, and you won’t hear ‘Hempstead’ from anyone who doesn’t live in the Village of Hempstead. You’ll hear the name of another Village or Hamlet within the Town. Say that they live in ‘Hempstead’, and you’ll hear, “well, it’s Town of Hempstead, but it’s Inwood!” (or wherever).

I’ll say that I live in ‘Niskayuna’, which is a Town, but that’s because Niskayuna doesn’t have any villages or hamlets within its bounds and does have a local identity.

I’ll say that my daughter lives in ‘Scotia’ even though she’s outside the village limits, because she’s only a few blocks outside, in a densely built-up area contiguous with the village proper - in fact, she’s closer to downtown than a lot of people who live in the village. To say she lives in ‘Glenville’ would be confusing, unless I said ‘Town of Glenville’. And it doesn’t actually matter to anyone whether she’s inside the village or not, until it comes time to pay the taxes.

I’ll say that my brother lives in Narrowsburg, even though he’s far outside the village, because the Town of Tusten has no local identity to speak of. There was once a Tusten settlement, and there’s still a hamlet of the same name, but the former center of the town is now largely abandoned. Narrowsburg is the nearest post office.

Residents of the rural towns will often speak (incorrectly) of “Tusten Township” rather than “Town of Tusten”. And Towns in New York function akin to Townships in some other states.

Towns are basicallty political entities (they’re the form of government you get if you haven’t voted to incorporate) that may or may not actually have a strong local identity. If you’re mapping political boundaries, you need to have them (and the official names, in my opinion, are Just Fine for that). If what concerns you is ‘places’, then those places may or may not be towns.

I completely understand why name=* tags in New York State contain generics and also appreciate that it’s very consistent, thanks to @ke9tv’s tireless efforts. Australia uses a similar naming convention; for example, Melton lies in the City of Melton. I’m also reminded of how people all over the U.S. consider the common name of a county to include “County”, and people in some other states consider a township’s common name to include “Township”. Unfortunately, geocoders are failing to find cities and towns that share a name with counties, sometimes counties on other ends of the state. It isn’t purely the fault of this tagging convention, but more name tags could help mitigate the problems:

Another possibility might be to trim the name of one of the doppelgänger boundaries, moving the full name to official_name=*, but leaving it in place for the more obscure of the two. This would match Wikipedia’s naming convention. For example, the city would be just “Rye” (with the full name in official_name=*), while the town would be “Town of Rye” (with the specific in short_name=*), and the village within would be just “Rye Brook”, because there’s no need for disambiguation. On the other hand, if a town is more well-known than a tiny village, the village might get the specific instead of the town. This won’t look as weird on a rendered map’s boundary edge labels, and it might give users the Rye they’re searching for, but it would be a lot less predictable.

Right, well, I don’t really have a dog in this fight but I’m looking for OSM to match corresponding wikidata entries so I can write validation rules against them. I can tweak the validation rules however, but I don’t want to enforce validation against something weird unless we all agree that it’s the right flavor of weird.

Let me know what your validator needs. As far as I know, I’ve already added appropriate Wikidata links to all the relations representing NY municipalities, so it ought to be a pretty mindless task to scrub the data.

I suspect that would further complicate @ZeLonewolf’s life, since it represents yet another inconsistency. But I’ll let Brian weigh in on that.

Full list of validator findings for NYS is here.

Essentially, I need the label or one of the aliases of the wikidata entry to match the OSM name= tag. A whole bunch of the “Village of X” names in OSM only have “X” in wikidata. So either OSM should change to match wikidata or wikidata should get the additional aliases.

For sure, each of the Wikidata items should have the full official name as an alias. Ideally, this information would also be in official name (P1448). A validator constraint will warn that the official name isn’t cited, but I guess you could always say it’s stated in (P248) OSM, sending your validator into a bit of circular logic. :wink:

At the end of the day, name consistency is more of a side effect - my more important goal is making sure that the whole list of boundaries cited in wikidata matches the whole list of boundaries in OSM. Matching names and QIDs are the way I accomplish that.

Well, I think conceptually Wikidata should have better coverage of the full names, and OSM should have better coverage of the short names. As a happy side effect, your tool would be able to perform that reconciliation much more straightforwardly, isolating the actual omissions and errors, and Nominatim would probably be able to produce more relevant results.

If there’s specific rules in the form of “OSM tag X should always match wikidata property P”, them I’m happy to implement such a ruleset as long as they can be described clearly.

In an ideal world, name=* would correspond one for one with either native label (P1705) or name in native language (P1559), but there will always be exceptions like New York [City]. I think your heuristic would need to be more lenient, allowing a match with either of those properties, name (P2561), official name (P1448), and probably other properties I’m forgetting. Ultimately, it would have the same effect as matching on either the label or any of the aliases, as you’re doing.

If it would help to add ‘short_name=*’ to the more specific place in the cases where City collides with Town, Village collides with Town, or any of the three collide with County, that’s doable.

Another idea, as Minh mentioned, might be to add official name (P1448) to the Wikidata entry and official_name=* to the OSM one, so there’s at least one matching alias.

Nominatim is still going to get confused with Village of Schoharie within Town of Schoharie within County of Schoharie, but at least the Village would have a short_name=* that would match Wikidata. I don’t really have a good answer for the ‘false match’ problem when there’s that sort of ambiguity on the name without the generic prefix. The Cortland issue is largely a ‘fix your state’ problem, and even more confused than you might imagine. The former village, now hamlet, of Rochester is nowhere near the City of Rochester. There are two communities in New York named Florida. There is a village named Nassau in Rensselaer County (not Nassau County!). There’s a hamlet named ‘Inwood’ in Town of Hempstead, and a neighbourhood named ‘Inwood’ in Manhattan. We’re messy that way. We even have two identically named State Parks at opposite ends of the state. (Robert Moses State Park.)

I’ll be happy to go with whatever consensus emerges and try to make appropriate repairs to the boundary relations and place nodes.

Just, wow.

As of the current version of the validator, I’m now:

  • Treating official name (P1448) as equivalent to an alias when matching OSM name to wikidata
  • Validating that P1448 matches official_name if both are present, and flagging a warning if only one is present.
  • Validating that P1813 matches short_name if both are present, and flagging a warning if only one is present.

The preferable “fix” from my perspective for these New York entities is to add P1448 entries into wikidata for each of these, and also matching official_name tags. If we want to do short_name at the same time for completeness, P1813 entries should get added as well.

If that’s not suitable, happy to hear further discussion.

1 Like

As a further update, I’ve copied all of the City of / Village of / Town of names into the P1448 (official name) property in wikidata. And then, I reversed that data back down to the official_name property in OSM along with P1813 to short_name where it happened to already exist. This grabbed a few extra data elements where those properties already existed, including a few cases where a member way of a boundary relation had a wikidata tag and corresponding properties.

This change is in this changeset for reference.

1 Like