Created
September 14, 2011 00:53
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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