User:Bettercom/code/update osm
Jump to navigation
Jump to search
A little shell-script called daily which updates the Mapnik-DB and creates new tiles if necessary.
If you use it be sure to fit the parameters (bounding-box! and zoom-levels) of osm2pgsql to your needs.
This script uses envdir from DJB's daemontools package. If you don't want to use it be sure to set the MAPNIK_*-vars in this script.
#!/bin/sh
MPATH='/mnt/mapnik'
DATE=`date '+%Y%m%d'`
VERSION='0.1.0'
# 1. Load Diff from Mirror
/usr/local/bin/rsync -a --stats rsync://ftp.heanet.ie/mirrors/openstreetmap.org/daily/20*-${DATE}.osc.gz ${MPATH}/osmdata
# 2. Update OSM-DB
for f in ${MPATH}/osmdata/20*-${DATE}.osc.gz; do
# 2.a Do the main job: Run osm2pgsql
cd ${MPATH}/osm2pgsql
./osm2pgsql -a -s -d osm -e 6-15 -o ${MPATH}/ex-lists/expire-${DATE}.lst \
-b -10.0,33.0,30.0,62.0 $f
echo $f 'done'
mv ${MPATH}/osmdata/20*-${DATE}.osc.gz ${MPATH}/osmdata/_done/
# 2.b Do something with the expiry-list.
cd ${MPATH}
echo "Working with expired-tile list ${MPATH}/ex-lists/expire-${DATE}.lst"
# Create list with only these tiles we have:
sort -gu ${MPATH}/ex-lists/expire-${DATE}.lst | \
while read d; do
[ -f ${MPATH}/tiles/$d.png ] && echo $d
done > ${MPATH}/ex-lists/expire-${DATE}.lst.tbd
rm ${MPATH}/ex-lists/expire-${DATE}.lst
# Re-render tiles we have:
/usr/local/bin/envdir ${MPATH}/env \
/usr/local/bin/mtilegenerator.py -o \
-f ${MPATH}/ex-lists/expire-${DATE}.lst.tbd
done