]> git.openstreetmap.org Git - nominatim.git/blobdiff - sql/functions.sql
Merge remote-tracking branch 'upstream/master'
[nominatim.git] / sql / functions.sql
index 541754447495ceacf84119deada7d6ad0eddbc86..f6b221f9f76a9f8fb4adc18c1fb439cb68e179a3 100644 (file)
@@ -582,10 +582,9 @@ END;
 $$
 LANGUAGE plpgsql IMMUTABLE;
 
-CREATE OR REPLACE FUNCTION get_partition(place geometry, in_country_code VARCHAR(10)) RETURNS INTEGER
+CREATE OR REPLACE FUNCTION get_partition(in_country_code VARCHAR(10)) RETURNS INTEGER
   AS $$
 DECLARE
-  place_centre GEOMETRY;
   nearcountry RECORD;
 BEGIN
   FOR nearcountry IN select partition from country_name where country_code = in_country_code
@@ -958,7 +957,7 @@ BEGIN
 
   NEW.calculated_country_code := lower(get_country_code(NEW.geometry));
 
-  NEW.partition := get_partition(NEW.geometry, NEW.calculated_country_code);
+  NEW.partition := get_partition(NEW.calculated_country_code);
   NEW.geometry_sector := geometry_sector(NEW.partition, NEW.geometry);
 
   -- copy 'name' to or from the default language (if there is a default language)
@@ -1069,18 +1068,6 @@ BEGIN
       ELSEIF NEW.type in ('village','hamlet','municipality','district','unincorporated_area','borough') THEN
         NEW.rank_search := 19;
         NEW.rank_address := 16;
-      ELSEIF NEW.type in ('airport') AND ST_GeometryType(NEW.geometry) in ('ST_Polygon','ST_MultiPolygon') THEN
-        NEW.rank_search := 18;
-        NEW.rank_address := 17;
-      ELSEIF NEW.type in ('moor') AND ST_GeometryType(NEW.geometry) in ('ST_Polygon','ST_MultiPolygon') THEN
-        NEW.rank_search := 17;
-        NEW.rank_address := 18;
-      ELSEIF NEW.type in ('moor') THEN
-        NEW.rank_search := 17;
-        NEW.rank_address := 0;
-      ELSEIF NEW.type in ('national_park') THEN
-        NEW.rank_search := 18;
-        NEW.rank_address := 18;
       ELSEIF NEW.type in ('suburb','croft','subdivision','isolated_dwelling') THEN
         NEW.rank_search := 20;
         NEW.rank_address := NEW.rank_search;
@@ -1091,12 +1078,9 @@ BEGIN
         IF (NEW.extratags -> 'locality') = 'townland' THEN
           NEW.rank_address := 20;
         END IF;
-      ELSEIF NEW.type in ('hall_of_residence','neighbourhood','housing_estate','nature_reserve') THEN
+      ELSEIF NEW.type in ('neighbourhood') THEN
         NEW.rank_search := 22;
         NEW.rank_address := 22;
-      ELSEIF NEW.type in ('airport','street') THEN
-        NEW.rank_search := 26;
-        NEW.rank_address := NEW.rank_search;
       ELSEIF NEW.type in ('house','building') THEN
         NEW.rank_search := 30;
         NEW.rank_address := NEW.rank_search;
@@ -1352,20 +1336,21 @@ BEGIN
       -- for countries, believe the mapped country code,
       -- so that we remain in the right partition if the boundaries
       -- suddenly expand.
-      NEW.partition := get_partition(place_centroid, lower(NEW.country_code));
+      NEW.partition := get_partition(lower(NEW.country_code));
       IF NEW.partition = 0 THEN
         NEW.calculated_country_code := lower(get_country_code(place_centroid));
-        NEW.partition := get_partition(place_centroid, NEW.calculated_country_code);
+        NEW.partition := get_partition(NEW.calculated_country_code);
       ELSE
         NEW.calculated_country_code := lower(NEW.country_code);
       END IF;
     ELSE
       IF NEW.rank_search > 4 THEN
+        --NEW.calculated_country_code := lower(get_country_code(NEW.geometry, NEW.country_code));
         NEW.calculated_country_code := lower(get_country_code(place_centroid));
       ELSE
         NEW.calculated_country_code := NULL;
       END IF;
-      NEW.partition := get_partition(place_centroid, NEW.calculated_country_code);
+      NEW.partition := get_partition(NEW.calculated_country_code);
     END IF;
     NEW.geometry_sector := geometry_sector(NEW.partition, place_centroid);
 
@@ -2832,7 +2817,7 @@ DECLARE
 BEGIN
 
   place_centroid := ST_Centroid(pointgeo);
-  out_partition := get_partition(place_centroid, in_countrycode);
+  out_partition := get_partition(in_countrycode);
   out_parent_place_id := null;
 
   address_street_word_id := get_name_id(make_standard_name(in_street));