The following instructions explain how to create a Nominatim database
from an OSM planet file and how to keep the database up to date. It
-is assumed that you have already sucessfully installed the Nominatim
+is assumed that you have already successfully installed the Nominatim
software itself, if not return to the [installation page](Installation.md).
Configuration setup in settings/local.php
you should also enable flatnode storage of node locations. With this
setting enabled, node coordinates are stored in a simple file instead
of the database. This will save you import time and disk storage.
-Add to your settings/local.php:
+Add to your `settings/local.php`:
@define('CONST_Osm2pgsql_Flatnode_File', '/path/to/flatnode.file');
+Replace the second part with a suitable path on your system and make sure
+the directory exists. There should be at least 35GB of free space.
Downloading additional data
---------------------------
wget http://www.nominatim.org/data/gb_postcode_data.sql.gz
-Initial Import of the Data
+Initial import of the data
--------------------------
-**Important:** first try the import with a small excerpt, for example from Geofabrik.
+**Important:** first try the import with a small excerpt, for example from
+[Geofabrik](http://download.geofabrik.de).
Download the data to import and load the data with the following command:
./utils/setup.php --osm-file <your data file> --all [--osm2pgsql-cache 28000] 2>&1 | tee setup.log
-The --osm2pgsql-cache parameter is optional but strongly recommended for
+The `--osm2pgsql-cache` parameter is optional but strongly recommended for
planet imports. It sets the node cache size for the osm2pgsql import part
-(see -C parameter in osm2pgsql help). 28GB are recommended for a full planet
-imports, for excerpts you can use less. Adapt to your available RAM to
+(see `-C` parameter in osm2pgsql help). 28GB are recommended for a full planet
+import, for excerpts you can use less. Adapt to your available RAM to
avoid swapping, never give more than 2/3 of RAM to osm2pgsql.
-Loading Additional Datasets
+Loading additional datasets
---------------------------
-The following commands will create additional entries for countries and POI searches:
+The following commands will create additional entries for POI searches:
- ./utils/specialphrases.php --countries > data/specialphrases_countries.sql
- psql -d nominatim -f data/specialphrases_countries.sql
- ./utils/specialphrases.php --wiki-import > data/specialphrases.sql
- psql -d nominatim -f data/specialphrases.sql
+ ./utils/specialphrases.php --wiki-import > specialphrases.sql
+ psql -d nominatim -f specialphrases.sql
Installing Tiger housenumber data for the US
OSM housenumber data in the US. You can add TIGER data to your own Nominatim
instance by following these steps:
- 1. Install the GDAL library and python bindings
+ 1. Install the GDAL library and python bindings and the unzip tool
- Ubuntu: apt-get install python-gdal
- CentOS: yum install gdal-python
+ * Ubuntu: `sudo apt-get install python-gdal unzip`
+ * CentOS: `sudo yum install gdal-python unzip`
2. Get the TIGER 2015 data. You will need the EDGES files
- (3,234 zip files, 11GB total).
+ (3,234 zip files, 11GB total). Choose one of the two sources:
- wget -r ftp://mirror1.shellbot.com/census/geo/tiger/TIGER2015/EDGES/
- (1gb/s preferred mirror) MIRROR HOSTED BY SHELLBOT, LTD.
+ wget -r ftp://ftp2.census.gov/geo/tiger/TIGER2015/EDGES/
+ wget -r ftp://mirror1.shellbot.com/census/geo/tiger/TIGER2015/EDGES/
- OR:
-
- wget -r ftp://ftp2.census.gov/geo/tiger/TIGER2015/EDGES/
- (500kb/s original source) HOSTED BY THE US CENSUS BUREAU
+ The first one is the original source, the second a considerably faster
+ mirror.
3. Convert the data into SQL statements (stored in data/tiger):
- ./utils/imports.php --parse-tiger <tiger edge data directory>
+ ./utils/imports.php --parse-tiger <tiger edge data directory>
4. Import the data into your Nominatim database:
- ./utils/setup.php --import-tiger-data
+ ./utils/setup.php --import-tiger-data
+
+ 5. Enable use of the Tiger data in your `settings/local.php` by adding:
+
+ @define('CONST_Use_US_Tiger_Data', true);
+
+ 6. Apply the new settings:
+
+ ./utils/setup.php --create-functions --enable-diff-updates --create-partition-functions
Be warned that the import can take a very long time, especially if you
-import all of the US.
+import all of the US. The entire US adds about 10GB to your database.
Updates
=======
There are many different possibilities to update your Nominatim database.
-The following section describes how to keep it up-to-date with osmosis.
-For a list of other methods see the output of ./utils/update.php --help.
+The following section describes how to keep it up-to-date with Pyosmium.
+For a list of other methods see the output of `./utils/update.php --help`.
-Installing the newest version of osmosis
-----------------------------------------
+Installing the newest version of Pyosmium
+-----------------------------------------
-The version of osmosis that comes with your distribution should be sufficient
-in most cases.
+It is recommended to install Pyosmium via pip:
-If you want to install it by hand, get the latest version from the
-[Osmosis website](http://wiki.openstreetmap.org/wiki/Osmosis). Then
-tell Nominatim to use this version by adding the following line to
-your `settings/local.php`:
+ pip install --user osmium
- @define('CONST_Osmosis_Binary', '/usr/local/bin/osmosis');
+Nominatim needs a tool called `pyosmium-get-updates` that comes with
+Pyosmium. You need to tell Nominatim where to find it. Add the
+following line to your `settings/local.php`:
+
+ @define('CONST_Pyosmium_Binary', '/home/user/.local/bin/pyosmium-get-changes');
+
+The path above is fine if you used the `--user` parameter with pip.
+Replace `user` with your user name.
Setting up the update process
-----------------------------
// base URL of the replication service
@define('CONST_Replication_Url', 'http://download.geofabrik.de/europe/ireland-and-northern-ireland-updates');
- // Process each update separately, osmosis cannot merge multiple updates
- @define('CONST_Replication_MaxInterval', '40000');
// How often upstream publishes diffs
@define('CONST_Replication_Update_Interval', '86400');
// How long to sleep if no update found yet
@define('CONST_Replication_Recheck_Interval', '900');
+To set up the update process now run the following command:
-Delete existing 'settings/configuration.txt' then run the following command
-to create the osmosis configuration files:
-
- ./utils/setup.php --osmosis-init
-
-Enabling hierarchical updates
------------------------------
+ ./utils/update --init-updates
-When a place is updated in the database, all places that contain this place
-in their address need to be updated as well. These hierarchical updates are
-disabled by default because they slow down the initial import.
-Enable them with the following command:
+It outputs the date where updates will start. Recheck that this date is
+what you expect.
- ./utils/setup.php --create-functions --enable-diff-updates
+The --init-updates command needs to be rerun whenever the replication service
+is changed.
Updating Nominatim
------------------
The following command will keep your database constantly up to date:
- ./utils/update.php --import-osmosis-all --no-npi
+ ./utils/update.php --import-osmosis-all
If you have imported multiple country extracts and want to keep them
up-to-date, have a look at the script in
-(issue #60)[https://github.com/twain47/Nominatim/issues/60].
+[issue #60](https://github.com/openstreetmap/Nominatim/issues/60).