こんにちは、しらすです。
先日NetCDFでtimeを扱うときに少し困ったのでメモします。
NetCDFのtimeの日時を算出する
NetCDFのtimeデータは、ある日時からの時間経過で規定されています。基準となる日にちに対して、時間経過分を加算することで日時を算出可能です。
timedeltaという関数を用いて算出可能ですので以下に使い方を記載します。
timedeltaで日時を算出する
import datetime
d = datetime.datetime(1800, 1, 1, 0, 0, 0) #initial date
by_day = d + datetime.timedelta(days=30) #30days shift
by_hour = d + datetime.timedelta(hours=612) #25days + 12hours shift
by_day_hour = d + datetime.timedelta(days=20,hours=132) #25days + 12hours shift
print("by day = ", by_day)
print("by_hour = ", by_hour)
print("by_day_hour = ", by_day_hour)
timedeltaはdaysやhoursで指定した分だけ基準となる日時からシフト可能です。NetCDFのデータの場合はhoursを使う場合が多いようです。
算出した結果
おまけ NetCDFのtimeの基準日時と値の単位の調べ方
作り手によって基準日時が変わるようなので、調べ方を記載しておきます。以下の関数を実行して確認しましょう。
# netCDFファイルの読み込み
nc = netCDF4.Dataset('rhum.1979.nc', 'r')
key = nc.variables.keys() #keyの名前を確認(timeという名前じゃない場合があるため)
spec = nc['time'] #timeの詳細を確認
コメント