-- cheaper but less acurate
place_centroid := ST_PointOnSurface(NEW.geometry);
-- For searching near features rather use the centroid
- near_centroid := ST_Centroid(NEW.geometry);
+ near_centroid := ST_Envelope(NEW.geometry);
NEW.centroid := null;
NEW.postcode := null;
--DEBUG: RAISE WARNING 'Computing preliminary centroid at %',ST_AsText(place_centroid);
NEW.postcode := location.postcode;
END IF;
IF NEW.postcode is null THEN
- NEW.postcode := get_nearest_postcode(NEW.country_code, near_centroid);
+ NEW.postcode := get_nearest_postcode(NEW.country_code, NEW.geometry);
END IF;
END IF;
CASE WHEN NEW.rank_search >= 26
AND NEW.rank_search < 30
THEN NEW.geometry
- ELSE near_centroid END,
+ ELSE place_centroid END,
search_maxrank, isin_tokens)
LOOP
IF location.rank_address != location_rank_search THEN
SELECT placex.place_id, osm_type, osm_id, name,
CASE WHEN extratags ? 'place' THEN 'place' ELSE class END as class,
CASE WHEN extratags ? 'place' THEN extratags->'place' ELSE type END as 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)