X-Git-Url: https://git.openstreetmap.org/nominatim.git/blobdiff_plain/d74cf03492f6ddbd62d7fdc79be47d6543bf1ed3..38e40cd01440bc6d98fd16bcf8e0598695957830:/utils/setup.php diff --git a/utils/setup.php b/utils/setup.php index f520f47d..07faa2df 100755 --- a/utils/setup.php +++ b/utils/setup.php @@ -34,7 +34,7 @@ array('osmosis-init', '', 0, 1, 0, 0, 'bool', 'Generate default osmosis configuration'), array('osmosis-init-date', '', 0, 1, 1, 1, 'string', 'Generate default osmosis configuration'), array('index', '', 0, 1, 0, 0, 'bool', 'Index the data'), - array('index-noanalyse', '', 0, 1, 0, 0, 'bool', 'Do not perform analyse opertions during index (EXPERT)'), + array('index-noanalyse', '', 0, 1, 0, 0, 'bool', 'Do not perform analyse operations during index (EXPERT)'), array('index-output', '', 0, 1, 1, 1, 'string', 'File to dump index information to'), array('create-search-indices', '', 0, 1, 0, 0, 'bool', 'Create additional indices required for search and update'), array('create-website', '', 0, 1, 1, 1, 'realpath', 'Create symlinks to setup web directory'), @@ -43,7 +43,7 @@ $bDidSomething = false; - // This is a pretty hard core defult - the number of processors in the box - 1 + // This is a pretty hard core default - the number of processors in the box - 1 $iInstances = isset($aCMDResult['threads'])?$aCMDResult['threads']:(getProcessorCount()-1); if ($iInstances < 1) { @@ -105,9 +105,9 @@ } pgsqlRunScriptFile(CONST_Path_Postgresql_Postgis.'/postgis.sql'); pgsqlRunScriptFile(CONST_Path_Postgresql_Postgis.'/spatial_ref_sys.sql'); - pgsqlRunDropAndRestore(CONST_BasePath.'/data/country_name.sql.bin'); + pgsqlRunScriptFile(CONST_BasePath.'/data/country_name.sql'); pgsqlRunScriptFile(CONST_BasePath.'/data/country_naturalearthdata.sql'); - pgsqlRunDropAndRestore(CONST_BasePath.'/data/country_osm_grid.sql.bin'); + pgsqlRunScriptFile(CONST_BasePath.'/data/country_osm_grid.sql'); pgsqlRunScriptFile(CONST_BasePath.'/data/gb_postcode.sql'); pgsqlRunScriptFile(CONST_BasePath.'/data/us_statecounty.sql'); pgsqlRunScriptFile(CONST_BasePath.'/data/us_state.sql'); @@ -121,7 +121,11 @@ $bDidSomething = true; $osm2pgsql = CONST_Osm2pgsql_Binary; - if (!file_exists($osm2pgsql)) fail("please download and build osm2pgsql"); + if (!file_exists($osm2pgsql)) + { + echo "Please download and build osm2pgsql.\nIf it is already installed, check the path in your local settings (settings/local.php) file.\n"; + fail("osm2pgsql not found in '$osm2pgsql'"); + } $osm2pgsql .= ' -lsc -O gazetteer --hstore'; $osm2pgsql .= ' -C '.$iCacheMemory; $osm2pgsql .= ' -d '.$aDSNInfo['database'].' '.$aCMDResult['osm-file']; @@ -270,6 +274,19 @@ if (!pg_query($oDB->connection, 'CREATE SEQUENCE seq_place start 100000')) fail(pg_last_error($oDB->connection)); echo '.'; + $sSQL = 'select partition from country_name order by country_code'; + $aPartitions = $oDB->getCol($sSQL); + if (PEAR::isError($aPartitions)) + { + fail($aPartitions->getMessage()); + } + $aPartitions[] = 0; + foreach($aPartitions as $sPartition) + { + if (!pg_query($oDB->connection, 'TRUNCATE location_road_'.$sPartition)) fail(pg_last_error($oDB->connection)); + echo '.'; + } + // pre-create the word list if (!$aCMDResult['disable-token-precalc']) { @@ -441,7 +458,6 @@ if (isset($aCMDResult['index-output'])) $sOutputFile = ' -F '.$aCMDResult['index-output']; $sBaseCmd = CONST_BasePath.'/nominatim/nominatim -i -d '.$aDSNInfo['database'].' -t '.$iInstances.$sOutputFile; passthru($sBaseCmd.' -R 4'); -var_dump($sBaseCmd.' -r 15 -R 15'); if (!$aCMDResult['index-noanalyse']) pgsqlRunScript('ANALYSE'); passthru($sBaseCmd.' -r 5 -R 25'); if (!$aCMDResult['index-noanalyse']) pgsqlRunScript('ANALYSE'); @@ -480,7 +496,12 @@ var_dump($sBaseCmd.' -r 15 -R 15'); { $bDidSomething = true; $sTargetDir = $aCMDResult['create-website']; - if (!is_dir($sTargetDir)) fail('please specify a directory to setup'); + if (!is_dir($sTargetDir)) + { + echo "You must create the website directory before calling this function.\n"; + fail("Target directory does not exist."); + } + @symlink(CONST_BasePath.'/website/details.php', $sTargetDir.'/details.php'); @symlink(CONST_BasePath.'/website/reverse.php', $sTargetDir.'/reverse.php'); @symlink(CONST_BasePath.'/website/search.php', $sTargetDir.'/search.php'); @@ -499,7 +520,7 @@ var_dump($sBaseCmd.' -r 15 -R 15'); { if (!file_exists($sFilename)) fail('unable to find '.$sFilename); - // Convert database DSN to psql paramaters + // Convert database DSN to psql parameters $aDSNInfo = DB::parseDSN(CONST_Database_DSN); if (!isset($aDSNInfo['port']) || !$aDSNInfo['port']) $aDSNInfo['port'] = 5432; $sCMD = 'psql -p '.$aDSNInfo['port'].' -d '.$aDSNInfo['database'].' -f '.$sFilename; @@ -527,7 +548,7 @@ var_dump($sBaseCmd.' -r 15 -R 15'); function pgsqlRunScript($sScript) { - // Convert database DSN to psql paramaters + // Convert database DSN to psql parameters $aDSNInfo = DB::parseDSN(CONST_Database_DSN); if (!isset($aDSNInfo['port']) || !$aDSNInfo['port']) $aDSNInfo['port'] = 5432; $sCMD = 'psql -p '.$aDSNInfo['port'].' -d '.$aDSNInfo['database']; @@ -551,7 +572,7 @@ var_dump($sBaseCmd.' -r 15 -R 15'); function pgsqlRunRestoreData($sDumpFile) { - // Convert database DSN to psql paramaters + // Convert database DSN to psql parameters $aDSNInfo = DB::parseDSN(CONST_Database_DSN); if (!isset($aDSNInfo['port']) || !$aDSNInfo['port']) $aDSNInfo['port'] = 5432; $sCMD = 'pg_restore -p '.$aDSNInfo['port'].' -d '.$aDSNInfo['database'].' -Fc -a '.$sDumpFile; @@ -579,7 +600,7 @@ var_dump($sBaseCmd.' -r 15 -R 15'); function pgsqlRunDropAndRestore($sDumpFile) { - // Convert database DSN to psql paramaters + // Convert database DSN to psql parameters $aDSNInfo = DB::parseDSN(CONST_Database_DSN); if (!isset($aDSNInfo['port']) || !$aDSNInfo['port']) $aDSNInfo['port'] = 5432; $sCMD = 'pg_restore -p '.$aDSNInfo['port'].' -d '.$aDSNInfo['database'].' -Fc --clean '.$sDumpFile;