]> git.openstreetmap.org Git - nominatim.git/commitdiff
flex: simplify name handling
authorSarah Hoffmann <lonvia@denofr.de>
Thu, 15 Dec 2022 14:48:04 +0000 (15:48 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Sun, 18 Dec 2022 09:10:58 +0000 (10:10 +0100)
settings/flex-base.lua
settings/import-extratags.lua

index a4c1d561df881bdc7cc2d9efe2620b16041a3ed2..9663f96052aa69fa2aecbffe7c1867b1b8043f02 100644 (file)
@@ -156,6 +156,28 @@ function Place:grab_name(data)
     return count
 end
 
+function Place:grab_name_parts(data)
+    local fallback = nil
+
+    if data.groups ~= nil then
+        for k, v in pairs(self.object.tags) do
+            local atype = data.groups(k, v)
+
+            if atype ~= nil then
+                self.names[k] = v
+                if atype == 'main' then
+                    self.has_name = true
+                elseif atype == 'house' then
+                    self.has_name = true
+                    fallback = {'place', 'house', 'always'}
+                end
+            end
+        end
+    end
+
+    return fallback
+end
+
 function Place:grab_tag(key)
     return self.object:grab_tag(key)
 end
@@ -401,8 +423,6 @@ function osm2pgsql.process_relation(object)
 end
 
 function process_tags(o)
-    local fallback
-
     o:delete{match = PRE_DELETE}
     o:grab_extratags{match = PRE_EXTRAS}
 
@@ -413,10 +433,10 @@ function process_tags(o)
         end}
     end
 
+    -- name keys
+    local fallback = o:grab_name_parts{groups=NAMES}
+
     -- address keys
-    if o:grab_name{match=HOUSENAME_TAGS} > 0 then
-        fallback = {'place', 'house', 'always'}
-    end
     if o:grab_address_parts{groups=ADDRESS_TAGS} > 0 and fallback == nil then
         fallback = {'place', 'house', 'always'}
     end
@@ -432,10 +452,6 @@ function process_tags(o)
         return
     end
 
-    -- name keys
-    o:grab_name{match = NAMES}
-    o:grab_name{match = REFS, include_on_name = false}
-
     o:delete{match = POST_DELETE}
     o:grab_extratags{match = POST_EXTRAS}
 
index 62f14edf7cba5a589d499387cb0ec48b40e65298..67a7f5e7cd87d635ad466d263367cdbd277acaa1 100644 (file)
@@ -91,8 +91,7 @@ PRE_EXTRAS = tag_match{keys = {'*:prefix', '*:suffix', 'name:prefix:*', 'name:su
                                'addr:street:name', 'addr:street:type'}
                       }
 
-
-NAMES = tag_match{keys = {'name', 'name:*',
+NAMES = key_group{main = {'name', 'name:*',
                           'int_name', 'int_name:*',
                           'nat_name', 'nat_name:*',
                           'reg_name', 'reg_name:*',
@@ -101,12 +100,12 @@ NAMES = tag_match{keys = {'name', 'name:*',
                           'alt_name', 'alt_name:*', 'alt_name_*',
                           'official_name', 'official_name:*',
                           'place_name', 'place_name:*',
-                          'short_name', 'short_name:*', 'brand'}}
-
-REFS = tag_match{keys = {'ref', 'int_ref', 'nat_ref', 'reg_ref', 'loc_ref', 'old_ref',
-                         'iata', 'icao', 'pcode', 'pcode:*', 'ISO3166-2'}}
-
-HOUSENAME_TAGS = tag_match{keys = {'addr:housename'}}
+                          'short_name', 'short_name:*', 'brand'},
+                   extra = {'ref', 'int_ref', 'nat_ref', 'reg_ref',
+                            'loc_ref', 'old_ref',
+                            'iata', 'icao', 'pcode', 'pcode:*', 'ISO3166-2'},
+                   house = {'addr:housename'}
+                  }
 
 ADDRESS_TAGS = key_group{main = {'addr:housenumber',
                                  'addr:conscriptionnumber',