]> git.openstreetmap.org Git - nominatim.git/commitdiff
ignore irrelevant extra tags on address interpolations
authorSarah Hoffmann <lonvia@denofr.de>
Sat, 13 Aug 2022 08:42:46 +0000 (10:42 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Sat, 13 Aug 2022 12:07:06 +0000 (14:07 +0200)
When deciding if an address interpolation has address information, only
look for addr:street and addr:place. If they are not there go looking
for the address on the address nodes. Ignores irrelevant tags like
addr:inclusion.

Fixes #2797.

lib-sql/functions/interpolation.sql
test/bdd/db/import/interpolation.feature
test/bdd/steps/steps_db_ops.py

index 3a99471101d0c9140967934812494bbed48135ed..96a105aecfca42c0fc6acc23f3558ea6567a72b7 100644 (file)
@@ -15,7 +15,7 @@ DECLARE
   location RECORD;
   waynodes BIGINT[];
 BEGIN
-  IF akeys(in_address) != ARRAY['interpolation'] THEN
+  IF in_address ? 'street' or in_address ? 'place' THEN
     RETURN in_address;
   END IF;
 
index 8c136d076ad63b9ed7de92fa44be03f0d7c8bbe4..b34d5adb29a94f51381b8936a8c6711e2339734d 100644 (file)
@@ -403,3 +403,33 @@ Feature: Import of address interpolations
         Then results contain
           | ID | osm_type | osm_id | type  | display_name |
           | 0  | node     | 1      | house | 0 |
+
+    Scenario: Parenting of interpolation with additional tags
+        Given the grid
+          | 1 |   |   |   |   |   |
+          |   |   |   |   |   |   |
+          |   | 8 |   |   | 9 |   |
+          |   |   |   |   |   |   |
+          | 2 |   |   |   |   | 3 |
+        Given the places
+          | osm | class | type  | housenr | addr+street |
+          | N8  | place | house | 10      | Horiz St    |
+          | N9  | place | house | 16      | Horiz St    |
+        And the places
+          | osm | class   | type        | name     | geometry |
+          | W1  | highway | residential | Vert St  | 1,2      |
+          | W2  | highway | residential | Horiz St | 2,3      |
+        And the places
+          | osm | class | type   | addr+interpolation | addr+inclusion | geometry |
+          | W10 | place | houses | even               | actual         | 8,9      |
+        And the ways
+          | id | nodes |
+          | 10 | 8,9   |
+        When importing
+        Then placex contains
+          | object | parent_place_id |
+          | N8     | W2              |
+          | N9     | W2              |
+        And W10 expands to interpolation
+          | start | end | parent_place_id |
+          | 12    | 14  | W2              |
index 8fd918f88fe7a3f70083be63650726738390aa9f..2f598f3d6c8f3479cbaf3b3b5168bd36b6cbaba8 100644 (file)
@@ -370,6 +370,6 @@ def check_location_property_osmline(context, oid, neg):
 
             DBRow(oid, res, context).assert_row(row, ('start', 'end'))
 
-        assert not todo
+        assert not todo, f"Unmatched lines in table: {list(context.table[i] for i in todo)}"