X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/30511fd3ab9d731b0afec202386fc2425a0b1b9f..868caeaf1b9572ed0c1fc3b6728ce294e940d5e5:/lib/lib.php
diff --git a/lib/lib.php b/lib/lib.php
index b5fbee3e..b5c4df13 100644
--- a/lib/lib.php
+++ b/lib/lib.php
@@ -38,7 +38,7 @@ function getDatabaseDate(&$oDB)
// Find the newest node in the DB
$iLastOSMID = $oDB->getOne("select max(osm_id) from place where osm_type = 'N'");
// Lookup the timestamp that node was created
- $sLastNodeURL = 'https://www.openstreetmap.org/api/0.6/node/'.$iLastOSMID."/1";
+ $sLastNodeURL = 'https://www.openstreetmap.org/api/0.6/node/'.$iLastOSMID.'/1';
$sLastNodeXML = file_get_contents($sLastNodeURL);
if ($sLastNodeXML === false) {
@@ -60,54 +60,6 @@ function byImportance($a, $b)
}
-function getWordSets($aWords, $iDepth)
-{
- $aResult = array(array(join(' ', $aWords)));
- $sFirstToken = '';
- if ($iDepth < 7) {
- while (sizeof($aWords) > 1) {
- $sWord = array_shift($aWords);
- $sFirstToken .= ($sFirstToken?' ':'').$sWord;
- $aRest = getWordSets($aWords, $iDepth+1);
- foreach ($aRest as $aSet) {
- $aResult[] = array_merge(array($sFirstToken), $aSet);
- }
- }
- }
- return $aResult;
-}
-
-function getInverseWordSets($aWords, $iDepth)
-{
- $aResult = array(array(join(' ', $aWords)));
- $sFirstToken = '';
- if ($iDepth < 8) {
- while (sizeof($aWords) > 1) {
- $sWord = array_pop($aWords);
- $sFirstToken = $sWord.($sFirstToken?' ':'').$sFirstToken;
- $aRest = getInverseWordSets($aWords, $iDepth+1);
- foreach ($aRest as $aSet) {
- $aResult[] = array_merge(array($sFirstToken), $aSet);
- }
- }
- }
- return $aResult;
-}
-
-
-function getTokensFromSets($aSets)
-{
- $aTokens = array();
- foreach ($aSets as $aSet) {
- foreach ($aSet as $sWord) {
- $aTokens[' '.$sWord] = ' '.$sWord;
- $aTokens[$sWord] = $sWord;
- }
- }
- return $aTokens;
-}
-
-
function getClassTypes()
{
return array(
@@ -461,11 +413,11 @@ function javascript_renderData($xVal, $iOptions = 0)
$jsonout = json_encode($xVal, $iOptions);
if (!isset($_GET['json_callback'])) {
- header("Content-Type: application/json; charset=UTF-8");
+ header('Content-Type: application/json; charset=UTF-8');
echo $jsonout;
} else {
if (preg_match('/^[$_\p{L}][$_\p{L}\p{Nd}.[\]]*$/u', $_GET['json_callback'])) {
- header("Content-Type: application/javascript; charset=UTF-8");
+ header('Content-Type: application/javascript; charset=UTF-8');
echo $_GET['json_callback'].'('.$jsonout.')';
} else {
header('HTTP/1.0 400 Bad Request');
@@ -487,16 +439,16 @@ function _debugDumpGroupedSearches($aData, $aTokens)
}
}
}
- echo "
";
- echo "rank | Name Tokens | Name Not | ";
- echo "Address Tokens | Address Not | country | operator | ";
- echo "class | type | postcode | housenumber |
";
+ echo '';
+ echo 'rank | Name Tokens | Name Not | ';
+ echo 'Address Tokens | Address Not | country | operator | ';
+ echo 'class | type | postcode | housenumber |
';
foreach ($aData as $iRank => $aRankedSet) {
foreach ($aRankedSet as $aRow) {
$aRow->dumpAsHtmlTableRow($aWordsIDs);
}
}
- echo "
";
+ echo '
';
}
@@ -504,7 +456,7 @@ function getAddressDetails(&$oDB, $sLanguagePrefArraySQL, $iPlaceID, $sCountryCo
{
$sSQL = "select *,get_name_by_language(name,$sLanguagePrefArraySQL) as localname from get_addressdata($iPlaceID, $housenumber)";
if (!$bRaw) $sSQL .= " WHERE isaddress OR type = 'country_code'";
- $sSQL .= " order by rank_address desc,isaddress desc";
+ $sSQL .= ' order by rank_address desc,isaddress desc';
$aAddressLines = chksql($oDB->getAll($sSQL));
if ($bRaw) return $aAddressLines;
@@ -663,3 +615,23 @@ function createPointsAroundCenter($fLon, $fLat, $fRadius)
}
return $aPolyPoints;
}
+
+function closestHouseNumber($aRow)
+{
+ $fHouse = $aRow['startnumber']
+ + ($aRow['endnumber'] - $aRow['startnumber']) * $aRow['fraction'];
+
+ switch ($aRow['interpolationtype']) {
+ case 'odd':
+ $iHn = (int)($fHouse/2) * 2 + 1;
+ break;
+ case 'even':
+ $iHn = (int)(round($fHouse/2)) * 2;
+ break;
+ default:
+ $iHn = (int)(round($fHouse));
+ break;
+ }
+
+ return max(min($aRow['endnumber'], $iHn), $aRow['startnumber']);
+}