Nominatim/utils/warm.php

70 lines
2.4 KiB
PHP
Raw Normal View History

#!/usr/bin/php -Cq
<?php
2016-09-04 04:19:48 +03:00
require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
require_once(CONST_BasePath.'/lib/init-cmd.php');
ini_set('memory_limit', '800M');
2016-09-04 04:19:48 +03:00
$aCMDOptions = array(
"Tools to warm nominatim db",
array('help', 'h', 0, 1, 0, 0, false, 'Show Help'),
array('quiet', 'q', 0, 1, 0, 0, 'bool', 'Quiet output'),
array('verbose', 'v', 0, 1, 0, 0, 'bool', 'Verbose output'),
array('reverse-only', '', 0, 1, 0, 0, 'bool', 'Warm reverse only'),
array('search-only', '', 0, 1, 0, 0, 'bool', 'Warm search only'),
);
2016-09-04 04:19:48 +03:00
getCmdOpt($_SERVER['argv'], $aCMDOptions, $aResult, true, true);
2016-09-04 04:19:48 +03:00
require_once(CONST_BasePath.'/lib/log.php');
require_once(CONST_BasePath.'/lib/Geocode.php');
require_once(CONST_BasePath.'/lib/PlaceLookup.php');
require_once(CONST_BasePath.'/lib/ReverseGeocode.php');
2016-09-04 04:19:48 +03:00
$oDB =& getDB();
2016-09-04 04:19:48 +03:00
$bVerbose = $aResult['verbose'];
2016-09-04 04:19:48 +03:00
if (!$aResult['search-only']) {
$oReverseGeocode = new Nominatim\ReverseGeocode($oDB);
2016-09-04 04:19:48 +03:00
$oReverseGeocode->setZoom(20);
$oPlaceLookup = new Nominatim\PlaceLookup($oDB);
2016-09-04 04:19:48 +03:00
$oPlaceLookup->setIncludeAddressDetails(true);
$oPlaceLookup->setLanguagePreference(array('en'));
2016-09-04 04:19:48 +03:00
echo "Warm reverse: ";
if ($bVerbose) echo "\n";
for ($i = 0; $i < 1000; $i++) {
2016-09-04 04:19:48 +03:00
$fLat = rand(-9000, 9000) / 100;
$fLon = rand(-18000, 18000) / 100;
if ($bVerbose) echo "$fLat, $fLon = ";
$aLookup = $oReverseGeocode->lookup($fLat, $fLon);
if ($aLookup && $aLookup['place_id']) {
$aDetails = $oPlaceLookup->lookup(
(int)$aLookup['place_id'],
$aLookup['type'],
$aLookup['fraction']
);
2016-09-04 04:19:48 +03:00
if ($bVerbose) echo $aDetails['langaddress']."\n";
} else {
echo ".";
2016-09-04 04:19:48 +03:00
}
}
echo "\n";
}
2016-09-04 04:19:48 +03:00
if (!$aResult['reverse-only']) {
$oGeocode = new Nominatim\Geocode($oDB);
2016-09-04 04:19:48 +03:00
echo "Warm search: ";
if ($bVerbose) echo "\n";
$sSQL = 'select word from word where word is not null order by search_name_count desc limit 1000';
foreach ($oDB->getCol($sSQL) as $sWord) {
2016-09-04 04:19:48 +03:00
if ($bVerbose) echo "$sWord = ";
$oGeocode->setLanguagePreference(array('en'));
$oGeocode->setQuery($sWord);
$aSearchResults = $oGeocode->lookup();
if ($bVerbose) echo $aSearchResults[0]['langaddress']."\n";
else echo ".";
}
}