Pythonで拡張アメダスを読む
2019年6月11日
2023年10月26日
2020/07/24 パッケージとしてGitHubで公開しました。
https://github.com/TRNSYSJP/weapy
2019/06/11 初出時に拡張アメダスのファイル名を間違えていたので、修正しました。
2019/06/12 リマークの削除処理を更新
拡張アメダス気象データ(拡張AMeDAS、EA気象データ)の値を使いたいときが度々あるのですが、専用ツールを使うのもめんどう。(専用ツールでCSVを書き出すと一日分が1行で書き出されるので、ちょっと使いにくい)
Pythonでスクリプトを書いてみた
試しに標準年の気温のデータの読み出しと、テキストファイルへの書き出し処理を書いています。
それらしい値が取れているで、多分大丈夫だと思いますが…、検証はしていないので、使われる方は自己責任でお願いします。
気象データの読み出し方法は分かったので、チャートにしたりとか、これでいろいろ応用が利きそうです。気温以外は気が向いたら作ります。
以下、ソースコードです。1995年版と、それと2000年版の標準年版は読み出しできるはずです。2010年版は地点番号が変更されているので、そのあたりは対策が必要です。(たぶんエラーになる)
このソースコードの使用についての制限は設けませんが、クドいようですが現状有姿(AS-IS)、非保証です。
# coding: utf-8
# Example code for reading extended AMeDAS file.
# author Yuichi Yasuda @ quattro corporate design
# copyright 2019 quattro corporate design. All right reserved.
import struct
import math
def read_int16(f):
"""Reads a 2-byte signed integer from the file"""
bytes = f.read(2)
val = struct.unpack('<h', bytes)[0] #Convert bytes to a 2-byte signed integer (int16)
return val
def remove_remark(val):
"""remove the remark"""
return math.floor(val/10.0) # round the value down
if(__name__ == '__main__'):
RECORD_LENGTH = 18306
BLOCK_LENGTH = RECORD_LENGTH * 8
weafile = r'E:\EAD95\RWY8195.wea'
# no = 1 #宗谷
no = 363 #東京
#no = 726 #福岡
tambs = []
with open(weafile, 'rb') as f:
f.seek((no-1)*BLOCK_LENGTH) # go to the head of the specified station data.
# read the station, entity no and the year
station_number = read_int16(f)
entity_number = read_int16(f)
year = read_int16(f)
for day in range(366): #365 days + 1 day for dummy
for hour in range(24): #24 hours
val = read_int16(f)
val = remove_remark(val) #remove the remark
val = val * 1.0/10.0 #unit conversion, 0.1C to 1.0C
tambs.append(val)
with open('tamb.csv', 'w') as f:
for val in tambs[:8760]: # data for 365 days excluding the dummy day
f.write(str(val)+'\n')
動作環境
以下の環境で動作を確認しています。
Windows10 Pro(64bit, 1803)
Anaconda/Python 3.7.1
「拡張アメダス気象データ1981-2000」収録の1995年版標準気象データ
3件のピンバック
Pythonでパッシブ気候図を描く | 建築環境工学系日記
拡張アメダス、EPW気象データパッケージ | 建築環境工学系日記
Pythonで拡張アメダス新フォーマット(WEA2)を読む | 建築環境工学系日記