X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/fcf7fcee03c8d9a67e1ecace61df81aa81201936..bfd36863a0f238bffef8806978aebde4dd312768:/lib/lib.php diff --git a/lib/lib.php b/lib/lib.php index 76775d6c..317ba549 100644 --- a/lib/lib.php +++ b/lib/lib.php @@ -14,7 +14,7 @@ function getProcessorCount() { $sCPU = file_get_contents('/proc/cpuinfo'); preg_match_all('#processor\s+: [0-9]+#', $sCPU, $aMatches); - return sizeof($aMatches[0]); + return count($aMatches[0]); } @@ -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) { @@ -413,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'); @@ -426,37 +426,11 @@ function javascript_renderData($xVal, $iOptions = 0) } -function _debugDumpGroupedSearches($aData, $aTokens) -{ - $aWordsIDs = array(); - if ($aTokens) { - foreach ($aTokens as $sToken => $aWords) { - if ($aWords) { - foreach ($aWords as $aToken) { - $aWordsIDs[$aToken['word_id']] = - '#'.$sToken.'('.$aToken['word_id'].')#'; - } - } - } - } - echo ""; - echo ""; - echo ""; - echo ""; - foreach ($aData as $iRank => $aRankedSet) { - foreach ($aRankedSet as $aRow) { - $aRow->dumpAsHtmlTableRow($aWordsIDs); - } - } - echo "
rankName TokensName NotAddress TokensAddress Notcountryoperatorclasstypepostcodehousenumber
"; -} - - function getAddressDetails(&$oDB, $sLanguagePrefArraySQL, $iPlaceID, $sCountryCode = false, $housenumber = -1, $bRaw = false) { $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; @@ -530,11 +504,12 @@ function parseLatLon($sQuery) $sFound = $aData[0]; $fQueryLat = ($aData[1]=='N'?1:-1) * ($aData[2] + $aData[3]/60 + $aData[4]/3600); $fQueryLon = ($aData[5]=='E'?1:-1) * ($aData[6] + $aData[7]/60 + $aData[8]/3600); - } elseif (preg_match('/\\s*([0-9]+)[° ]+([0-9]+)[′\' ]+([0-9]+)[″" ]+([NS])[, ]+([0-9]+)[° ]+([0-9]+)[′\' ]+([0-9]+)[″" ]+([EW])\\s*/', $sQuery, $aData)) { - /* 1 2 3 4 5 6 7 8 + } elseif (preg_match('/\\s*([0-9]+)[° ]+([0-9]+)[′\' ]+([0-9]+[0-9.]*)[″" ]+([NS])[, ]+([0-9]+)[° ]+([0-9]+)[′\' ]+([0-9]+[0-9.]*)[″" ]+([EW])\\s*/', $sQuery, $aData)) { + /* 1 2 3 4 5 6 7 8 * degrees decimal seconds * 40 26 46 N 79 58 56 W * 40° 26′ 46″ N, 79° 58′ 56″ W + * 40° 26′ 46.78″ N, 79° 58′ 56.89″ W */ $sFound = $aData[0]; $fQueryLat = ($aData[4]=='N'?1:-1) * ($aData[1] + $aData[2]/60 + $aData[3]/3600); @@ -584,10 +559,10 @@ function geometryText2Points($geometry_as_text, $fRadius) // preg_match_all('/(-?[0-9.]+) (-?[0-9.]+)/', $aMatch[1], $aPolyPoints, PREG_SET_ORDER); // - } elseif (preg_match('#MULTIPOLYGON\\(\\(\\(([- 0-9.,]+)#', $geometry_as_text, $aMatch)) { +/* } elseif (preg_match('#MULTIPOLYGON\\(\\(\\(([- 0-9.,]+)#', $geometry_as_text, $aMatch)) { // preg_match_all('/(-?[0-9.]+) (-?[0-9.]+)/', $aMatch[1], $aPolyPoints, PREG_SET_ORDER); - // + */ } elseif (preg_match('#POINT\\((-?[0-9.]+) (-?[0-9.]+)\\)#', $geometry_as_text, $aMatch)) { // $aPolyPoints = createPointsAroundCenter($aMatch[1], $aMatch[2], $fRadius); @@ -615,3 +590,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']); +}