[OSM-ja] planetファイルを自動取得するプログラムについて
    Hiroshi Miura(@osmf)
    miurahr @ osmf.jp
       
    2015年 3月  1日 (日) 01:13:02 UTC
    
    
  
三浦です。
TechstromさんのWikiページにある統計のとり方を参考に
http://wiki.openstreetmap.org/wiki/User:Techstrom/JapanData
OSMのplanetファイルをダウンロードするシェル・スクリプトを
書いて見ました。(ただいま試験実行中...)
このコマンドをただ実行すると、現在時刻から見て、最新の
planetファイルをダンプして、osmosisコマンドで日本だけを
切り出して、指定されたディレクトリに配置するというものです。
またYYMMDDの書式で指定すると、指定された日付のついた
planetファイルを取得して、切り出しを実施します。
自動的にスケジュール起動されて実行されるように考えて
作って見ました。
Planetファイルは、毎週水曜日のAMまでにその週の月曜日の
日付のついたファイルとして作成されます。
そこで、コマンドの実行が、水曜日の午後以降であれば、その週のファイルを
それ以前であれば、前の週のファイルを習得するように
プログラミングされています。
Planetの自動取得を検討している方は、参考にされてください。
-------------------------------------
#!/bin/bash
#
# planet-cut-japan.sh
#
# Usage  planet-cut-japan.sh <YYMMDD>
#  eg. $0 150102
#
function get_planet_date() {
  wday=$(date -u '+%w')
  if [ $wday -lt 3 ] ; then
    # Sunday, Monday, Tuesday
    offset=$(expr $wday + 6 )
  elif [ $wday -eq 3 ] ; then
    # Wednesday
    if [ $(date -u '+%H') -lt 13 ] ; then
      offset=$(expr $wday + 6 )
    else
      offset=$(expr $wday - 1 )
    fi
  else
    # Thursday, Friday, Saterday
    offset=$(expr $wday - 1 )
  fi
  echo `date  -u --date "${offset} day ago" '+%y%m%d'`
}
case $# in
0)
  DKEY=`get_planet_date`
  ;;
1)
  DKEY=$1
  ;;
*)
  echo error
  exit 1
  ;;
esac
BASEURL=http://ftp.heanet.ie/mirrors/openstreetmap.org
LOCATION=$BASEURL/planet/2015
# input should be planet osm bz2 file.
PLANET=planet-${DKEY}.osm.bz2
OUTF=japan-${DKEY}.osm.bz2
TMPPATH=/srv/data/tmp
OUTPATH=/srv/data/public/planet
OSMOSIS_BIN=/opt/osmosis/bin/osmosis
POLY=/srv/data/japan.poly
if [ ! -f $OUTPATH/japan/$OUTF ]; then
cd $OUTPATH
wget -c $LOCATION/$PLANET
bzcat $PLANET | egrep -v '&#[0-9]*;' | $OSMOSIS_BIN --read-xml enableDateParsing=no file=/dev/stdin --bounding-polygon file="${POLY}" --write-xml file=- | bzip2 > $TMPPATH/$OUTF
mv $TMPPATH/$OUTF $OUTPATH/japan/$OUTF
fi
----------------------------------------
    
    
Talk-ja メーリングリストの案内