Pyartを利用するための環境Python環境を準備する

# 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()

![Figure_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477082/1d36fda4-0b4b-60da-3c1e-af7b296fbb0e.png)

うまく表示することが出来た。