A docker compose project to setup an OSM PostGIS database with automatic updates from OSM periodically
 
 
 
 
 
Go to file
Etienne Trimaille 757f4f18ca Merge pull request #11 from Gustry/develop
Merge osm_pbf into settings and update doc
2015-07-31 11:19:21 +02:00
docker-imposm3 merge osm_pbf into settings 2015-07-31 10:43:29 +02:00
docker-osmupdate custom diff url 2015-07-31 11:09:04 +02:00
settings merge osm_pbf into settings 2015-07-31 10:43:29 +02:00
.gitignore custom diff url 2015-07-31 11:09:04 +02:00
LICENCE update documentation, add licence 2015-07-30 15:45:34 +02:00
countries.json script country downloader 2015-07-31 10:16:38 +02:00
docker-compose.yml merge osm_pbf into settings 2015-07-31 10:43:29 +02:00
pbf_downloader.py update doc about pbf_downloader 2015-07-31 11:18:06 +02:00
readme.md update doc about pbf_downloader 2015-07-31 11:18:06 +02:00

readme.md

#Docker-OSM

Usage

In this example we will set up an OSM database for South Africa that will pull for updates every 2 minutes.

First fetch the latest South Africa osm binary dump file (.pbf) and state file. I will write the example as generically as possible so that you can substitute your own country or region here.

cd osm_pbf
wget -c -O country.pbf http://download.openstreetmap.fr/extracts/africa/south_africa.osm.pbf
wget -c -O country.state.txt http://download.openstreetmap.fr/extracts/africa/south_africa.state.txt
wget -c -O polygon.poly http://download.geofabrik.de/africa/south-africa-and-lesotho.poly

or you can use the PBF downloader using Geofabrik. To get the list of available countries in Geofabrik : python pbf_downloader.py list

You can download a country or a continent : python pbf_downloader.py south-africa-and-lesotho

The script will download the PBF file, the state file and the polygon for clipping.

docker-compose build
docker-compose up

Docker OSM Update

This docker image when run will fetch on a regular interval any new diff file for all the changes that have happened in the world over the update interval.

You can also specify a custom url for fetching the diff if you wish to retrieve regional diffs rather than the global one.

You can specify a polygonal area for the diff so that it will only apply features from the diff that fall within that area. For example providing a polygon of the borders of Malawi will result in only Malawi features being extracted from the diff.

Note that the diff retrieved and options specified here are not related to the initial base map used - so for example if your initial base map is for Malawi and you specify a diff area in Botswana, updated features in Botswana will be applied to your base map which only includes features from Malawi. For this reason, take care to ensure that your diff area coincides with the region covered by your original base map.

Once the diff has been downloaded, it is placed into /home/import_queue where it will be picked up by the long running imposm3 container, which will apply the diff to the database.

You should have 3 folders : osm_pbf, import_queue, import_done

Put a state file in base-pbf like this one : http://download.openstreetmap.fr/extracts/africa/south_africa.state.txt

docker build -t osmupdate . docker run -v $('pwd')import-queue/:/home/import-queue -v $('pwd')base-pbf/:/home/base-pbf -v $('pwd')import-done/:/home/import-done -d osmupdate

With -e, you can add some settings :

  • MAX_DAYS = 100, the maximum time range to assamble a cumulated changefile.
  • DIFF = sporadic, osmupdate uses a combination of minutely, hourly and daily changefiles. This value can be minute, hour, day or sporadic.
  • MAX_MERGE = 7, argument to determine the maximum number of parallely processed changefiles.
  • COMPRESSION_LEVEL = 1, define level for gzip compression. values between 1 (low compression but fast) and 9 (high compression but slow)
  • BASE_URL = http://planet.openstreetmap.org/replication/, change the URL to use a custom URL to fetch regional file updates.
  • IMPORT_QUEUE = import_queue
  • IMPORT_DONE = import_done
  • OSM_PBF = osm_pbf
  • TIME = 120, secondes between two executions of the script

Docker ImpOSM3

This image will take care of doing the initial load for the selected region (e.g. planet, or a country such as Malawi) into your database. It will then apply at a regulart interval (default is 2 minutes) any diff that arrives in the /home/import_queue folder to the postgis OSM database. The diffs are fetched by a separate container (see osm_update container).

The container will look for an OSM file (.pbf) and its state file (.state.txt) in BASE_PBF.

With -e, you can add some settings :