レーダーエコー強度画像を作成するツール
中身についてQiitaの記事があります.
京都大学生存圏研究所データベースから1kmメッシュ全国合成レーダーエコー強度GPVを取得し,レーダーエコー強度画像を作成します.
京都大学生存圏研究所データベースの気象庁データは学術目的に限り無償利用可能です.
画像の座標・範囲,画像の背景色,カラーバーの有無,カラーマップの指定,海岸線の有無,海岸線の質が選択できます.
以下は2018/07/03 11:00:00
の(31.33, 130.34)
を中心にした画像
matplotlib, numpy, Basemap, wgrib2
[period]
# format
# start = YYYY/mm/dd HH:MM:SS
# end = YYYY/mm/dd HH:MM:SS
start = 2018/07/01 00:00:00
end = 2018/07/05 00:00:00
- period -> ダウンロードする期間に関するセクション
- start -> 期間の始まり
- end -> 期間の終わり
[interval]
# format
# num ... number of time interval
# timescale: {'minutes', 'hours', 'days', 'weeks'}
# e.g. num=2, timescale=hours -> download at 2 hours inteval
# CAUTION: minimum interval is 10 minutes!
num = 10
timescale = minutes
- interval -> ダウンロードする間隔に関するセクション
-
num -> 時間の数字部分
-
timescale -> 時間スケールを指定(下記が使えます)timedeltaの引数に準拠
- minutes
- hours
- days
- weeks
num = 20, timescale = daysとすると,20日間隔でデータを取得する.
データ自体が10分間隔で取得されているので,それより細かい時間指定は不可能
-
[download_path]
# format
# tar_path ... temporary save location for downloaded tar file
# bin_path ... save location for bin file
tar_path = ./tar
bin_path = /mnt/hgfs/kagoshima/bin_test
- download_path -> ファイルパスに関するセクション
- tar_path -> 取得した.tarファイルの保存先(逐次削除するので一時的にしかファイルはありません)
- bin_path -> 取り出した.binファイルの保存先
[generate_path]
# format
# bin_path ... location of saved bin file (default: same as download_path.bin_path)
# img_path ... save location for generated image
bin_path = ../weather/data/kagoshima/bin_test
img_path = ../weather/data/kagoshima/bin_test/img_kagoshima
- generate_path -> ファイルパスに関するセクション
- bin_path -> .binファイルが保存されているディレクトリ(基本的にはdownload_pathセクションのbin_pathと同じです)
- img_path -> 作成した画像ファイルの保存先
[center_location]
# format
# latitude ... latitude of image's center location
# longitude ... longitude of image's center location
latitude = 31.33
longitude = 130.34
- center_location -> 画像の中心座標に関するセクション
- latitude -> 中心の緯度
- longitude -> 中心の経度
[area]
# format
# d ... distance from image center(lat,lon) to edge
d = 2
- area-> 画像がカバーする範囲に関するセクション
- d-> 中心から東西南北に±dを画像の範囲とする
[image]
# format
# base_color: {'black', 'white'} ... image's backgroud color
# color_map: e.g.{'jet', 'gray'}(Colormaps in Matplotlib) ... image's cloud color
# draw_coastline: bool ... whether to draw coastline
# coastline_quality: {c(crude), l(low), i(intermediate), h(high), f(full)}
# ... coastline quality (only when draw_coastline is True)
# draw_colorbar: bool ... whether to draw colorbar
base_color = white
color_map = jet
draw_coastline = True
coastline_quality = l
draw_colorbar = True
- image-> 画像の見た目に関するセクション
- base_color-> 画像全体の背景の色(下記が使えます)
- black
- white
- color_map-> 降水強度を描画するカラーマップ(下記で動作確認しました)matplotlib.cmに準拠します
- jet
- gray
- draw_coastline-> 海岸線を描画するかどうか
- coastline_quality-> 海岸線の描画精度(draw_coastline = Trueのときのみ動作)(下記が使えます)
- c
- l
- i
- h
- f
- draw_colorbar-> カラーバーを描画するかどうか
- base_color-> 画像全体の背景の色(下記が使えます)
[windows]
# for windows wgrib2 path setting
wgrib2_path = C:/Users/Milano/Desktop/wgrib2/wgrib2.exe
- windowsで
Ggis1km_image_generator_WINDOWS.py
を起動する際にwgrib2のパスを設定する必要がある
上記config.ini
設定後,スクリプト起動
$ python Ggis1km_downloder.py
$ python Ggis1km_image_generator.py
download_path.bin_path
に1kmメッシュ全国合成レーダーエコー強度GPVバイナリファイル(GRIB2形式)が,
generate_path.img_path
に作成した画像ファイルが保存される.
$ git clone https://github.com/catdance124/synthetic_radar_GPV.git
$ cd ~
$ sudo apt-get install gfortran
$ export FC=gfortran
$ export CC=gcc
$ wget ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib2/wgrib2.tgz
$ tar -xvzf wgrib2.tgz
$ cd grib2/
$ make
$ sudo cp ~/grib2/wgrib2/wgrib2 /usr/local/bin/
$ conda install basemap
ubuntu 18.04.1 LTS
on VMware Workstation 15 Player
仮想環境ではmatplotlibのsavefigがどんどん遅くなっていったので
クラスタで回すために対応させた
windows10 x64 anaconda
$ conda install basemap
http://www.ftp.cpc.ncep.noaa.gov/wd51we/wgrib2/Windows_64/
ファイル配置
synthetic/
├ Ggis1km_image_generator_WINDOWS.py
├ temp.bin
└ wgrib2/
├ wgrib2.exe
├ cyggcc_s-seh-1.dll
├ cyggfortran-3.dll
├ cyggomp-1.dll
├ cygquadmath-0.dll
└ cygwin1.dll
1kmメッシュ全国合成レーダーGPV
http://www.jmbsc.or.jp/jp/online/file/f-online30100.html
http://database.rish.kyoto-u.ac.jp/arch/jmadata/synthetic-original.html
詳細
https://www.data.jma.go.jp/add/suishin/catalogue/format/ObdObs001_format.pdf
活用例
http://agora.ex.nii.ac.jp/digital-typhoon/radar/graphics/index.html.ja
https://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/
commands: https://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/long_cmd_list.html
ref: http://www.hysk.sakura.ne.jp/Linux_tips/how2use_wgrib
データが対応していなかった
MSMデータなどを使うならこっちが楽そう
/etc/apt/source.list のリポジトリを日本国内に変更する
$ cd /etc/apt
$ sudo sed -i.bak -e "s/http:\/\/archive\.ubuntu\.com/http:\/\/jp\.archive\.ubuntu\.com/g" sources.list
$ apt-get update && apt-get -y upgrade
必要なパッケージをインストール
$ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev libpng-dev
pyenv インストール
$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
$ git clone https://github.com/yyuu/pyenv-pip-rehash.git ~/.pyenv/plugins/pyenv-pip-rehash
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ source ~/.bashrc
Anacondaのバージョン確認
$ pyenv install -l | grep anaconda3
anaconda3-5.0.1
anaconda3-5.1.0
anaconda3-5.2.0
anaconda3-5.3.0
anaconda3-5.3.1
anaconda3-2018.12
ここではAnaconda3-5.3.1をインストール
$ pyenv install anaconda3-5.3.1
$ pyenv global anaconda3-5.3.1
$ echo 'export PATH="$PYENV_ROOT/versions/anaconda3-5.3.1/bin:$PATH"' >> ~/.bashrc
$ source ~/.bashrc
$ conda install basemap
PROJ_LIBが見つからないので指定して与える
#Hack to fix missing PROJ4 env var
import os
import conda
conda_file_dir = conda.__file__
conda_dir = conda_file_dir.split('lib')[0]
proj_lib = os.path.join(os.path.join(conda_dir, 'share'), 'proj')
os.environ["PROJ_LIB"] = proj_lib
from mpl_toolkits.basemap import Basemap
https://qiita.com/syo_cream/items/05553b41277523a131fd
$ pip install jupyter
$ ipython
from notebook.auth import passwd
passwd()
$ mkdir ~/.jupyter
$ vim ~/.jupyter/jupyter_notebook_config.py
# ~/.jupyter/jupyter_notebook_config.py
c = get_config()
# Notebook上でplotを表示できるようにする
c.IPKernelApp.pylab = 'inline'
# 全てのIPから接続を許可
c.NotebookApp.ip = '*'
# IPython notebookのログインパスワード
c.NotebookApp.password = 'sha1:1f1f48943783:4da60e7ba677c2184f4d5378b3ca1ef46cc8fe09'
# 起動時にブラウザを起動させるかの設定
c.NotebookApp.open_browser = False
# ポート指定
c.NotebookApp.port = 8888
wget -P synthetic/ http://database.rish.kyoto-u.ac.jp/arch/jmadata/data/jma-radar/synthetic/original/2017/06/16/Z__C_RJTD_20170616000000_RDR_JMAGPV__grib2.tar
!,%を付けるとshellが実行できる
!はアプリケーションで,%はosコマンド?
!wget -nc -P path URL
%cd target_path
ls = %ls
print(ls)
# shellの出力をpython変数に渡すことができる
pythonで宣言した変数をshellに渡すことができる
$をつけて渡す
path = '~/temp'
URL = 'http://hoge.tar'
!wget -nc -P $path $URL
# !wget -nc -P ~/temp http://hoge.tar と等価
subprocessを代用
import subprocess
subprocess.run(['./wgrib2/wgrib2.exe',filepath,'-order','we:ns','-no_header','-bin','temp.bin'])
-nc 同名ファイルは保存しない
-P path 指定パスに保存する
-tf tarファイルの中身を確認
-xvf 展開
-C path 展開・圧縮先パスを指定
FORTRANをインストールし,環境変数に指定しておく
$ cd ~
$ sudo apt-get install gfortran
$ export FC=gfortran
$ export CC=gcc
$ wget ftp://ftp.cpc.ncep.noaa.gov/wd51we/wgrib2/wgrib2.tgz
$ tar -xvzf wgrib2.tgz
$ cd grib2/
$ make
~/grib2/wgrib2/wgrib2が実行ファイル
パスの通ったディレクトリにコピー
$ sudo cp ~/grib2/wgrib2/wgrib2 /usr/local/bin/
usage
$ wgrib2 data
# 1:0:d=2017010120:var discipline=0 center=34 local_table=1 parmcat=1 parm=201:surface:-10-0 min acc fcst:
ID: ? : d=基準日時 : 気象項目 : 条件 : 初期値(anl) or 予測(fcst) :
vars =
discipline
center
local_table
parmeter category
parmeter
http://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/varX.html
デフォでNS->SNに変換されるので指定してNSのままに
$ wgrib2 data -order we:ns
ファイル出力ができる
中身はデータ値が格子に沿って羅列されたもの(ここではNW->SE)
https://qiita.com/ysomei/items/12d6622bed030f6ac793#ruby-%E3%81%8B%E3%82%89%E5%88%A9%E7%94%A8%E3%81%99%E3%82%8B
-text filename
-bin filename
-ieee filename
出力名に-を指定することで標準出力可能
$ wgrib2 data -order we:ns -no_header -text -