class SetupFunctions
{
- protected $iCacheMemory;
protected $iInstances;
protected $aDSNInfo;
protected $bQuiet;
warn('resetting threads to '.$this->iInstances);
}
- if (isset($aCMDResult['osm2pgsql-cache'])) {
- $this->iCacheMemory = $aCMDResult['osm2pgsql-cache'];
- } elseif (getSetting('FLATNODE_FILE')) {
- // When flatnode files are enabled then disable cache per default.
- $this->iCacheMemory = 0;
- } else {
- // Otherwise: Assume we can steal all the cache memory in the box.
- $this->iCacheMemory = getCacheMemoryMB();
- }
-
// parse database string
$this->aDSNInfo = \Nominatim\DB::parseDSN(getSetting('DATABASE_DSN'));
if (!isset($this->aDSNInfo['port'])) {
if ($this->bVerbose) {
$this->oNominatimCmd->addParams('--verbose');
}
- }
-
- public function importData($sOSMFile)
- {
- info('Import data');
-
- if (!file_exists(getOsm2pgsqlBinary())) {
- echo "Check NOMINATIM_OSM2PGSQL_BINARY in your local .env file.\n";
- echo "Normally you should not need to set this manually.\n";
- fail("osm2pgsql not found in '".getOsm2pgsqlBinary()."'");
- }
-
- $oCmd = new \Nominatim\Shell(getOsm2pgsqlBinary());
- $oCmd->addParams('--style', getImportStyle());
-
- if (getSetting('FLATNODE_FILE')) {
- $oCmd->addParams('--flat-nodes', getSetting('FLATNODE_FILE'));
- }
- if (getSetting('TABLESPACE_OSM_DATA')) {
- $oCmd->addParams('--tablespace-slim-data', getSetting('TABLESPACE_OSM_DATA'));
- }
- if (getSetting('TABLESPACE_OSM_INDEX')) {
- $oCmd->addParams('--tablespace-slim-index', getSetting('TABLESPACE_OSM_INDEX'));
- }
- if (getSetting('TABLESPACE_PLACE_DATA')) {
- $oCmd->addParams('--tablespace-main-data', getSetting('TABLESPACE_PLACE_DATA'));
- }
- if (getSetting('TABLESPACE_PLACE_INDEX')) {
- $oCmd->addParams('--tablespace-main-index', getSetting('TABLESPACE_PLACE_INDEX'));
- }
- $oCmd->addParams('--latlong', '--slim', '--create');
- $oCmd->addParams('--output', 'gazetteer');
- $oCmd->addParams('--hstore');
- $oCmd->addParams('--number-processes', 1);
- $oCmd->addParams('--with-forward-dependencies', 'false');
- $oCmd->addParams('--log-progress', 'true');
- $oCmd->addParams('--cache', $this->iCacheMemory);
- $oCmd->addParams('--port', $this->aDSNInfo['port']);
-
- if (isset($this->aDSNInfo['username'])) {
- $oCmd->addParams('--username', $this->aDSNInfo['username']);
- }
- if (isset($this->aDSNInfo['password'])) {
- $oCmd->addEnvPair('PGPASSWORD', $this->aDSNInfo['password']);
- }
- if (isset($this->aDSNInfo['hostspec'])) {
- $oCmd->addParams('--host', $this->aDSNInfo['hostspec']);
- }
- $oCmd->addParams('--database', $this->aDSNInfo['database']);
- $oCmd->addParams($sOSMFile);
- $oCmd->run();
-
- if (!$this->sIgnoreErrors && !$this->db()->getRow('select * from place limit 1')) {
- fail('No Data');
- }
-
- if ($this->bDrop) {
- $this->dropTable('planet_osm_nodes');
- $this->removeFlatnodeFile();
- }
+ $this->oNominatimCmd->addParams('--threads', $this->iInstances);
}
public function createFunctions()
$this->pgsqlRunPartitionScript($sTemplate);
}
- public function createPartitionFunctions()
- {
- info('Create Partition Functions');
- $this->createSqlFunctions(); // also create partition functions
- }
-
- public function importWikipediaArticles()
- {
- $sWikiArticlePath = getSetting('WIKIPEDIA_DATA_PATH', CONST_InstallDir);
- $sWikiArticlesFile = $sWikiArticlePath.'/wikimedia-importance.sql.gz';
- if (file_exists($sWikiArticlesFile)) {
- info('Importing wikipedia articles and redirects');
- $this->dropTable('wikipedia_article');
- $this->dropTable('wikipedia_redirect');
- $this->pgsqlRunScriptFile($sWikiArticlesFile);
- } else {
- warn('wikipedia importance dump file not found - places will have default importance');
- }
- }
-
public function loadData($bDisableTokenPrecalc)
{
info('Drop old Data');
$this->pgsqlRunScript($sSQL);
}
- public function drop()
- {
- (clone($this->oNominatimCmd))->addParams('freeze')->run();
- }
-
- /**
- * Setup the directory for the API scripts.
- *
- * @return null
- */
- public function setupWebsite()
- {
- (clone($this->oNominatimCmd))->addParams('refresh', '--website')->run();
- }
-
/**
* Return the connection to the database.
*
return $this->oDB;
}
- private function removeFlatnodeFile()
- {
- $sFName = getSetting('FLATNODE_FILE');
- if ($sFName && file_exists($sFName)) {
- if ($this->bVerbose) echo 'Deleting '.$sFName."\n";
- unlink($sFName);
- }
- }
-
private function pgsqlRunScript($sScript, $bfatal = true)
{
runSQLScript(
$oCmd->addParams('--enable-debug-statements');
}
- $oCmd->run();
+ $oCmd->run(!$this->sIgnoreErrors);
}
private function pgsqlRunPartitionScript($sTemplate)