X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/cb908b0a30bbffb3a35f49aa13e249cf3b61b152..819b858ba70fa01484ec8547f3f34b654aa4181c:/utils/update.php?ds=inline diff --git a/utils/update.php b/utils/update.php index 1f036ff0..334ad123 100755 --- a/utils/update.php +++ b/utils/update.php @@ -15,10 +15,9 @@ $aCMDOptions array('init-updates', '', 0, 1, 0, 0, 'bool', 'Set up database for updating'), array('import-osmosis', '', 0, 1, 0, 0, 'bool', 'Import updates once'), array('import-osmosis-all', '', 0, 1, 0, 0, 'bool', 'Import updates forever'), - array('no-npi', '', 0, 1, 0, 0, 'bool', '(obsolate)'), array('no-index', '', 0, 1, 0, 0, 'bool', 'Do not index the new data'), - array('import-all', '', 0, 1, 0, 0, 'bool', 'Import all available files'), + array('calculate-postcodes', '', 0, 1, 0, 0, 'bool', 'Update postcode centroid table'), array('import-file', '', 0, 1, 1, 1, 'realpath', 'Re-import data from an OSM file'), array('import-diff', '', 0, 1, 1, 1, 'realpath', 'Import a diff (osc) file from local file system'), @@ -34,6 +33,7 @@ $aCMDOptions array('index-instances', '', 0, 1, 1, 1, 'int', 'Number of indexing instances (threads)'), array('deduplicate', '', 0, 1, 0, 0, 'bool', 'Deduplicate tokens'), + array('no-npi', '', 0, 1, 0, 0, 'bool', '(obsolete)'), ); getCmdOpt($_SERVER['argv'], $aCMDOptions, $aResult, true, true); @@ -60,6 +60,13 @@ if (!is_null(CONST_Osm2pgsql_Flatnode_File)) { } if ($aResult['init-updates']) { + // sanity check that the replication URL is correct + $sBaseState = file_get_contents(CONST_Replication_Url.'/state.txt'); + if ($sBaseState === false) { + echo "\nCannot find state.txt file at the configured replication URL.\n"; + echo "Does the URL point to a directory containing OSM update data?\n\n"; + fail("replication URL not reachable."); + } $sSetup = CONST_InstallPath.'/utils/setup.php'; $iRet = -1; passthru($sSetup.' --create-functions --enable-diff-updates', $iRet); @@ -76,9 +83,9 @@ if ($aResult['init-updates']) { // get the appropriate state id $aOutput = 0; - exec(CONST_Pyosmium_Binary.' -D '.$sWindBack.' --server '.CONST_Replication_Url, - $aOutput, $iRet); - if ($iRet != 0) { + $sCmd = CONST_Pyosmium_Binary.' -D '.$sWindBack.' --server '.CONST_Replication_Url; + exec($sCmd, $aOutput, $iRet); + if ($iRet != 0 || $aOutput[0] == 'None') { fail('Error running pyosmium tools'); } @@ -95,6 +102,7 @@ if ($aResult['init-updates']) { if (isset($aResult['import-diff']) || isset($aResult['import-file'])) { // import diffs and files directly (e.g. from osmosis --rri) $sNextFile = isset($aResult['import-diff']) ? $aResult['import-diff'] : $aResult['import-file']; + if (!file_exists($sNextFile)) { fail("Cannot open $sNextFile\n"); } @@ -111,6 +119,12 @@ if (isset($aResult['import-diff']) || isset($aResult['import-file'])) { // Don't update the import status - we don't know what this file contains } +if ($aResult['calculate-postcodes']) { + info("Update postcodes centroids"); + $sTemplate = file_get_contents(CONST_BasePath.'/sql/update-postcodes.sql'); + runSQLScript($sTemplate, true, true); +} + $sTemporaryFile = CONST_BasePath.'/data/osmosischange.osc'; $bHaveDiff = false; $bUseOSMApi = isset($aResult['import-from-main-api']) && $aResult['import-from-main-api'];