]> git.openstreetmap.org Git - nominatim.git/blob - utils/warm.php
89225426c90d5fb8049736363cedfcf393926f94
[nominatim.git] / utils / warm.php
1 #!/usr/bin/php -Cq
2 <?php
3
4 require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
5 require_once(CONST_BasePath.'/lib/init-cmd.php');
6 ini_set('memory_limit', '800M');
7
8 $aCMDOptions = array(
9                 "Tools to warm nominatim db",
10                 array('help', 'h', 0, 1, 0, 0, false, 'Show Help'),
11                 array('quiet', 'q', 0, 1, 0, 0, 'bool', 'Quiet output'),
12                 array('verbose', 'v', 0, 1, 0, 0, 'bool', 'Verbose output'),
13                 array('reverse-only', '', 0, 1, 0, 0, 'bool', 'Warm reverse only'),
14                 array('search-only', '', 0, 1, 0, 0, 'bool', 'Warm reverse only'),
15                );
16 getCmdOpt($_SERVER['argv'], $aCMDOptions, $aResult, true, true);
17
18 require_once(CONST_BasePath.'/lib/log.php');
19 require_once(CONST_BasePath.'/lib/Geocode.php');
20 require_once(CONST_BasePath.'/lib/PlaceLookup.php');
21 require_once(CONST_BasePath.'/lib/ReverseGeocode.php');
22
23 $oDB =& getDB();
24
25 $bVerbose = $aResult['verbose'];
26
27 if (!$aResult['search-only']) {
28     $oReverseGeocode = new ReverseGeocode($oDB);
29     $oReverseGeocode->setZoom(20);
30     $oPlaceLookup = new PlaceLookup($oDB);
31     $oPlaceLookup->setIncludeAddressDetails(true);
32     $oPlaceLookup->setLanguagePreference(array('en'));
33
34     echo "Warm reverse: ";
35     if ($bVerbose) echo "\n";
36     for ($i = 0; $i < 1000; $i++) {
37         $fLat = rand(-9000, 9000) / 100;
38         $fLon = rand(-18000, 18000) / 100;
39         if ($bVerbose) echo "$fLat, $fLon = ";
40         $aLookup = $oReverseGeocode->lookup($fLat, $fLon);
41         if ($aLookup && $aLookup['place_id']) {
42             $aDetails = $oPlaceLookup->lookup((int)$aLookup['place_id'],
43                                               $aLookup['type'], $aLookup['fraction']);
44             if ($bVerbose) echo $aDetails['langaddress']."\n";
45         } else {
46             echo ".";
47         }
48     }
49     echo "\n";
50 }
51
52 if (!$aResult['reverse-only']) {
53     $oGeocode =& new Geocode($oDB);
54
55     echo "Warm search: ";
56     if ($bVerbose) echo "\n";
57     $sSQL = 'select word from word where word is not null order by search_name_count desc limit 1000';
58     foreach ($oDB->getCol($sSQL) as $sWord) {
59         if ($bVerbose) echo "$sWord = ";
60         $oGeocode->setLanguagePreference(array('en'));
61         $oGeocode->setQuery($sWord);
62         $aSearchResults = $oGeocode->lookup();
63         if ($bVerbose) echo $aSearchResults[0]['langaddress']."\n";
64         else echo ".";
65     }
66 }
67