Pyartを利用するための環境構築
pyartとは気象レーダーの観測データを処理するためのPythonで書かれたライブラリである。
気象レーダーデータを解析したり可視化するための機能がある。
https://arm-doe.github.io/pyart/
Pythonは科学的な利用が広がっており、深層学習目的などで近年よく利用されているが、
これに限らず統計的な解析を行い、可視化するなど様々なライブラリが利用できる。
筆者もPythonの勉強したいと考えたが、目的もなく勉強するのもモチベーションがあがらないので、
ここで記事にすることで勉強したいと考えた。
Python開発環境を準備
ここではAnacondaを使う。Anacondaについてはネット上で他に記事があると思うのでそちらを参照。
まずは環境を作る。必要に応じてpython3.Xで作成する。
今回利用したのはpython3.6。(AnacondaのNavigatorでも作成可能)
Pyartとの依存関係があることに注意。
conda create --name radar python
作成した環境に切り替える。
conda activate radar
Pyartをインストールする
https://anaconda.org/conda-forge/arm_pyart
を参考にしてインストールする。
conda install -c conda-forge/label/cf201901 arm_pyart
インストールするとPyartとともに様々なライブラリがインストールされる。
Pyartはnetcdfやhdfと連携している他、pythonで可視化する際に標準的に利用されるmatplotlibと連携するため、これらのライブラリも同時にインストールされる。
(何でWindowsなんだ、とかそのような質問は受け付けない。)
(C:\Users\user\Anaconda3\envs\radar) C:\Users\user>conda install -c conda-forge/label/cf201901 arm_pyart
Fetching package metadata ...............
Solving package specifications: .
Package plan for installation in environment C:\Users\user\Anaconda3\envs\radar:
The following NEW packages will be INSTALLED:
pytz: 2018.9-py_0 conda-forge/label/cf201901
The following packages will be SUPERSEDED by a higher-priority channel:
bzip2: 1.0.8-hfa6e2cd_0 conda-forge --> 1.0.6-vc14_1 conda- forge/label/cf201901 [vc14]
curl: 7.65.3-h4496350_0 conda-forge --> 7.60.0-vc14_0 conda-forge/label/cf201901 [vc14]
freetype: 2.10.0-h5db478b_0 conda-forge --> 2.9.1-he8b6a0d_1004 conda-forge/label/cf201901
hdf4: 4.2.13-hf8e6fe8_1002 conda-forge --> 4.2.13-vc14_0 conda-forge/label/cf201901 [vc14]
hdf5: 1.10.5-nompi_hcc15c50_1100 conda-forge --> 1.10.2-vc14_0 conda-forge/label/cf201901 [vc14]
icu: 64.2-he025d50_0 conda-forge --> 58.2-vc14_0 conda-forge/label/cf201901 [vc14]
jpeg: 9c-hfa6e2cd_1001 conda-forge --> 9b-vc14_2 conda-forge/label/cf201901 [vc14]
krb5: 1.16.3-hdd46e55_1001 conda-forge --> 1.14.6-vc14_0 conda-forge/label/cf201901 [vc14]
libcurl: 7.65.3-h4496350_0 conda-forge --> 7.61.1-h7602738_0
libnetcdf: 4.6.2-ha953453_1002 conda-forge --> 4.6.1-h183b1a9_3 conda-forge/label/cf201901
libpng: 1.6.37-h7602738_0 conda-forge --> 1.6.34-vc14_0 conda-forge/label/cf201901 [vc14]
libssh2: 1.8.2-h642c060_2 conda-forge --> 1.8.0-hc4dcbb0_2 conda-forge/label/cf201901
matplotlib: 3.1.1-py37_1 conda-forge --> 2.2.3-py37h31860fd_0 conda-forge/label/cf201901
matplotlib-base: 3.1.1-py37h2852a4a_1 conda-forge --> 3.0.1-py37h0497f0e_1001 conda-forge/label/cf201901
netcdf4: 1.5.1.2-py37h8c66456_1 conda-forge --> 1.4.1-py37h8d81a0c_200 conda-forge/label/cf201901
openssl: 1.1.1c-he774522_1 --> 1.0.2o-vc14_0 conda-forge/label/cf201901 [vc14]
pyqt: 5.9.2-py37h6538335_2 conda-forge --> 5.6.0-py37h764d66f_1008 conda-forge/label/cf201901
python: 3.7.3-h8c8aaf0_1 --> 3.7.1-hc182675_1000 conda-forge/label/cf201901
qt: 5.9.7-h506e8af_3 conda-forge --> 5.6.2-vc14_1 conda-forge/label/cf201901 [vc14]
sip: 4.19.8-py37h6538335_1000 conda-forge --> 4.18.1-py37h6538335_1000 conda-forge/label/cf201901
sqlite: 3.29.0-he774522_0 --> 3.22.0-vc14_0 conda-forge/label/cf201901 [vc14]
tk: 8.6.9-hfa6e2cd_1002 conda-forge --> 8.6.8-vc14_0 conda-forge/label/cf201901 [vc14]
vc: 14.1-h0510ff6_4 --> 14-0 conda-forge/label/cf201901
zlib: 1.2.11-h2fa13f4_1005 conda-forge --> 1.2.11-vc14_0 conda-forge/label/cf201901 [vc14]
Proceed ([y]/n)? y
bzip2-1.0.6-vc 100% |###############################| Time: 0:00:03 46.47 kB/s
openssl-1.0.2o 100% |###############################| Time: 0:01:43 54.22 kB/s
openssl-1.0.2o 100% |###############################| Time: 0:02:26 38.42 kB/s
openssl-1.0.2o 100% |###############################| Time: 0:00:02 2.66 MB/s
vc-14-0.tar.bz 100% |###############################| Time: 0:00:00 0.00 B/s
zlib-1.2.11-vc 100% |###############################| Time: 0:00:00 3.90 MB/s
hdf5-1.10.2-vc 100% |###############################| Time: 0:00:06 3.20 MB/s
icu-58.2-vc14_ 100% |###############################| Time: 0:00:07 2.99 MB/s
jpeg-9b-vc14_2 100% |###############################| Time: 0:00:00 437.38 kB/s
krb5-1.14.6-vc 100% |###############################| Time: 0:00:01 605.64 kB/s
libpng-1.6.34- 100% |###############################| Time: 0:00:00 1.02 MB/s
libssh2-1.8.0- 100% |###############################| Time: 0:00:00 573.03 kB/s
python-3.7.1-h 100% |###############################| Time: 0:01:18 277.92 kB/s
sqlite-3.22.0- 100% |###############################| Time: 0:00:01 844.67 kB/s
tk-8.6.8-vc14_ 100% |###############################| Time: 0:00:01 2.59 MB/s
curl-7.60.0-vc 100% |###############################| Time: 0:00:00 407.35 kB/s
freetype-2.9.1 100% |###############################| Time: 0:00:01 474.05 kB/s
hdf4-4.2.13-vc 100% |###############################| Time: 0:00:00 2.17 MB/s
libcurl-7.61.1 100% |###############################| Time: 0:00:00 4.08 MB/s
pytz-2018.9-py 100% |###############################| Time: 0:00:00 4.49 MB/s
qt-5.6.2-vc14_ 100% |###############################| Time: 0:00:18 3.08 MB/s
sip-4.18.1-py3 100% |###############################| Time: 0:00:00 476.63 kB/s
libnetcdf-4.6. 100% |###############################| Time: 0:00:00 728.39 kB/s
pyqt-5.6.0-py3 100% |###############################| Time: 0:00:02 2.08 MB/s
matplotlib-2.2 100% |###############################| Time: 0:00:03 1.87 MB/s
matplotlib-bas 100% |###############################| Time: 0:00:03 1.78 MB/s
netcdf4-1.4.1- 100% |###############################| Time: 0:00:00 728.39 kB/s
インストールされたら動作するか確認する
NOAAのWebサイトからNational Weather Serviceのデータをダウンロードしてくる。
簡単にダウンロードできるようになっている。
Pyartのページを参考にしてサンプルプログラム書いてみる。
https://arm-doe.github.io/pyart/dev/auto_examples/index.html
import matplotlib.pyplot as plt
import pyart
filename = 'KABR20190522_000535_V06'
radar = pyart.io.read(filename)
display = pyart.graph.RadarDisplay(radar)
fig = plt.figure()
ax = fig.add_subplot(111)
display.plot('reflectivity', 0, vmin=-32, vmax=64.)
display.plot_cross_hair(5.)
plt.show()
うまく表示することが出来た。