From: Sarah Hoffmann Date: Tue, 1 Dec 2020 21:37:09 +0000 (+0100) Subject: Improve guessing of labels for Nominatim results X-Git-Tag: live~2370^2 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/a7b95e2a63e31f8c293cff014333b4da2dc0dc11 Improve guessing of labels for Nominatim results This adapts to two changes in place handling by Nominatim: * Place links that are computed by Nominatim are now found in extratags['linked_places']. Keep the check for extratags['place'] as this may contain an explicitly mapped place label. * Use address rank for guessing the admin level. This gets normalised by Nominatim with respect to country-specific use of admin_level. Also adds additional labels for admin levels, so that we now have complete coverage for all levels that are in use in OSM. --- diff --git a/app/controllers/geocoder_controller.rb b/app/controllers/geocoder_controller.rb index 309950308..7d05b6765 100644 --- a/app/controllers/geocoder_controller.rb +++ b/app/controllers/geocoder_controller.rb @@ -149,10 +149,10 @@ class GeocoderController < ApplicationController t "geocoder.search_osm_nominatim.prefix.#{klass}.#{type}", :default => type.tr("_", " ").capitalize end if klass == "boundary" && type == "administrative" - rank = (place.attributes["place_rank"].to_i + 1) / 2 + rank = (place.attributes["address_rank"].to_i + 1) / 2 prefix_name = t "geocoder.search_osm_nominatim.admin_levels.level#{rank}", :default => prefix_name place.elements["extratags"].elements.each("tag") do |extratag| - prefix_name = t "geocoder.search_osm_nominatim.prefix.place.#{extratag.attributes['value']}", :default => prefix_name if extratag.attributes["key"] == "place" + prefix_name = t "geocoder.search_osm_nominatim.prefix.place.#{extratag.attributes['value']}", :default => prefix_name if extratag.attributes["key"] == "linked_place" || extratag.attributes["key"] == "place" end end prefix = t "geocoder.search_osm_nominatim.prefix_format", :name => prefix_name diff --git a/config/locales/en.yml b/config/locales/en.yml index c7613cfd4..7e7302e79 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1244,12 +1244,15 @@ en: "yes": "Waterway" admin_levels: level2: "Country Boundary" + level3: "Region Boundary" level4: "State Boundary" level5: "Region Boundary" level6: "County Boundary" + level7: "Municipality Boundary" level8: "City Boundary" level9: "Village Boundary" level10: "Suburb Boundary" + level11: "Neighbourhood Boundary" types: cities: Cities towns: Towns