講義のページ/Pythonのお勉強/RadarData
をテンプレートにして作成
[
トップ
] [
新規
| |
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#topicpath
** 気象庁合成レーダーデータ [#e7c3e7c1]
- 概要~
気象庁は合成レーダーデータを作成し、提供している。
-- [[気象庁情報カタログ 気象レーダー観測>https://www.data...
-- [[気象業務支援センター>http://www.jmbsc.or.jp/jp/onlin...
-- [[京都大学生存圏研究所>http://database.rish.kyoto-u.ac...
- データの読み取り~
wgrib2 で netCDF 形式に変換してから読み込む。これを実行す...
しかし、当面は、Windows マシンに何かをインストールするこ...
*** 参考URL [#i59c78b2]
- 全般
-- 増田先生によるプログラム
--- [[解析雨量を Pythonで読み、作図する (試作版)>http://m...
--- [[全国合成レーダーデータを Pythonで読み、作図する (試...
網羅的な情報が掲載されており、実行環境も含めてプログラム...
-- [[pythonでGRIB2形式のバイナリファイルからレーダーエコ...
地図に basemap を使った場合。
-- [[気象庁の1kmメッシュ解析雨量GPV:GRIB2形式をpython:h...
hvplot による解析雨量の結果で、レーダーデータそのものでな...
- wgrib2
-- [[Windows環境でGRIB2形式データをCSV形式に変換する(あ...
wgrib2 は、単にデータ形式の変換だけでなく、データの抽出に...
-- [[Colaboratoryでwgrib2を使えるようにした>https://qiita...
wgrib2 を Google Colaboratory で使うとき、wgrib2 を Googl...
-- [[Colaboratoryを使ってブラウザ上だけで気象レーダー画像...
wgrib2 を Google Colaboratory で使う、というだけでなく、...
-- [[ecCodesに入ったGRIB2 Template 5.200/7.200サポートを...
grib2 という形式は、下位の仕様にバリエーションがあるため...
- データの解説
-- [[気象×Python 〜全国合成レーダー〜>https:...
エコー強度(降水強度と関連)、エコー頂高度の区別と、格納...
** Google Colaboratory でのプログラミング概要 [#p3d1cd0f]
- Google Colaboratory で wgrib2 を動かすための準備~
~
Google Colaboratory は、Debian 系のLinux として動く。そこ...
まずは、通常のGoogleドライブとの混用が起こらないように、G...
wgrib2 のファイルをその下で展開してコンパイル、設置する。~
~
Google Colaboratory から、Google ドライブをマウントする際...
~
この操作は、同じ環境(同じGoogle のID)を使っている間は、...
~
#code(python){{
from google.colab import drive
drive.mount ('/content/drive')
!mkdir -p /content/drive/MyDrive/ColabEnv/src
!mkdir -p /content/drive/MyDrive/ColabEnv/bin
!mkdir -p /content/drive/MyDrive/ColabEnv/DATA
%cd /content/drive/MyDrive/ColabEnv/src
!wget https://www.ftp.cpc.ncep.noaa.gov/wd51we/wgrib2/wgr...
!tar xvzf wgrib2.tgz.v3.1.2
%cd grib2
%set_env CC gcc
%set_env FC gfortran
!make
!cp wgrib2/wgrib2 ../../bin/
!ls -l ../../bin/
}}
~
~
- 気象庁レーダーデータのダウンロード~
~
研究目的で、京大生存圏研究所からデータをありがたくダウン...
また、上記の wgrib2 を用いて、ダウンロードしたデータを読...
~
次の操作は、Google Colaboratory の接続ごとに行う。一度行...
~
#code(python){{
from google.colab import drive
drive.mount ('/content/drive')
import os
os.environ['PATH'] += ":/content/drive/MyDrive/ColabEnv/b...
# print(os.environ['PATH'])
!chmod u+x /content/drive/MyDrive/ColabEnv/bin/wgrib2
}}
#code(python){{
def getradar(datehour, n10):
datehour = str(datehour)
n10 = str(n10)
%cd /content/drive/MyDrive/ColabEnv/DATA
!echo Z__C_RJTD_{datehour}{n10}000_RDR_JMAGPV__grib2....
!if [ ! -e Z__C_RJTD_{datehour}{n10}000_RDR_JMAGPV__g...
!for f in *.bin; do if [ ! -e "${f%.bin}.ncdf" ]; the...
}}
~
その後次のコマンドでファイルをダウンロードし、読み込みや...
#code(python){{
getradar(2023062102,2)
}}
この例では、2023年6月21日2時(UTC) の 10 分ごとのデータ( 0...
~
取得したnetCDF 形式のファイルは、次のようにして確かめられ...
#code(python){{
# エコー強度のデータ
!ls *1km*.ncdf
# エコー頂高度のデータ
!ls *5km*.ncdf
}}
ファイ名とデータ名称の対応関係は、[[気象庁情報カタログ 気...
|データ名称|ファイル名|h
|2.5kmメッシュ全国合成レーダーエコー頂高度GPV|Z__C_RJTD_y...
|1kmメッシュ全国合成レーダーエコー強度GPV|Z__C_RJTD_yyyyM...
~
- レーダーデータの読み込み~
netCDF 形式のファイルを読み込む。~
-- 準備~
次のコードは、接続が切れるまで、一度だけ行えば良い。
#code(python){{
# 必要なライブラリを導入する。
# ! apt install python3-netcdf4 : これでは何故か使えない。
! pip install netCDF4 cartopy
# データがある場所に移動する。
%cd /content/drive/MyDrive/ColabEnv/DATA
}}
netCDF では変数名が重要である。ある特定の日時のデータを読...
これは今後、実行する必要がない。
#code(python){{
## エコー頂高度
# netCDFファイルを開く
dataset = netCDF4.Dataset('Z__C_RJTD_20230621022000_RDR_J...
# 変数名を表示する
variable_names = dataset.variables.keys()
print(variable_names)
# ファイルを閉じる
dataset.close()
## エコー強度
# netCDFファイルを開く
dataset = netCDF4.Dataset('Z__C_RJTD_20230706022000_RDR_J...
# 変数名を表示する
variable_names = dataset.variables.keys()
print(variable_names)
# ファイルを閉じる
dataset.close()
}}
-- データの名前:
実行した結果、次のことがわかる。これは、ファイルからデー...
エコー頂高度のファイルの中のデータ名
'latitude', 'longitude', 'time', 'var0_15_192_surface'
エコー強度のファイルの中のデータ名
'latitude', 'longitude', 'time', 'var0_1_201_surface'
~
- 図を描く~
-- xarray と matplotlib を使った例~
これを使うと、netCDF4 はいらない。
#code(python){{
## エコー頂高度の図を描く
import xarray as xr
import matplotlib.pyplot as plt
# netCDFファイルを開く
dataset = xr.open_dataset('Z__C_RJTD_20230621022000_RDR_J...
# データ変数、緯度と経度の値を取得する(例: 'var0_15_192_...
data = dataset['var0_15_192_surface']
lat = dataset['latitude']
lon = dataset['longitude']
# データをプロットする
plt.contourf(lon, lat, data[0,:,:], levels=20) # 最初の...
plt.colorbar() # カラーバーを追加
plt.xlabel('Longitude') # 軸ラベル
plt.ylabel('Latitude')
plt.grid(True) # グリッド
plt.show() # プロットを表示
# ファイルを閉じる
dataset.close()
}}
-- netCDF, matplotlib, cartopy を使った例
#code(python){{
import netCDF4 as nc
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature
# netCDFファイルを開く
dataset = nc.Dataset('Z__C_RJTD_20230621022000_RDR_JMAGPV...
# データ変数を取得する(例: 'data_var'はデータ変数の名前)
data = dataset.variables['var0_15_192_surface']
lat = dataset.variables['latitude'][:]
lon = dataset.variables['longitude'][:]
# データをプロットする
# fig = plt.figure(figsize=(10, 6))
ax = plt.axes(projection=ccrs.PlateCarree())
ax.contourf(lon, lat, data[0, ...], levels=20, transform=...
# 世界地図を描画する
ax.add_feature(cfeature.COASTLINE, linewidth=0.5)
# ax.add_feature(cfeature.BORDERS, linewidth=0.5)
# プロットを表示する
plt.title('NetCDF Data with World Map')
plt.show()
# ファイルを閉じる
dataset.close()
}}
[[参照先>https://colab.research.google.com/drive/1jjgtFY4...
終了行:
#topicpath
** 気象庁合成レーダーデータ [#e7c3e7c1]
- 概要~
気象庁は合成レーダーデータを作成し、提供している。
-- [[気象庁情報カタログ 気象レーダー観測>https://www.data...
-- [[気象業務支援センター>http://www.jmbsc.or.jp/jp/onlin...
-- [[京都大学生存圏研究所>http://database.rish.kyoto-u.ac...
- データの読み取り~
wgrib2 で netCDF 形式に変換してから読み込む。これを実行す...
しかし、当面は、Windows マシンに何かをインストールするこ...
*** 参考URL [#i59c78b2]
- 全般
-- 増田先生によるプログラム
--- [[解析雨量を Pythonで読み、作図する (試作版)>http://m...
--- [[全国合成レーダーデータを Pythonで読み、作図する (試...
網羅的な情報が掲載されており、実行環境も含めてプログラム...
-- [[pythonでGRIB2形式のバイナリファイルからレーダーエコ...
地図に basemap を使った場合。
-- [[気象庁の1kmメッシュ解析雨量GPV:GRIB2形式をpython:h...
hvplot による解析雨量の結果で、レーダーデータそのものでな...
- wgrib2
-- [[Windows環境でGRIB2形式データをCSV形式に変換する(あ...
wgrib2 は、単にデータ形式の変換だけでなく、データの抽出に...
-- [[Colaboratoryでwgrib2を使えるようにした>https://qiita...
wgrib2 を Google Colaboratory で使うとき、wgrib2 を Googl...
-- [[Colaboratoryを使ってブラウザ上だけで気象レーダー画像...
wgrib2 を Google Colaboratory で使う、というだけでなく、...
-- [[ecCodesに入ったGRIB2 Template 5.200/7.200サポートを...
grib2 という形式は、下位の仕様にバリエーションがあるため...
- データの解説
-- [[気象×Python 〜全国合成レーダー〜>https:...
エコー強度(降水強度と関連)、エコー頂高度の区別と、格納...
** Google Colaboratory でのプログラミング概要 [#p3d1cd0f]
- Google Colaboratory で wgrib2 を動かすための準備~
~
Google Colaboratory は、Debian 系のLinux として動く。そこ...
まずは、通常のGoogleドライブとの混用が起こらないように、G...
wgrib2 のファイルをその下で展開してコンパイル、設置する。~
~
Google Colaboratory から、Google ドライブをマウントする際...
~
この操作は、同じ環境(同じGoogle のID)を使っている間は、...
~
#code(python){{
from google.colab import drive
drive.mount ('/content/drive')
!mkdir -p /content/drive/MyDrive/ColabEnv/src
!mkdir -p /content/drive/MyDrive/ColabEnv/bin
!mkdir -p /content/drive/MyDrive/ColabEnv/DATA
%cd /content/drive/MyDrive/ColabEnv/src
!wget https://www.ftp.cpc.ncep.noaa.gov/wd51we/wgrib2/wgr...
!tar xvzf wgrib2.tgz.v3.1.2
%cd grib2
%set_env CC gcc
%set_env FC gfortran
!make
!cp wgrib2/wgrib2 ../../bin/
!ls -l ../../bin/
}}
~
~
- 気象庁レーダーデータのダウンロード~
~
研究目的で、京大生存圏研究所からデータをありがたくダウン...
また、上記の wgrib2 を用いて、ダウンロードしたデータを読...
~
次の操作は、Google Colaboratory の接続ごとに行う。一度行...
~
#code(python){{
from google.colab import drive
drive.mount ('/content/drive')
import os
os.environ['PATH'] += ":/content/drive/MyDrive/ColabEnv/b...
# print(os.environ['PATH'])
!chmod u+x /content/drive/MyDrive/ColabEnv/bin/wgrib2
}}
#code(python){{
def getradar(datehour, n10):
datehour = str(datehour)
n10 = str(n10)
%cd /content/drive/MyDrive/ColabEnv/DATA
!echo Z__C_RJTD_{datehour}{n10}000_RDR_JMAGPV__grib2....
!if [ ! -e Z__C_RJTD_{datehour}{n10}000_RDR_JMAGPV__g...
!for f in *.bin; do if [ ! -e "${f%.bin}.ncdf" ]; the...
}}
~
その後次のコマンドでファイルをダウンロードし、読み込みや...
#code(python){{
getradar(2023062102,2)
}}
この例では、2023年6月21日2時(UTC) の 10 分ごとのデータ( 0...
~
取得したnetCDF 形式のファイルは、次のようにして確かめられ...
#code(python){{
# エコー強度のデータ
!ls *1km*.ncdf
# エコー頂高度のデータ
!ls *5km*.ncdf
}}
ファイ名とデータ名称の対応関係は、[[気象庁情報カタログ 気...
|データ名称|ファイル名|h
|2.5kmメッシュ全国合成レーダーエコー頂高度GPV|Z__C_RJTD_y...
|1kmメッシュ全国合成レーダーエコー強度GPV|Z__C_RJTD_yyyyM...
~
- レーダーデータの読み込み~
netCDF 形式のファイルを読み込む。~
-- 準備~
次のコードは、接続が切れるまで、一度だけ行えば良い。
#code(python){{
# 必要なライブラリを導入する。
# ! apt install python3-netcdf4 : これでは何故か使えない。
! pip install netCDF4 cartopy
# データがある場所に移動する。
%cd /content/drive/MyDrive/ColabEnv/DATA
}}
netCDF では変数名が重要である。ある特定の日時のデータを読...
これは今後、実行する必要がない。
#code(python){{
## エコー頂高度
# netCDFファイルを開く
dataset = netCDF4.Dataset('Z__C_RJTD_20230621022000_RDR_J...
# 変数名を表示する
variable_names = dataset.variables.keys()
print(variable_names)
# ファイルを閉じる
dataset.close()
## エコー強度
# netCDFファイルを開く
dataset = netCDF4.Dataset('Z__C_RJTD_20230706022000_RDR_J...
# 変数名を表示する
variable_names = dataset.variables.keys()
print(variable_names)
# ファイルを閉じる
dataset.close()
}}
-- データの名前:
実行した結果、次のことがわかる。これは、ファイルからデー...
エコー頂高度のファイルの中のデータ名
'latitude', 'longitude', 'time', 'var0_15_192_surface'
エコー強度のファイルの中のデータ名
'latitude', 'longitude', 'time', 'var0_1_201_surface'
~
- 図を描く~
-- xarray と matplotlib を使った例~
これを使うと、netCDF4 はいらない。
#code(python){{
## エコー頂高度の図を描く
import xarray as xr
import matplotlib.pyplot as plt
# netCDFファイルを開く
dataset = xr.open_dataset('Z__C_RJTD_20230621022000_RDR_J...
# データ変数、緯度と経度の値を取得する(例: 'var0_15_192_...
data = dataset['var0_15_192_surface']
lat = dataset['latitude']
lon = dataset['longitude']
# データをプロットする
plt.contourf(lon, lat, data[0,:,:], levels=20) # 最初の...
plt.colorbar() # カラーバーを追加
plt.xlabel('Longitude') # 軸ラベル
plt.ylabel('Latitude')
plt.grid(True) # グリッド
plt.show() # プロットを表示
# ファイルを閉じる
dataset.close()
}}
-- netCDF, matplotlib, cartopy を使った例
#code(python){{
import netCDF4 as nc
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature
# netCDFファイルを開く
dataset = nc.Dataset('Z__C_RJTD_20230621022000_RDR_JMAGPV...
# データ変数を取得する(例: 'data_var'はデータ変数の名前)
data = dataset.variables['var0_15_192_surface']
lat = dataset.variables['latitude'][:]
lon = dataset.variables['longitude'][:]
# データをプロットする
# fig = plt.figure(figsize=(10, 6))
ax = plt.axes(projection=ccrs.PlateCarree())
ax.contourf(lon, lat, data[0, ...], levels=20, transform=...
# 世界地図を描画する
ax.add_feature(cfeature.COASTLINE, linewidth=0.5)
# ax.add_feature(cfeature.BORDERS, linewidth=0.5)
# プロットを表示する
plt.title('NetCDF Data with World Map')
plt.show()
# ファイルを閉じる
dataset.close()
}}
[[参照先>https://colab.research.google.com/drive/1jjgtFY4...
ページ名: