Skip to content

Instantly share code, notes, and snippets.

@iandees
Created September 14, 2011 00:53
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iandees/1215596 to your computer and use it in GitHub Desktop.
Save iandees/1215596 to your computer and use it in GitHub Desktop.
A script to keep an osm2pgsql database running with minutely diffs and osmosis.
#!/bin/bash
set -e
# Initialize timestamp with day of latest planet dump
# Setting to midnight ensures we get conistent data after first run
# osmosis --read-replication-interval-init
OSMOSIS_PATH=/home/iandees/osmosis-SNAPSHOT-r25995
OSMOSIS_WORKDIR=/home/iandees/.osmosis
OSM2PGSQL_PATH=/home/iandees/osm2pgsql
# Read in current state
. $OSMOSIS_WORKDIR/state.txt
while (true)
do
file="changes-${sequenceNumber}.osm.gz"
# Osmosis sometimes returns an error when the server is temporarily unavailable
# If this happens, retry in a few minutes
set +e
$OSMOSIS_PATH/bin/osmosis \
--read-replication-interval workingDirectory=$OSMOSIS_WORKDIR \
--simc \
--write-xml-change file="${file}" compressionMethod="gzip"
if [ $? -eq 0 ]; then
set -e
prevSequenceNumber=$sequenceNumber
# Read in new state
. $OSMOSIS_WORKDIR/state.txt
if [ "${sequenceNumber}" == "${prevSequenceNumber}" ]; then
echo "No new data available. Sleeping..."
# Remove file, it will just be an empty changeset
rm ${file}
sleep 30
else
echo "Fetched new data from ${prevSequenceNumber} to ${sequenceNumber} into ${file}"
$OSM2PGSQL_PATH/osm2pgsql \
--port 5432 \
--user gis \
--slim \
--append \
--style $OSM2PGSQL_PATH/default.style \
${file}
#touch /var/lib/mod_tile/planet-import-complete
#./run.rb ${file} &> /dev/null &
#./run.rb ${file} &> /dev/null &
# Reduce import rate to give us a while to catch up
#sleep 120
fi
# Delete old downloads
find . -name 'changes-*.gz' -mmin +300 -exec rm -f {} \;
else
set -e
echo "Waiting a few minutes before retry"
sleep 300
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment