Administrative boundaries for non-administrative areas in Sydney and Melbourne

I’ve received an issue for Nominatim asking how to manipulate the admin boundaries of Melbourne and Sydney, so that they show up in an order that does not correspond to the order of the admin_level. Digging into this, the source of this question is likely the revert of changeset 166663977, which tried to put admin levels for Melbourne into a proper order.

@aharvey writes:

The “Sydney” place=city at relation/5750005 and “Melbourne” place=city at relation/4246124 cover the Sydney and Melbourne urban areas roughly considered part of those cities, although there’s no formal definition so the extents are debatable. The boundaries aren’t set by the government nor are they used for administrative purposes, so in actuality they probably shouldn’t have an admin_level set at all, however we do and have been using 7.

This is a serious issue for data users as it breaks the assumption that admin_levels represent an order of hierarchy. You now have the suburbs of Melbourne like Relation: ‪City of Maribyrnong‬ (‪3330965‬) | OpenStreetMap at admin_level=6 while the overarching Melbourne is one level lower at 7.

I see two ways to improve the situation:

  • Move Sydney and Melbourne to admin_level=5. That would clash with the currently used admin_levels in Australia as far as I can see and it would reinstate a proper hierarchy.
  • Stop using boundary=administrative for the Sydney and Melbourne areas. Given that they have no administrative function, it would be entirely proper to move them to boundary=place or (judging from the source tag on the relation) to boundary=statistical. Lots of other countries are now going this way. As long as you keep the place=city it will still be possible to identify them as the informal city areas.

Would one of the two options sound reasonable to you?

And a question marginally related to that: do the admin_level=6 boundaries even have any practical relevance other than defining who is the responsible council? I’m asking because while looking through the data, I found a lot of names like Oberon Council or Council of the City of Sydney and that doesn’t sound like a place description that should appear as part of an address to me.

Current admin_level boundaries appear to be designated as follows in the Australian Tagging Guidelines, for some extra context/insight into the current situation.

The values of the admin_level=* tag is specific to each country. In Australia the following values are used.

Admin Level Description Example
admin_level=4 State and Territory borders South Australia
admin_level=6 Local Government Areas (LGAs), Unincorporated Areas borders City of Mandurah, Unincorporated Far West Region
admin_level=7 District (ACT only), Significant Urban Areas (SUAs) borders District of Majura, Launceston
admin_level=9 Suburb/Locality borders Upper Mount Gravatt
1 Like

That’s not a suburb of Melbourne. Relation: ‪City of Maribyrnong‬ (‪3330965‬) | OpenStreetMap is a Local Government Area (LGA). A suburb would be relation/2399683.

The thing is that some Local Government Areas are smaller than a place=city, and some Local Government Areas are larger than a place=city.

I think this is the best way forward. I don’t know why they were tagged as boundary=administrative to begin with, but they aren’t administrative boundaries, they are just place=city. I didn’t even realise boundary=place was a tag until now, I thought we could just tag them as place=city and be done for ways, or type=multipolygon if a relation, but either way so long as they have place=city then it’s fine.

While mappers have used the Australian Buerau of Statistics’s boundaries to help inform where we should place the boundary, we don’t follow the ABS definition exactly, there fore shouldn’t use boundary=statistical. If we want to import the ABS boundaries they would go as new boundary=statistical areas.

Correct, they only define who is the responsible council, but that’s a useful thing to know and a useful thing to have included in OSM.

No they shouldn’t be part of the address, but admin_level doesn’t imply it’s used for addressing, just it forms part of the government administrative regions. In Australia we have the country boundary, state/territory boundaries, and local government area boundaries, they are the main administrative boundaries.

Then for addressing it’s

<unit>/<number> <street>
<suburb/locality> <state> <postcode>

where suburb/locality is admin_level=9

When doing a reverse geocode or place search then it’s not usually a good idea to include the local government area, that would just lead to confusion, unless you are doing an LGA lookup. Apart from the state/territory and country levels, I wouldn’t include any other admin_levels in a place context string, I’d just include the place=* features.

I just realised I’d already removed the admin_level from Sydney Relation History: ‪Sydney‬ (‪5750005‬) | OpenStreetMap.

Should our place=citys like Sydney, Melbourne have an admin_level?
  • Yes they should have an admin_level
  • No they should not have an admin_level
0 voters

type=multipolygon + place=city works as well. boundary=place came up because people wanted to use type=boundary which allows for additional member roles label and admin_centre. And a type=boundary without the additional boundary tag is odd.

Absolutely. I wasn’t suggesting removing them from OSM. I was just wondering if Nominatim should stop including them in the address hierarchy. It would mean that they are no longer shown in the result (e.g. Barkley Street, … City of Maribyrnong, …, Australia) but also that you can’t use it to narrow down the search anymore (e.g. searching for Barkley Street, Maribyrnong). It would still be indexed, though, meaning you can still find the the ‘City of Maribyrnong’ itself.

Note that it is only possible to remove them from the address hierarchy, if that works well for all of Australia, rural or urban. If, say, in Tasmania the admin_level=6 boundaries are meaningful then they need to stay for all of Australia, I’m afraid.

1 Like

That sounds ideal.

If someone searches for a Local Government Area, it should appear in the results, but it doesn’t make much sense to include it as part of the place context, regardless of where you are in Australia.

What would be useful is to include the place=region and place=district instead.

For example Nominatim Demo

shows up as “Australian Hydrographic Office, Station Street, Wollongong, Wollongong City Council, New South Wales, 2500, Australia”

For strictly address formatting it would be “Australian Hydrographic Office, Station Street, Wollongong, New South Wales, 2500, Australia”

But to help give users context of where the result is it could be “Australian Hydrographic Office, Station Street, Wollongong, Illawarra, New South Wales, 2500, Australia”

Best don’t get me started on, Sydney the suburb, Sydney CBD the “borough”, The City of Sydney as the municipality and Sydney as the city.

1 Like

We are like London in that regard… City of London, Greater London, London Region etc. Also forgot Greater Sydney Metro Area …

1 Like

Wasn’t there a PR to add in the Australian context for street addressing into Nominatim?

What would that cover in your opinion? When I think of the Sydney place=city, to me that’s probably the same as a “Greater Sydney Metro Area”.

I don’t think these questions are unique to Australia, usually when we think of cities, they are the urban areas and so the limits of the city are the limits of the urban area. It’s interesting in that what once were considered different towns (eg. Hornsby) have been swallowed up by the urban expansion of the city.

Curious as to what other countries do I seached for Berlin, a large city in Germany, interesting I found Relation: ‪Berlin‬ (‪62422‬) | OpenStreetMap which isn’t even tagged as place=city… Nominatim must use the fact that it has a label Node: ‪Berlin‬ (‪240109189‬) | OpenStreetMap which is place=city to assign the relation as a place=city.

Germany might not be the most interesting example. It is neatly ordered. Administrative areas are matching well with what is the common perception of place hierarchies and place areas. You’d rather want to look at countries where there is a mismatch between administrative entities and human perception of place areas. Sadly, I can’t give a good example right now. All the countries where I know that this is an issue are also struggling with finding a good solution.

Yes. Nominatim uses administrative boundaries mainly to get the area extend of a place and its admin_level as a general hint on what kind of place it might be (state, county, city, suburb, …). It then tries to get a better description of the type by first looking for a place tag on the relation directly and then trying to match a place node through a) a member with label role, b) a matching wikidata data and c) as a fallback doing some name matching. The place type then “shifts” the address level for the boundary and all its containing boundaries where “containing” is defined through the admin_level hierarchy.

So in the case of Berlin, it is mapped as a state (admin_level=4). Linking it to the city node shifts it down to city (which would be admin_level=8). Any administrative boundary inside Berlin that is mapped with admin_level=6 (usually corresponding to ‘county’) gets automatically shifted down as well and comes out as a suburb at admin_level=9.

This algorithm works nicely for most countries to account for the difference between rural and urban areas. The default mapping between admin_levels and place type for a country follows usually what is used in the rural areas. The admin boundaries in the urban areas have links against places and can be reclassified accordingly. But it works only as long as the numbers in the admin_level tag really form a hierarchy. That’s were Australia has an issue at the moment.

Also I should say: the assignment has worked well so far. boundary=administrative is more and more being used for purely administrative areas which correspond less to what goes as human perception for places. That makes them more and more problematic to use with Nominatim’s place hierarchy algorithm and I’m starting to think how to rely more on the place tags instead. That’s where my original question about the admin_level=6 boundaries in Australia comes from.

1 Like

I’ve dropped the admin_level and boundary=administrative from the major cities in Australia.

I realised we have place=state on our admin_level=4 states, so you could probably ignore the whole admin_level hierarchy completely and only rely on the place=* hierarchy which for a human perception of places.

But how does that go searching for Smith St, Here, rather than Smith St, There?