]> git.openstreetmap.org Git - nominatim.git/commitdiff
Merge remote-tracking branch 'upstream/master'
authorSarah Hoffmann <lonvia@denofr.de>
Tue, 1 Sep 2020 19:52:44 +0000 (21:52 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Tue, 1 Sep 2020 19:52:44 +0000 (21:52 +0200)
settings/address-levels.json
settings/import-extratags.style
settings/import-full.style
sql/functions/place_triggers.sql
sql/functions/placex_triggers.sql
test/bdd/db/import/placex.feature
test/bdd/db/import/rank_computation.feature
test/bdd/db/update/simple.feature
test/bdd/steps/db_ops.py

index dff0e250fdbd2cb634ade170b34751709b75f82e..377a45761986734b75f8ae5c1be2b9a89d41e63d 100644 (file)
@@ -29,7 +29,9 @@
           "square" : 25,
           "houses" : [28, 0],
           "farm" : [20, 0],
-          "locality" : [20, 0]
+          "locality" : [20, 0],
+          "house" : 30,
+          "" : [22, 0]
       },
       "boundary" : {
           "administrative2" : 4,
@@ -42,7 +44,8 @@
           "administrative9" : 18,
           "administrative10" : 20,
           "administrative11" : 22,
-          "administrative12" : 24
+          "administrative12" : 24,
+          "" : [25, 0]
       },
       "landuse" : {
           "residential" : 22,
@@ -88,7 +91,7 @@
           "" : [20, 0]
       },
       "historic" : {
-          "neighbourhood" : [30, 0]
+          "neighbourhood" : [22, 0]
       }
   }
 },
index d1ae5511f0c95a8335fa2d01342ff57c0d46162b..184650f303c95e75479924b5a10a6a6dad9826e4 100644 (file)
 {
     "keys" : ["boundary"],
     "values" : {
+        "place" : "skip",
         "" : "main,with_name"
     }
 },
index 0e2d62e7ca992917a62579a21f8a5dd6af0ff74b..0c49f23d4daa71185873a6f970180d1ded170640 100644 (file)
 {
     "keys" : ["boundary"],
     "values" : {
+        "place" : "skip",
         "" : "main,with_name"
     }
 },
index 71f918c544d0d2c21828cd3d149c70b9bd201b2f..b7b51150dcf6269fc05d631142789b02583c05e8 100644 (file)
@@ -262,7 +262,7 @@ BEGIN
 
   -- deleting large polygons can have a massive effect on the system - require manual intervention to let them through
   IF st_area(OLD.geometry) > 2 and st_isvalid(OLD.geometry) THEN
-    SELECT bool_or(not (rank_address = 0 or rank_address > 26)) as ranked FROM placex WHERE osm_type = OLD.osm_type and osm_id = OLD.osm_id and class = OLD.class and type = OLD.type INTO has_rank;
+    SELECT bool_or(not (rank_address = 0 or rank_address > 25)) as ranked FROM placex WHERE osm_type = OLD.osm_type and osm_id = OLD.osm_id and class = OLD.class and type = OLD.type INTO has_rank;
     IF has_rank THEN
       insert into import_polygon_delete (osm_type, osm_id, class, type) values (OLD.osm_type,OLD.osm_id,OLD.class,OLD.type);
       RETURN NULL;
index 38b3421f7bff8f7c60a35c337d358c267707e1c1..3ddb97c04240225d87345360bbddf7e3ddbd52d7 100644 (file)
@@ -92,7 +92,7 @@ BEGIN
     END IF;
 
     IF fallback THEN
-      IF ST_Area(bbox) < 0.01 THEN
+      IF ST_Area(bbox) < 0.005 THEN
         -- for smaller features get the nearest road
         SELECT getNearestRoadPlaceId(poi_partition, bbox) INTO parent_place_id;
         --DEBUG: RAISE WARNING 'Checked for nearest way (%)', parent_place_id;
@@ -596,7 +596,9 @@ BEGIN
                             (NEW.extratags->'capital') = 'yes',
                             NEW.address->'postcode');
   -- We must always increase the address level relative to the admin boundary.
-  IF NEW.class = 'boundary' and NEW.type = 'administrative' and NEW.osm_type = 'R' THEN
+  IF NEW.class = 'boundary' and NEW.type = 'administrative'
+     and NEW.osm_type = 'R' and NEW.rank_address > 0
+  THEN
     parent_address_level := get_parent_address_level(NEW.centroid, NEW.admin_level);
     IF parent_address_level >= NEW.rank_address THEN
       IF parent_address_level >= 24 THEN
index 594f3538e5b11f1e0a3d00bf02a207b2fff02446..2b7c8cd86cfc626058ffacde76c02ed3b238ab3a 100644 (file)
@@ -148,9 +148,9 @@ Feature: Import into placex
         And placex contains
           | object | rank_search | rank_address |
           | R20    | 4           | 4 |
-          | R21    | 30          | 30 |
-          | R22    | 30          | 30 |
-          | R23    | 30          | 30 |
+          | R21    | 25          | 0 |
+          | R22    | 25          | 0 |
+          | R23    | 25          | 0 |
           | R40    | 4           | 0 |
           | R41    | 8           | 0 |
 
index 38d15e962bbe6b71dac1ce117caea91e5e057133..4f1cc6c015c7f109a1082a2946d4b89ecb8be03f 100644 (file)
@@ -24,7 +24,7 @@ Feature: Rank assignment
         Then placex contains
           | object | rank_search | rank_address |
           | N1     | 30          | 30 |
-          | N11    | 30          | 30 |
+          | N11    | 22          | 0 |
           | N12    | 2           | 0 |
           | N13    | 2           | 0 |
           | N14    | 4           | 0 |
@@ -48,11 +48,11 @@ Feature: Rank assignment
         Then placex contains
           | object | rank_search | rank_address |
           | R20    | 4           | 4 |
-          | R21    | 30          | 30 |
+          | R21    | 25          | 0 |
           | R22    | 12          | 12 |
           | R23    | 20          | 20 |
 
-    Scenario: Ranks for boundaries with place assignment go with place address ranks if available
+    Scenario: Ranks for addressable boundaries with place assignment go with place address ranks if available
         Given the named places
           | osm | class    | type           | admin | extra+place | geometry |
           | R20 | boundary | administrative | 3     | state       | (1 1, 2 2, 1 2, 1 1) |
@@ -63,7 +63,7 @@ Feature: Rank assignment
         Then placex contains
           | object | rank_search | rank_address |
           | R20    | 6           | 6  |
-          | R21    | 30          | 20 |
+          | R21    | 25          | 0  |
           | R22    | 12          | 16 |
           | R23    | 20          | 16 |
 
index 195d101e1485b56dda71f1d8788c1705cdeafcef..0ae0ac4a25a0a2376a092ad0b0cb09204b62de63 100644 (file)
@@ -28,17 +28,20 @@ Feature: Update of simple objects
 
     Scenario: Do delete large features of low rank
         Given the named places
-          | osm | class    | type          | geometry |
-          | W1  | place    | house         | poly-area:5.0 |
-          | R1  | boundary | national_park | poly-area:5.0 |
+          | osm | class    | type        | geometry |
+          | W1  | place    | house       | poly-area:5.0 |
+          | R1  | natural  | wood        | poly-area:5.0 |
+          | R2  | highway  | residential | poly-area:5.0 |
         When importing
         Then placex contains
           | object | rank_address |
           | R1     | 30 |
+          | R2     | 26 |
           | W1     | 30 |
-        When marking for delete R1,W1
+        When marking for delete R1,R2,W1
         Then placex has no entry for W1
         Then placex has no entry for R1
+        Then placex has no entry for R2
 
     Scenario: type mutation
         Given the places
@@ -103,4 +106,4 @@ Feature: Update of simple objects
           | W1  | boundary | historic       | Haha | 5     | (1, 2, 4, 3, 1) |
         Then placex contains
           | object | rank_address |
-          | W1     | 30            |
+          | W1     | 0            |
index f4c485fd99e34be3bf44b22fe39e825e9ba69e34..9604fd1089549946dfec258785d04afc7137412f 100644 (file)
@@ -110,6 +110,9 @@ class PlaceObjName(object):
         if self.pid is None:
             return "<null>"
 
+        if self.pid == 0:
+            return "place ID 0"
+
         cur = self.conn.cursor()
         cur.execute("""SELECT osm_type, osm_id, class
                        FROM placex WHERE place_id = %s""",