未分類

        elif "GUID" in model_name:
elems = ["卓越天気", "3時間降水量", "6時間降水量", "12時間降水量", "24時間降水量", "3時間降雪量", "6時間降雪量", "12時間降雪量", "24時間降雪量", "発雷確率"]

            # npzに事前計算されている要素か判定
is_precalculated = False
if "最大" in elem_name or "24時間降水量" in elem_name:
is_precalculated = True
elif "降雪" in elem_name:
is_precalculated = True
elif is_meps and accum_hours == 3:
is_precalculated = True

if is_precalculated:
fixed_key = None
if "降水量" in elem_name:
if "1時間最大" in elem_name: fixed_key = "precip1max"
elif "3時間最大" in elem_name: fixed_key = "precip3max"
elif "24時間最大" in elem_name: fixed_key = "precip24max"
elif "24時間" in elem_name: fixed_key = "precip24"
else: fixed_key = "precip"
else:
fixed_key = f"snow{accum_hours}"

meps_key = None
if fixed_key and fixed_key in data.files:
meps_key = fixed_key
else:
vc = "tp_" if "降水量" in elem_name else "asnow_"
tr = f"_{max(0, val-accum_hours)}_{val}"
for k in data.files:
if k.startswith(vc) and k.endswith(tr) and not ("lon" in k or "lat" in k):
meps_key = k; break
if not meps_key:
for k in data.files:
if k.startswith(vc) and k.endswith(f"_{val}") and not ("lon" in k or "lat" in k):
meps_key = k; break

# どこにもなければ MSM用の asnow や precip をフォールバックとして使う
if not meps_key:
if "降雪" in elem_name and "asnow" in data.files:
meps_key = "asnow"
elif "降水量" in elem_name and "precip" in data.files:
meps_key = "precip"

if meps_key and meps_key in data.files:
accum_val = _cl(data[meps_key], 0, 1000, 0.0)
lon_c, lat_c = self.get_coords_for_data(data, accum_val)
valid_data = True