X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/a517dd0ccf39b85a22e088ee7b2af857fca66c13..8204a8b13a1174890ea887405deb75157ec3e24b:/lib/lib.php?ds=sidebyside diff --git a/lib/lib.php b/lib/lib.php index a7c805f7..74430cf7 100644 --- a/lib/lib.php +++ b/lib/lib.php @@ -1,5 +1,30 @@

Internal Server Error

"; + echo '

Nominatim has encountered an internal error while processing your request. This is most likely because of a bug in the software.

'; + echo "

Details: ".$sError,"

"; + echo '

Feel free to report the bug in the OSM bug database. Please include the error message above and the URL you used.

'; + if (CONST_Debug) + { + echo "

Debugging Information


"; + if ($sSQL) { + echo "

SQL query

".$sSQL.""; + } + if ($vDumpVar) { + echo "

Result

"; + var_dump($vDumpVar); + echo ""; + } + } + echo "\n\n"; + exit; + + } + function fail($sError, $sUserError = false) { if (!$sUserError) $sUserError = $sError; @@ -32,6 +57,20 @@ return sizeof($aMatches[0]); } + function getTotalMemoryMB() + { + $sCPU = file_get_contents('/proc/meminfo'); + preg_match('#MemTotal: +([0-9]+) kB#', $sCPU, $aMatches); + return (int)($aMatches[1]/1024); + } + + function getCacheMemoryMB() + { + $sCPU = file_get_contents('/proc/meminfo'); + preg_match('#Cached: +([0-9]+) kB#', $sCPU, $aMatches); + return (int)($aMatches[1]/1024); + } + function bySearchRank($a, $b) { if ($a['iSearchRank'] == $b['iSearchRank']) return 0; @@ -40,9 +79,9 @@ function byImportance($a, $b) { -/* if ($a['importance'] != $b['importance']) return ($a['importance'] > $b['importance']?-1:1); +/* if ($a['aPointPolygon']['numfeatures'] != $b['aPointPolygon']['numfeatures']) return ($a['aPointPolygon']['numfeatures'] > $b['aPointPolygon']['numfeatures']?-1:1); if ($a['aPointPolygon']['area'] != $b['aPointPolygon']['area']) @@ -173,60 +212,12 @@ exit; } - if (sizeof($aNearPostcodes)) { return array(array('lat' => $aNearPostcodes[0]['lat'], 'lon' => $aNearPostcodes[0]['lon'], 'radius' => 0.005)); } return false; - - /* partial search disabled because it sequentially scans placex - - $sSQL = 'select substring(upper(postcode) from \'^[A-Z][A-Z]?[0-9][0-9A-Z]? [0-9]([A-Z][A-Z])$\'),ST_X(ST_Centroid(geometry)) as lon,ST_Y(ST_Centroid(geometry)) as lat from placex where country_code::text = \'gb\'::text AND substring(postcode from \'^([A-Z][A-Z]?[0-9][0-9A-Z]? [0-9])[A-Z][A-Z]$\') = \''.$sPostcodeSector.'\' and class=\'place\' and type=\'postcode\' '; - $sSQL .= ' union '; - $sSQL .= 'select substring(upper(postcode) from \'^[A-Z][A-Z]?[0-9][0-9A-Z]? [0-9]([A-Z][A-Z])$\'),ST_X(ST_Centroid(geometry)) as lon,ST_Y(ST_Centroid(geometry)) as lat from gb_postcode where substring(postcode from \'^([A-Z][A-Z]?[0-9][0-9A-Z]? [0-9])[A-Z][A-Z]$\') = \''.$sPostcodeSector.'\''; - $aNearPostcodes = $oDB->getAll($sSQL); - if (PEAR::IsError($aNearPostcodes)) - { - var_dump($sSQL, $aNearPostcodes); - exit; - } - - if (!sizeof($aNearPostcodes)) - { - return false; - } - - $fTotalLat = 0; - $fTotalLon = 0; - $fTotalFac = 0; - foreach($aNearPostcodes as $aPostcode) - { - $iDiff = gbPostcodeAlphaDifference($sPostcodeEnd, $aPostcode['substring'])*2 + 1; - if ($iDiff == 0) - $fFac = 1; - else - $fFac = 1/($iDiff*$iDiff); - - $fTotalFac += $fFac; - $fTotalLat += $aPostcode['lat'] * $fFac; - $fTotalLon += $aPostcode['lon'] * $fFac; - } - if ($fTotalFac) - { - $fLat = $fTotalLat / $fTotalFac; - $fLon = $fTotalLon / $fTotalFac; - $fRadius = min(0.1 / $fTotalFac, 0.02); - return array(array('lat' => $fLat, 'lon' => $fLon, 'radius' => $fRadius)); - } - return false; - */ - /* - $fTotalFac is a suprisingly good indicator of accuracy - $iZoom = 18 + round(log($fTotalFac,32)); - $iZoom = max(13,min(18,$iZoom)); - */ } function usPostcodeCalculate($sPostcode, &$oDB) @@ -343,7 +334,7 @@ 'place:airport' => array('label'=>'Airport','frequency'=>36,'icon'=>'transport_airport2', 'defdiameter' => 0.03,), 'railway:station' => array('label'=>'Station','frequency'=>3431,'icon'=>'transport_train_station2', 'defdiameter' => 0.01,), - 'amenity:place_of_worship' => array('label'=>'Place Of Worship','frequency'=>9049,'icon'=>'place_of_worship3',), + 'amenity:place_of_worship' => array('label'=>'Place Of Worship','frequency'=>9049,'icon'=>'place_of_worship_unknown3',), 'amenity:pub' => array('label'=>'Pub','frequency'=>18969,'icon'=>'food_pub',), 'amenity:bar' => array('label'=>'Bar','frequency'=>164,'icon'=>'food_bar',), 'amenity:university' => array('label'=>'University','frequency'=>607,'icon'=>'education_university',), @@ -373,7 +364,7 @@ 'tourism:motel' => array('label'=>'Motel','frequency'=>43,'icon'=>'',), 'amenity:cinema' => array('label'=>'Cinema','frequency'=>277,'icon'=>'tourist_cinema',), 'tourism:information' => array('label'=>'Information','frequency'=>224,'icon'=>'amenity_information',), - 'tourism:artwork' => array('label'=>'Artwork','frequency'=>171,'icon'=>'art_gallery2',), + 'tourism:artwork' => array('label'=>'Artwork','frequency'=>171,'icon'=>'tourist_art_gallery2',), 'historic:archaeological_site' => array('label'=>'Archaeological Site','frequency'=>407,'icon'=>'tourist_archaeological2',), 'amenity:doctors' => array('label'=>'Doctors','frequency'=>581,'icon'=>'health_doctors',), 'leisure:sports_centre' => array('label'=>'Sports Centre','frequency'=>767,'icon'=>'sport_leisure_centre',),