]> git.openstreetmap.org Git - nominatim.git/blobdiff - lib/lib.php
Merge pull request #499 from mtmail/travis-ci
[nominatim.git] / lib / lib.php
index fc3936851bbb56bd031495761e1fe6f781b703d9..94bed6d81a2529335b56a2140e0639dc8e94ed10 100644 (file)
@@ -1,44 +1,5 @@
 <?php
 
-       function failInternalError($sError, $sSQL = false, $vDumpVar = false)
-       {
-               header('HTTP/1.0 500 Internal Server Error');
-               header('Content-type: text/html; charset=utf-8');
-               echo "<html><body><h1>Internal Server Error</h1>";
-               echo '<p>Nominatim has encountered an internal error while processing your request. This is most likely because of a bug in the software.</p>';
-               echo "<p><b>Details:</b> ".$sError,"</p>";
-               echo '<p>Feel free to report the bug in the <a href="http://trac.openstreetmap.org">OSM bug database</a>. Please include the error message above and the URL you used.</p>';
-               if (CONST_Debug)
-               {
-                       echo "<hr><h2>Debugging Information</h2><br>";
-                       if ($sSQL)
-                       {
-                               echo "<h3>SQL query</h3><code>".$sSQL."</code>";
-                       }
-                       if ($vDumpVar)
-                       {
-                               echo "<h3>Result</h3> <code>";
-                               var_dump($vDumpVar);
-                               echo "</code>";
-                       }
-               }
-               echo "\n</body></html>\n";
-               exit;
-       }
-
-
-       function userError($sError)
-       {
-               header('HTTP/1.0 400 Bad Request');
-               header('Content-type: text/html; charset=utf-8');
-               echo "<html><body><h1>Bad Request</h1>";
-               echo '<p>Nominatim has encountered an error with your request.</p>';
-               echo "<p><b>Details:</b> ".$sError,"</p>";
-               echo '<p>If you feel this error is incorrect feel free to report the bug in the <a href="http://trac.openstreetmap.org">OSM bug database</a>. Please include the error message above and the URL you used.</p>';
-               echo "\n</body></html>\n";
-               exit;
-       }
-
        function fail($sError, $sUserError = false)
        {
                if (!$sUserError) $sUserError = $sError;
@@ -48,14 +9,6 @@
        }
 
 
-       function getLoadAverage()
-       {
-               $sLoadAverage = file_get_contents('/proc/loadavg');
-               $aLoadAverage = explode(' ',$sLoadAverage);
-               return (float)$aLoadAverage[0];
-       }
-
-
        function getProcessorCount()
        {
                $sCPU = file_get_contents('/proc/cpuinfo');
        {
                // Try an exact match on the gb_postcode table
                $sSQL = 'select \'AA\', ST_X(ST_Centroid(geometry)) as lon,ST_Y(ST_Centroid(geometry)) as lat from gb_postcode where postcode = \''.$sPostcode.'\'';
-               $aNearPostcodes = $oDB->getAll($sSQL);
-               if (PEAR::IsError($aNearPostcodes))
-               {
-                       var_dump($sSQL, $aNearPostcodes);
-                       exit;
-               }
+               $aNearPostcodes = chksql($oDB->getAll($sSQL));
 
                if (sizeof($aNearPostcodes))
                {
                if (!$bRaw) $sSQL .= " WHERE isaddress OR type = 'country_code'";
                $sSQL .= " order by rank_address desc,isaddress desc";
 
-               $aAddressLines = $oDB->getAll($sSQL);
-               if (PEAR::IsError($aAddressLines))
-               {
-                       var_dump($aAddressLines);
-                       exit;
-               }
+               $aAddressLines = chksql($oDB->getAll($sSQL));
                if ($bRaw) return $aAddressLines;
                //echo "<pre>";
                //var_dump($aAddressLines);
        }
 
 
-       function geocodeReverse($fLat, $fLon, $iZoom=18)
-       {
-               $oDB =& getDB();
-
-               $sPointSQL = "ST_SetSRID(ST_Point($fLon,$fLat),4326)";
-
-               // Zoom to rank, this could probably be calculated but a lookup gives fine control
-               $aZoomRank = array(
-                               0 => 2, // Continent / Sea
-                               1 => 2,
-                               2 => 2,
-                               3 => 4, // Country
-                               4 => 4,
-                               5 => 8, // State
-                               6 => 10, // Region
-                               7 => 10,
-                               8 => 12, // County
-                               9 => 12,
-                               10 => 17, // City
-                               11 => 17,
-                               12 => 18, // Town / Village
-                               13 => 18,
-                               14 => 22, // Suburb
-                               15 => 22,
-                               16 => 26, // Street, TODO: major street?
-                               17 => 26,
-                               18 => 30, // or >, Building
-                               19 => 30, // or >, Building
-                               );
-               $iMaxRank = isset($aZoomRank[$iZoom])?$aZoomRank[$iZoom]:28;
-
-               // Find the nearest point
-               $fSearchDiam = 0.0001;
-               $iPlaceID = null;
-               $aArea = false;
-               $fMaxAreaDistance = 1;
-               while(!$iPlaceID && $fSearchDiam < $fMaxAreaDistance)
-               {
-                       $fSearchDiam = $fSearchDiam * 2;
-
-                       // If we have to expand the search area by a large amount then we need a larger feature
-                       // then there is a limit to how small the feature should be
-                       if ($fSearchDiam > 2 && $iMaxRank > 4) $iMaxRank = 4;
-                       if ($fSearchDiam > 1 && $iMaxRank > 9) $iMaxRank = 8;
-                       if ($fSearchDiam > 0.8 && $iMaxRank > 10) $iMaxRank = 10;
-                       if ($fSearchDiam > 0.6 && $iMaxRank > 12) $iMaxRank = 12;
-                       if ($fSearchDiam > 0.2 && $iMaxRank > 17) $iMaxRank = 17;
-                       if ($fSearchDiam > 0.1 && $iMaxRank > 18) $iMaxRank = 18;
-                       if ($fSearchDiam > 0.008 && $iMaxRank > 22) $iMaxRank = 22;
-                       if ($fSearchDiam > 0.001 && $iMaxRank > 26) $iMaxRank = 26;
-
-                       $sSQL = 'select place_id,parent_place_id from placex';
-                       $sSQL .= ' WHERE ST_DWithin('.$sPointSQL.', geometry, '.$fSearchDiam.')';
-                       $sSQL .= ' and rank_search != 28 and rank_search >= '.$iMaxRank;
-                       $sSQL .= ' and (name is not null or housenumber is not null)';
-                       $sSQL .= ' and class not in (\'waterway\')';
-                       $sSQL .= ' and (ST_GeometryType(geometry) not in (\'ST_Polygon\',\'ST_MultiPolygon\') ';
-                       $sSQL .= ' OR ST_DWithin('.$sPointSQL.', ST_Centroid(geometry), '.$fSearchDiam.'))';
-                       $sSQL .= ' ORDER BY ST_distance('.$sPointSQL.', geometry) ASC limit 1';
-                       //var_dump($sSQL);
-                       $aPlace = $oDB->getRow($sSQL);
-                       if (PEAR::IsError($aPlace))
-                       {
-                               var_Dump($sSQL, $aPlace);
-                               exit;
-                       }
-                       $iPlaceID = $aPlace['place_id'];
-               }
-
-               // The point we found might be too small - use the address to find what it is a child of
-               if ($iPlaceID)
-               {
-                       $sSQL = "select address_place_id from place_addressline where cached_rank_address <= $iMaxRank and place_id = $iPlaceID order by cached_rank_address desc,isaddress desc,distance desc limit 1";
-                       $iPlaceID = $oDB->getOne($sSQL);
-                       if (PEAR::IsError($iPlaceID))
-                       {
-                               var_Dump($sSQL, $iPlaceID);
-                               exit;
-                       }
-
-                       if ($iPlaceID && $aPlace['place_id'] && $iMaxRank < 28)
-                       {
-                               $sSQL = "select address_place_id from place_addressline where cached_rank_address <= $iMaxRank and place_id = ".$aPlace['place_id']." order by cached_rank_address desc,isaddress desc,distance desc";
-                               $iPlaceID = $oDB->getOne($sSQL);
-                               if (PEAR::IsError($iPlaceID))
-                               {
-                                       var_Dump($sSQL, $iPlaceID);
-                                       exit;
-                               }
-                       }
-                       if (!$iPlaceID)
-                       {
-                               $iPlaceID = $aPlace['place_id'];
-                       }
-               }
-
-               return $iPlaceID;
-       }
-
        function addQuotes($s)
        {
                return "'".$s."'";