]> git.openstreetmap.org Git - nominatim.git/commitdiff
accept any OSM type in street member of associatedStreet
authorSarah Hoffmann <lonvia@denofr.de>
Mon, 2 May 2022 07:48:51 +0000 (09:48 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Mon, 2 May 2022 07:48:51 +0000 (09:48 +0200)
This is needed for pedestrian areas mapped as multipolygons
and consequently as relations. The lookup in placex guarantees
that the referenced OSM object is indeed a street.

Fixes #2669.

lib-sql/functions/placex_triggers.sql
test/bdd/db/import/parenting.feature

index f92b211394763ec899e6edbf9f09250992972475..2c1b3bdbb97b87df1c09e5bbabb2d1d38f8e603c 100644 (file)
@@ -120,7 +120,8 @@ BEGIN
       IF location.members[i+1] = 'street' THEN
         FOR parent IN
           SELECT place_id from placex
-           WHERE osm_type = 'W' and osm_id = substring(location.members[i],2)::bigint
+           WHERE osm_type = upper(substring(location.members[i], 1, 1))
+                 and osm_id = substring(location.members[i], 2)::bigint
                  and name is not null
                  and rank_search between 26 and 27
         LOOP
index 81a924463b15d69eb77259dce28279e32fe4e058..ba4cc28cf36d338758293d6bb143c3ffc8f6dd78 100644 (file)
@@ -355,6 +355,29 @@ Feature: Parenting of objects
          | object | parent_place_id |
          | N1     | W3 |
 
+
+    Scenario: street member in associatedStreet relation can be a relation
+        Given the grid
+          | 1 |   |   | 2 |
+          | 3 |   |   | 4 |
+          |   |   |   |   |
+          |   | 9 |   |   |
+          | 5 |   |   | 6 |
+        And the places
+          | osm | class | type  | housenr | geometry |
+          | N9  | place | house | 34      | 9        |
+        And the named places
+          | osm | class   | type       | name      | geometry    |
+          | R14 | highway | pedestrian | Right St  | (1,2,4,3,1) |
+          | W14 | highway | pedestrian | Left St   | 5,6         |
+        And the relations
+          | id | members             | tags+type |
+          | 1  | N9:house,R14:street | associatedStreet |
+        When importing
+        Then placex contains
+          | object | parent_place_id |
+          | N9     | R14             |
+
     Scenario: POIs in building inherit address
         Given the scene building-on-street-corner
         And the named places