]> git.openstreetmap.org Git - nominatim.git/commitdiff
Merge remote-tracking branch 'upstream/master'
authorSarah Hoffmann <lonvia@denofr.de>
Sun, 29 Mar 2020 21:14:46 +0000 (23:14 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Sun, 29 Mar 2020 21:14:46 +0000 (23:14 +0200)
1  2 
lib/Geocode.php
sql/functions/address_lookup.sql

diff --combined lib/Geocode.php
index 0e5d4a53883924b110a054c8afe143759ff213bd,55dd46e78f44b270811a04d5bf8b2b9baba0c549..3336790fd650f1536c58d9d0906df391026e0ee0
@@@ -18,7 -18,7 +18,7 @@@ class Geocod
      protected $aLangPrefOrder = array();
  
      protected $aExcludePlaceIDs = array();
 -    protected $bReverseInPlan = false;
 +    protected $bReverseInPlan = true;
  
      protected $iLimit = 20;
      protected $iFinalLimit = 10;
          }
  
          $this->oPlaceLookup->loadParamArray($oParams, $sForceGeometryType);
-         $this->oPlaceLookup->setIncludePolygonAsPoints($oParams->getBool('polygon'));
          $this->oPlaceLookup->setIncludeAddressDetails($oParams->getBool('addressdetails', false));
      }
  
index dd096728124d1f4e5d13dae849e893d1ec091eda,1e423cd3cbcff8f430ce62ecaa4a0dc5a4cf9a3d..ccc982b8e6eaf404d73e517a09cabaf16b768728
@@@ -8,6 -8,7 +8,7 @@@ CREATE TYPE addressline as 
    name HSTORE,
    class TEXT,
    type TEXT,
+   place_type TEXT,
    admin_level INTEGER,
    fromarea BOOLEAN,
    isaddress BOOLEAN,
@@@ -193,7 -194,7 +194,7 @@@ BEGI
        searchcountrycode := NULL;
      END IF;
      countrylocation := ROW(location.place_id, location.osm_type, location.osm_id,
-                            location.name, location.class, location.type,
+                            location.name, location.class, location.type, NULL,
                             location.admin_level, true, location.isaddress,
                             location.rank_address, location.distance)::addressline;
      RETURN NEXT countrylocation;
    END LOOP;
  
    FOR location IN
-     SELECT placex.place_id, osm_type, osm_id, name,
-            CASE WHEN extratags ? 'place' or extratags ? 'linked_place'
-                 THEN 'place' ELSE class END as class,
-            coalesce(extratags->'place', extratags->'linked_place', type) as type,
+     SELECT placex.place_id, osm_type, osm_id, name, class, type,
+            coalesce(extratags->'place', extratags->'linked_place') as place_type,
 -           admin_level, fromarea, isaddress,
 +           admin_level, fromarea, isaddress and linked_place_id is NULL as isaddress,
             CASE WHEN rank_address = 11 THEN 5 ELSE rank_address END as rank_address,
             distance, country_code, postcode
        FROM place_addressline join placex on (address_place_id = placex.place_id)
      END IF;
      countrylocation := ROW(location.place_id, location.osm_type, location.osm_id,
                             location.name, location.class, location.type,
+                            location.place_type,
                             location.admin_level, location.fromarea,
                             location.isaddress, location.rank_address,
                             location.distance)::addressline;
        WHERE country_code = searchcountrycode LIMIT 1 INTO countryname;
  --RAISE WARNING '% % %',found,searchcountrycode,countryname;
      IF countryname IS NOT NULL THEN
-       location := ROW(null, null, null, countryname, 'place', 'country',
+       location := ROW(null, null, null, countryname, 'place', 'country', NULL,
                        null, true, true, 4, 0)::addressline;
        RETURN NEXT location;
      END IF;
    -- Finally add some artificial rows.
    IF searchcountrycode IS NOT NULL THEN
      location := ROW(null, null, null, hstore('ref', searchcountrycode),
-                     'place', 'country_code', null, true, false, 4, 0)::addressline;
+                     'place', 'country_code', null, null, true, false, 4, 0)::addressline;
      RETURN NEXT location;
    END IF;
  
    IF searchhousename IS NOT NULL THEN
      location := ROW(in_place_id, null, null, searchhousename, searchclass,
-                     searchtype, null, true, true, 29, 0)::addressline;
+                     searchtype, null, null, true, true, 29, 0)::addressline;
      RETURN NEXT location;
    END IF;
  
    IF searchhousenumber IS NOT NULL THEN
      location := ROW(in_place_id, null, null, hstore('ref', searchhousenumber),
-                     'place', 'house_number', null, true, true, 28, 0)::addressline;
+                     'place', 'house_number', null, null, true, true, 28, 0)::addressline;
      RETURN NEXT location;
    END IF;
  
    IF searchpostcode IS NOT NULL THEN
      location := ROW(null, null, null, hstore('ref', searchpostcode), 'place',
-                     'postcode', null, false, postcode_isaddress, 5, 0)::addressline;
+                     'postcode', null, null, false, postcode_isaddress, 5, 0)::addressline;
      RETURN NEXT location;
    END IF;