From: Sarah Hoffmann Date: Fri, 7 Feb 2014 19:20:20 +0000 (+0100) Subject: Merge remote-tracking branch 'upstream/master' X-Git-Tag: deploy~559 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/002c94211724e5c47471ff2475b7226f3c87b353?hp=1f2ee8ed77695c2e475508f961db5b37f8d83bd6 Merge remote-tracking branch 'upstream/master' --- diff --git a/lib/PlaceLookup.php b/lib/PlaceLookup.php index 65aff13e..ed2f494d 100644 --- a/lib/PlaceLookup.php +++ b/lib/PlaceLookup.php @@ -41,8 +41,8 @@ $sLanguagePrefArraySQL = "ARRAY[".join(',',array_map("getDBQuoted", $this->aLangPrefOrder))."]"; - $sSQL = "select placex.place_id, partition, osm_type, osm_id, class, type, admin_level, housenumber, street, isin, postcode, country_code, extratags, parent_place_id, linked_place_id, rank_address, rank_search"; - $sSQL .= " importance, indexed_status, indexed_date, wikipedia, calculated_country_code, "; + $sSQL = "select placex.place_id, partition, osm_type, osm_id, class, type, admin_level, housenumber, street, isin, postcode, country_code, extratags, parent_place_id, linked_place_id, rank_address, rank_search, "; + $sSQL .= " coalesce(importance,0.75-(rank_search::float/40)) as importance, indexed_status, indexed_date, wikipedia, calculated_country_code, "; $sSQL .= " get_address_by_language(place_id, $sLanguagePrefArraySQL) as langaddress,"; $sSQL .= " get_name_by_language(name, $sLanguagePrefArraySQL) as placename,"; $sSQL .= " get_name_by_language(name, ARRAY['ref']) as ref,"; diff --git a/lib/template/address-jsonv2.php b/lib/template/address-jsonv2.php index baf53129..92cf4f1c 100644 --- a/lib/template/address-jsonv2.php +++ b/lib/template/address-jsonv2.php @@ -20,8 +20,14 @@ } if (isset($aPlace['lat'])) $aFilteredPlaces['lat'] = $aPlace['lat']; if (isset($aPlace['lon'])) $aFilteredPlaces['lon'] = $aPlace['lon']; + + $aFilteredPlaces['place_rank'] = $aPlace['rank_search']; + $aFilteredPlaces['category'] = $aPlace['class']; $aFilteredPlaces['type'] = $aPlace['type']; + + $aFilteredPlaces['importance'] = $aPlace['importance']; + $aFilteredPlaces['addresstype'] = strtolower($aPlace['addresstype']); $aFilteredPlaces['display_name'] = $aPlace['langaddress']; diff --git a/sql/functions.sql b/sql/functions.sql index acaa6d83..1e411e04 100644 --- a/sql/functions.sql +++ b/sql/functions.sql @@ -895,7 +895,7 @@ BEGIN insert into placex (osm_type, osm_id, class, type, admin_level, housenumber, street, addr_place, isin, postcode, country_code, parent_place_id, rank_address, rank_search, indexed_status, geometry) values ('N',prevnode.osm_id, 'place', 'house', prevnode.admin_level, housenum, prevnode.street, prevnode.addr_place, prevnode.isin, coalesce(prevnode.postcode, defpostalcode), - prevnode.country_code, prevnode.parent_place_id, prevnode.rank_address, prevnode.rank_search, 1, ST_Line_Interpolate_Point(linegeo, (housenum::float-orginalstartnumber::float)/originalnumberrange::float)); + prevnode.country_code, prevnode.parent_place_id, prevnode.rank_address, prevnode.rank_search, 1, ST_LineInterpolatePoint(linegeo, (housenum::float-orginalstartnumber::float)/originalnumberrange::float)); newpoints := newpoints + 1; --RAISE WARNING 'interpolation number % % ',prevnode.place_id,housenum; END LOOP; @@ -1502,9 +1502,9 @@ BEGIN FOR relation IN SELECT place_id FROM placex WHERE ST_DWithin(location.geometry, placex.geometry, 0.001) and placex.rank_search = 26 and st_geometrytype(location.geometry) in ('ST_LineString') - ORDER BY (ST_distance(placex.geometry, ST_Line_Interpolate_Point(location.geometry,0))+ - ST_distance(placex.geometry, ST_Line_Interpolate_Point(location.geometry,0.5))+ - ST_distance(placex.geometry, ST_Line_Interpolate_Point(location.geometry,1))) ASC limit 1 + ORDER BY (ST_distance(placex.geometry, ST_LineInterpolatePoint(location.geometry,0))+ + ST_distance(placex.geometry, ST_LineInterpolatePoint(location.geometry,0.5))+ + ST_distance(placex.geometry, ST_LineInterpolatePoint(location.geometry,1))) ASC limit 1 LOOP --RAISE WARNING 'using nearest street to address interpolation line,0.001 %',relation; NEW.parent_place_id := relation.place_id; diff --git a/sql/partition-functions.src.sql b/sql/partition-functions.src.sql index d9da9b42..235e21a2 100644 --- a/sql/partition-functions.src.sql +++ b/sql/partition-functions.src.sql @@ -327,9 +327,9 @@ BEGIN RETURN; END IF; - p1 := ST_Line_Interpolate_Point(line,0); - p2 := ST_Line_Interpolate_Point(line,0.5); - p3 := ST_Line_Interpolate_Point(line,1); + p1 := ST_LineInterpolatePoint(line,0); + p2 := ST_LineInterpolatePoint(line,0.5); + p3 := ST_LineInterpolatePoint(line,1); -- start IF in_partition = -partition- THEN diff --git a/sql/tiger_import_start.sql b/sql/tiger_import_start.sql index f40f544b..d9def2b4 100644 --- a/sql/tiger_import_start.sql +++ b/sql/tiger_import_start.sql @@ -79,7 +79,7 @@ BEGIN FOR housenum IN startnumber..endnumber BY stepsize LOOP insert into location_property_tiger_import (place_id, partition, parent_place_id, housenumber, postcode, centroid) values (nextval('seq_place'), out_partition, out_parent_place_id, housenum, in_postcode, - ST_Line_Interpolate_Point(linegeo, (housenum::float-rangestartnumber::float)/numberrange::float)); + ST_LineInterpolatePoint(linegeo, (housenum::float-rangestartnumber::float)/numberrange::float)); newpoints := newpoints + 1; END LOOP; diff --git a/utils/setup.php b/utils/setup.php index 270c1a49..a5466432 100755 --- a/utils/setup.php +++ b/utils/setup.php @@ -132,6 +132,10 @@ } else { pgsqlRunScript('CREATE EXTENSION postgis'); } + if ($fPostgisVersion < 2.1) { + // Function was renamed in 2.1 and throws an annoying deprecation warning + pgsqlRunScript('ALTER FUNCTION st_line_interpolate_point(geometry, double precision) RENAME TO ST_LineInterpolatePoint'); + } $sVersionString = $oDB->getOne('select postgis_full_version()'); preg_match('#POSTGIS="([0-9]+)[.]([0-9]+)[.]([0-9]+)( r([0-9]+))?"#', $sVersionString, $aMatches); if (CONST_Postgis_Version != $aMatches[1].'.'.$aMatches[2]) diff --git a/utils/warm.php b/utils/warm.php new file mode 100755 index 00000000..923e2aba --- /dev/null +++ b/utils/warm.php @@ -0,0 +1,63 @@ +#!/usr/bin/php -Cq +setIncludeAddressDetails(true); + + echo "Warm reverse: "; + if ($bVerbose) echo "\n"; + for($i = 0; $i < 1000; $i++) { + $fLat = rand(-9000, 9000) / 100; + $fLon = rand(-18000, 18000) / 100; + if ($bVerbose) echo "$fLat, $fLon = "; + $oReverseGeocode->setLanguagePreference(array('en')); + $oReverseGeocode->setLatLon($fLat, $fLon); + $oReverseGeocode->setZoom(20); + $aDetails = $oReverseGeocode->lookup(); + if ($bVerbose) echo $aDetails['langaddress']."\n"; + else echo "."; + } + echo "\n"; + } + + if (!$aResult['reverse-only']) { + + $oGeocode =& new Geocode($oDB); + + echo "Warm search: "; + if ($bVerbose) echo "\n"; + $sSQL = 'select word from word where word is not null order by search_name_count desc limit 1000'; + foreach($oDB->getCol($sSQL) as $sWord) { + if ($bVerbose) echo "$sWord = "; + $oGeocode->setLanguagePreference(array('en')); + $oGeocode->setQuery($sWord); + $aSearchResults = $oGeocode->lookup(); + if ($bVerbose) echo $aSearchResults[0]['langaddress']."\n"; + else echo "."; + } + } +