]> git.openstreetmap.org Git - nominatim.git/blobdiff - lib/lib.php
Merge branch 'master' of github.com:twain47/Nominatim
[nominatim.git] / lib / lib.php
index 8e16cef80b8393257d1af9ac2fbe7fd389b7c16c..1959ded3d4748738215e4349f3bb35a1aad25267 100644 (file)
                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;
@@ -65,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'])
@@ -80,7 +94,7 @@
                return ($a['foundorder'] < $b['foundorder']?-1:1);
        }
 
-       function getPrefferedLangauges()
+       function getPreferredLanguages()
        {
                // If we have been provided the value in $_GET it overrides browser value
                if (isset($_GET['accept-language']) && $_GET['accept-language'])
                        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)
                return false;
 
                /*
-                       $fTotalFac is a suprisingly good indicator of accuracy
+                       $fTotalFac is a surprisingly good indicator of accuracy
                        $iZoom = 18 + round(log($fTotalFac,32));
                        $iZoom = max(13,min(18,$iZoom));
                */
     {
         header("Access-Control-Allow-Origin: *");
 
-        $jsonout = json_encode($xVal, JSON_UNESCAPED_UNICODE);
+        $jsonout = json_encode($xVal);
 
                if( ! isset($_GET['json_callback'])) {
                        header("Content-Type: application/json; charset=UTF-8");