]> git.openstreetmap.org Git - nominatim.git/commitdiff
Merge remote-tracking branch 'upstream/master'
authorSarah Hoffmann <lonvia@denofr.de>
Thu, 3 Dec 2020 08:42:15 +0000 (09:42 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Thu, 3 Dec 2020 08:42:15 +0000 (09:42 +0100)
lib/setup/SetupClass.php
osm2pgsql
sql/functions/placex_triggers.sql
test/bdd/db/import/linking.feature
utils/update.php

index fd31f0fe4143b834b2fbf63d693ad2f08b17eefc..f16c9e60cc3a22bcc713046cade8b791a5fc9136 100755 (executable)
@@ -201,6 +201,8 @@ class SetupFunctions
         $oCmd->addParams('--output', 'gazetteer');
         $oCmd->addParams('--hstore');
         $oCmd->addParams('--number-processes', 1);
+        $oCmd->addParams('--with-forward-dependencies', 'false');
+        $oCmd->addParams('--log-progress', 'true');
         $oCmd->addParams('--cache', $this->iCacheMemory);
         $oCmd->addParams('--port', $this->aDSNInfo['port']);
 
index 94a5060353179f4cf3e92aa622a2aa5d1afa6fee..8e9704f2d155172b7c5885c67892c27ac7521c5c 160000 (submodule)
--- a/osm2pgsql
+++ b/osm2pgsql
@@ -1 +1 @@
-Subproject commit 94a5060353179f4cf3e92aa622a2aa5d1afa6fee
+Subproject commit 8e9704f2d155172b7c5885c67892c27ac7521c5c
index e80f14cb6033f7582a59a007670d381c0c3bc882..87f15e8c59954f7ab97ec31594f1f8525692a10d 100644 (file)
@@ -97,7 +97,7 @@ BEGIN
         -- Instead simply use the containing area with the largest rank.
         FOR location IN
           SELECT place_id FROM placex
-            WHERE bbox @ geometry AND _ST_Covers(geometry, ST_Centroid(bbox))
+            WHERE bbox && geometry AND _ST_Covers(geometry, ST_Centroid(bbox))
                   AND rank_address between 5 and 25
             ORDER BY rank_address desc
         LOOP
@@ -112,7 +112,7 @@ BEGIN
         -- contains the bbox, only use addressable features
         FOR location IN
           SELECT place_id FROM placex
-            WHERE bbox @ geometry AND _ST_Covers(geometry, ST_Centroid(bbox))
+            WHERE bbox && geometry AND _ST_Covers(geometry, ST_Centroid(bbox))
                   AND rank_address between 5 and 25
             ORDER BY rank_address desc
         LOOP
@@ -183,6 +183,7 @@ BEGIN
       WHERE make_standard_name(name->'name') = bnd_name
         AND placex.class = 'place' AND placex.type = bnd.extratags->'place'
         AND placex.osm_type = 'N'
+        AND placex.linked_place_id is null
         AND placex.rank_search < 26 -- needed to select the right index
         AND _st_covers(bnd.geometry, placex.geometry)
     LOOP
@@ -197,6 +198,7 @@ BEGIN
       WHERE placex.class = 'place' AND placex.osm_type = 'N'
         AND placex.extratags ? 'wikidata' -- needed to select right index
         AND placex.extratags->'wikidata' = bnd.extratags->'wikidata'
+        AND placex.linked_place_id is null
         AND placex.rank_search < 26
         AND _st_covers(bnd.geometry, placex.geometry)
       ORDER BY make_standard_name(name->'name') = bnd_name desc
@@ -219,6 +221,7 @@ BEGIN
                                                          false, placex.postcode)).address_rank)
              OR (bnd.rank_address = 0 and placex.rank_search = bnd.rank_search))
         AND placex.osm_type = 'N'
+        AND placex.linked_place_id is null
         AND placex.rank_search < 26 -- needed to select the right index
         AND _st_covers(bnd.geometry, placex.geometry)
     LOOP
index 1e0d131a385abf896ca098ab429e0af5ea44b5d3..e2696e637098dab0d316c487d0764e348e93ca9c 100644 (file)
@@ -231,3 +231,21 @@ Feature: Linking of places
         And placex contains
          | object | centroid |
          | R13    | in geometry  |
+
+    Scenario: Place nodes can only be linked once
+        Given the named places
+         | osm  | class    | type | extra+wikidata | geometry |
+         | N2   | place    | city | Q1234          | 0 0 |
+        And the named places
+         | osm  | class    | type           | extra+wikidata | admin | geometry |
+         | R1   | boundary | administrative | Q1234          | 8     | poly-area:0.1 |
+         | R2   | boundary | administrative | Q1234          | 9     | poly-area:0.01 |
+        When importing
+        Then placex contains
+         | object | linked_place_id |
+         | N2     | R1              |
+        And placex contains
+         | object | extratags                |
+         | R1     | 'linked_place' : 'city', 'wikidata': 'Q1234'  |
+         | R2     | 'wikidata': 'Q1234'                     |
+
index 87a5a294221e5fed07f83e42af1e602fb8e1c49f..6e6a99abbdee1e566b5494622c850e8824032a23 100644 (file)
@@ -71,6 +71,8 @@ $oOsm2pgsqlCmd = (new \Nominatim\Shell(CONST_Osm2pgsql_Binary))
                  ->addParams('--latlong')
                  ->addParams('--append')
                  ->addParams('--slim')
+                 ->addParams('--with-forward-dependencies', 'false')
+                 ->addParams('--log-progress', 'true')
                  ->addParams('--number-processes', 1)
                  ->addParams('--cache', $iCacheMemory)
                  ->addParams('--output', 'gazetteer')