1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【iRIC】.iproをh5pyで直接読んで時系列グラフを一発出力するGUIを作った

1
Posted at

意外と手間がかかる結果出力

iricの複数の計算結果で複数地点の水位やら流速やらをとっとと可視化したいってときに
なーんか使いずらい...となったのでやって欲しい事をclaudeと作りました。
(コードとexeは要望があればgitに上げて提供します)

スクリーンショット 2026-07-13 162700.png

複数の計算結果を読み込ませたらこんな感じ
2222.png

何ができるの?

ざっくり言うと 「地図をクリックした地点の時系列グラフが一発で出る」 ツールです。

  • 計算結果の読み込みは2通り
    • iRICのプロジェクトファイル(.ipro)をそのままドラッグ&ドロップ
    • CSVエクスポートした Result_*.csv のフォルダでもOK
  • 2Dカラーマップ上をポチポチクリックして地点を選ぶ
    • 左クリック=追加、右クリック=最後の1点を削除。直感的
    • ホイールでズーム、中ボタンドラッグでパンもできる
  • 選んだ地点の時系列グラフを一括表示
    • 浸水深・最大浸水深・地盤高・水位・流速など、結果に入っている量をチェックボックスで選ぶだけ
    • 量ごとにサブプロットが縦に並ぶので、水位と流速を同時に眺められる
  • 複数ケースの比較ができる
    • フォルダ(.ipro)を複数読み込むと、地点=色、ケース=線種で重ね描き
    • 「対策前 vs 対策後」の比較がこれだけで終わる
  • 出力はPNG / CSV / Excel
    • 報告書に貼るならPNG、後でいじるならCSV・Excelで

地味に便利な機能たち

作ってもらってるうちに欲が出て、色々足しました。

  • 開始時刻を入れると横軸が日時表示になる2026/06/16 09:00 みたいに入れるだけ。空欄なら経過時間(h)表示)
  • 地点のCSV保存・読込:一度選んだ地点セットを保存しておけば、別ケースでも同じ地点で即抽出
  • 断面流量・降雨量・貯留量の算出:地点を2つ選んで断面流量、領域全体の雨量や地表の貯留量も出せる
  • Y軸範囲・表示期間の手動指定:報告書用に軸を揃えたいときに

中身の話(ちょっとだけ技術)

個人的に「へぇ」となったポイント。

.ipro は実は ZIP

iRICのプロジェクトファイル .ipro の正体はZIPで、中に Case1.cgn(CGNS=HDF5形式)が入っています。
なので iRICを起動しなくても、h5py で計算結果を直接読めます

with zipfile.ZipFile(path) as z:
    z.extract("Case1.cgn", tmpdir)
h5 = h5py.File(cgn, "r")
zone = h5["iRIC/iRICZone"]          # FlowSolution1, FlowSolution2, ... が時系列
times = h5["iRIC/BaseIterativeData/TimeValues/ data"][:]  # 

' data' の先頭スペースが罠
CGNS内部のデータセット名が " data"(先頭に半角スペース)なのが最大の罠でした。

クリック地点→格子セルの対応は KDTree
クリックした座標に一番近い計算セルを探すのに scipy.spatial.cKDTree を使っています。
格子が数十万セルあっても最近傍検索は一瞬です。

tree = cKDTree(np.column_stack([X, Y]))
dist, idx = tree.query([event.xdata, event.ydata])

GUIは標準ライブラリのtkinter
配布を考えると追加インストールが少ない方がいいので、GUIはtkinter + matplotlib埋め込み。
重い .ipro の展開はワーカースレッドに逃がして、読み込み中もUIが固まらないようにしています。

必要なもの

pip install numpy pandas h5py scipy matplotlib
pip install tkinterdnd2   # ドラッグ&ドロップしたい人だけ(無くても動く)
Python 3.x + 上記だけ。iRIC本体やiricモジュールは不要です。

使い方
起動して .ipro(またはResult CSVのフォルダ)をD&D
背景マップ(最大浸水深とか)を見ながら、気になる地点をクリック
「時系列グラフを更新」ボタン
気に入ったらPNG保存 or CSV/Excel出力
以上。iRICを開いて可視化設定して…という手順がまるっと消えました。

おわりに
「iRICの結果からサクッと時系列を抜きたい」だけのために毎回GUIを操作するのが面倒だったのですが、
Claudeに要望を投げる→動くものが返ってくる→使ってみて不満点を追加要望、のループで
気づいたら流量計算までできるツールになっていました。

.iproがZIP+HDF5だと分かってからは拡張が一気に楽になったので、
iRICの結果を自動処理したい人は h5py で直接読むアプローチ、おすすめです。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?