]> git.openstreetmap.org Git - nominatim.git/commitdiff
Merge pull request #745 from lonvia/restrict-poi-queries-results
authorSarah Hoffmann <lonvia@denofr.de>
Tue, 6 Jun 2017 18:55:15 +0000 (20:55 +0200)
committerGitHub <noreply@github.com>
Tue, 6 Jun 2017 18:55:15 +0000 (20:55 +0200)
limit number of considered places in POI queries

test/README.md
utils/setup.php

index f663aa68128ae6716a5ef9c676295e2a048869b5..f6112620018513f6ef49e1db7833eb8ca0ccccef 100644 (file)
@@ -24,6 +24,7 @@ tests for specific PHP functions.
 
 This test directory is sturctured as follows:
 
+```
  -+-   bdd         Functional API tests
   | \
   | +-  steps      Step implementations for test descriptions
@@ -34,7 +35,7 @@ This test directory is sturctured as follows:
   +-   php         PHP unit tests
   +-   scenes      Geometry test data
   +-   testdb      Base data for generating API test database
-
+```
 
 PHP Unit Tests
 ==============
@@ -44,8 +45,8 @@ Very low coverage.
 
 To execute the test suite run
 
-   cd test/php
-   phpunit ../
+    cd test/php
+    phpunit ../
 
 It will read phpunit.xml which points to the library, test path, bootstrap
 strip and set other parameters.
@@ -98,7 +99,10 @@ be documented.
 
 These tests are meant to test the different API endpoints and their parameters.
 They require a preimported test database, which consists of the import of a
-planet extract. The polygons defining the extract can be found in the test/testdb
+planet extract. A precompiled PBF with the necessary data can be downloaded from
+http://www.nominatim.org/data/test/nominatim-api-testdata.pbf
+
+The polygons defining the extract can be found in the test/testdb
 directory. There is also a reduced set of wikipedia data for this extract,
 which you need to import as well. For Tiger tests the data of South Dakota
 is required. Get the Tiger files `46*`.
index fe9926b623777bb4d8ea438fce448d8af4a7197e..eeba0a28e23ac79d1bedae806e6533c6a680ae75 100755 (executable)
@@ -490,17 +490,20 @@ if ($aCMDResult['calculate-postcodes'] || $aCMDResult['all']) {
     $bDidSomething = true;
     $oDB =& getDB();
     if (!pg_query($oDB->connection, 'DELETE from placex where osm_type=\'P\'')) fail(pg_last_error($oDB->connection));
-    $sSQL = "insert into placex (osm_type,osm_id,class,type,postcode,country_code,geometry) ";
-    $sSQL .= "select 'P',nextval('seq_postcodes'),'place','postcode',postcode,country_code,";
-    $sSQL .= "ST_SetSRID(ST_Point(x,y),4326) as geometry from (select country_code,postcode,";
+    $sSQL = "insert into placex (osm_type,osm_id,class,type,address,country_code,geometry) ";
+    $sSQL .= "select 'P',nextval('seq_postcodes'),'place','postcode',";
+    $sSQL .= "hstore('postcode', pc),country_code,";
+    $sSQL .= "ST_SetSRID(ST_Point(x,y),4326) as geometry from (select country_code,";
+    $sSQL .= "address->'postcode' as pc,";
     $sSQL .= "avg(st_x(st_centroid(geometry))) as x,avg(st_y(st_centroid(geometry))) as y ";
-    $sSQL .= "from placex where postcode is not null group by country_code,postcode) as x ";
+    $sSQL .= "from placex where address ? 'postcode' group by country_code,pc) as x ";
     $sSQL .= "where ST_Point(x,y) is not null";
     if (!pg_query($oDB->connection, $sSQL)) fail(pg_last_error($oDB->connection));
 
     if (CONST_Use_Extra_US_Postcodes) {
-        $sSQL = "insert into placex (osm_type,osm_id,class,type,postcode,country_code,geometry) ";
-        $sSQL .= "select 'P',nextval('seq_postcodes'),'place','postcode',postcode,'us',";
+        $sSQL = "insert into placex (osm_type,osm_id,class,type,address,country_code,geometry) ";
+        $sSQL .= "select 'P',nextval('seq_postcodes'),'place','postcode',";
+        $sSQL .= "hstore('postcode', postcode),'us',";
         $sSQL .= "ST_SetSRID(ST_Point(x,y),4326) as geometry from us_postcode";
         if (!pg_query($oDB->connection, $sSQL)) fail(pg_last_error($oDB->connection));
     }