]> git.openstreetmap.org Git - nominatim.git/commitdiff
boundary address ranks must not go above 25
authorSarah Hoffmann <lonvia@denofr.de>
Sun, 9 Aug 2020 09:23:46 +0000 (11:23 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Wed, 12 Aug 2020 20:22:24 +0000 (22:22 +0200)
Fixes #1914.

sql/functions/placex_triggers.sql
test/bdd/db/import/rank_computation.feature

index 3faed24bb3cc31e951df20ccf8257c2a9fec2443..e179024833997b9e0b4bcf9c2a907ec5af9b6fb8 100644 (file)
@@ -592,7 +592,11 @@ BEGIN
   IF NEW.class = 'boundary' and NEW.type = 'administrative' THEN
     parent_address_level := get_parent_address_level(NEW.geometry, NEW.admin_level);
     IF parent_address_level >= NEW.rank_address THEN
-      NEW.rank_address := parent_address_level + 2;
+      IF parent_address_level >= 24 THEN
+        NEW.rank_address := 25;
+      ELSE
+        NEW.rank_address := parent_address_level + 2;
+      END IF;
     END IF;
   ELSE
     parent_address_level := 3;
@@ -836,7 +840,8 @@ BEGIN
       SELECT address_rank INTO place_address_level
         FROM compute_place_rank(NEW.country_code, 'A', 'place',
                                 NEW.extratags->'place', 0::SMALLINT, False, null);
-      IF place_address_level > parent_address_level THEN
+      IF place_address_level > parent_address_level and
+         place_address_level < 26 THEN
         NEW.rank_address := place_address_level;
       END IF;
     END IF;
index 051b1c310f67f603659e325b19d4faa6656056d5..185905209ab60ede843c94b6c0259e1f8c39c709 100644 (file)
@@ -101,3 +101,15 @@ Feature: Rank assignment
           | R21    | 16          | 18 |
           | R22    | 16          | 20 |
 
+    Scenario: Admin levels must not be larger than 25
+        Given the named places
+          | osm | class    | type           | admin | extra+place   | geometry |
+          | R20 | boundary | administrative | 6     | neighbourhood | (0 0, 0 2, 2 2, 2 0, 0 0) |
+          | R21 | boundary | administrative | 7     |               | (0 0, 0 1, 1 1, 1 0, 0 0) |
+          | R22 | boundary | administrative | 8     |               | (0 0, 0 0.5, 0.5 0.5, 0.5 0, 0 0) |
+        When importing
+        Then placex contains
+          | object | rank_search | rank_address |
+          | R20    | 12          | 22 |
+          | R21    | 14          | 24 |
+          | R22    | 16          | 25 |