]> git.openstreetmap.org Git - rails.git/commitdiff
Improve guessing of labels for Nominatim results
authorSarah Hoffmann <lonvia@denofr.de>
Tue, 1 Dec 2020 21:37:09 +0000 (22:37 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Tue, 1 Dec 2020 21:52:40 +0000 (22:52 +0100)
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.

app/controllers/geocoder_controller.rb
config/locales/en.yml

index 3099503086151e09615adb594330bf500f55995d..7d05b6765b3be1a965dd6f1d7a911fec06151b74 100644 (file)
@@ -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
index c7613cfd4f2c9692df1fef1718bffb897140f2b8..7e7302e7983fa85e5c71055eef999ccd9525db16 100644 (file)
@@ -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