2025年4月27日日曜日

3次元と2次元の安全率

昔から気になっていた3次元安定解析での安全率と2次元安全率の差異。 
下記の一部を流用して、どの程度異なるのか調べ始めました。

Geochemist?: 3次元すべり面推定→安定計算(逆算)→(順算)LSM作成

「3次元すべり面推定」→「3次元安定計算(逆算)」まで実施し、そのすべり方向と主測線を求めて2次元で順算するという流れにしました。3次元逆算は MATLAB 利用でしたが、2次元順算と合わせて Python に変更しました。ついでに2次元逆算も入れてみました。

バグ取りに時間がかかりましたが、一通り動くようになりました(まだ終わっていません)。
引っかかったのが、地理座標の基準と数学座標での基準の扱い。前者は北が0で時計回りを正として扱っていたのですが、後者はx軸+方向が0で反時計回りが正。ここの差に気づくのが遅れ、何度も確認する羽目になりました。
現状、1万か所の計算で10時間程度かかります。バグ取りが終われば並列化しましょう。

計算で問題になったケースを確認すると、崩壊ポリゴンの精度が悪い(尾根をまたいでいる、2つの崩壊地がくっついている等)、SLBL でうまくすべり面が作成されない(薄い?、10mメッシュでは規模が小さい?)の2種が目立ちました。両方とも、正しい情報を反映するには多大な手間がかかりそうです。

あと、地味に効くのが計算式。簡易 Janbu なのですが、2次元と3次元で出発時のせん断抵抗力の取り方が異なっていました。整合性確認を詰めないといけないのですが、まだできていません。3次元で微小項を削れば式を導出できるのですが、文献を追っても確認ができず止まっています。

このような状態ですが、計算結果では意外と2次元安全率が3次元よりも高い場合があるという印象でした。これまでは2次元の方が小さいという報告が多かったのですが、条件によってはそうでもないのかもしれません。昔は2次元結果の補正を考えていましたが、単純ではないようです。

副次的ですが、3次元の推定すべり面形状と主測線方向は、力のバランスをチェックすることで妥当性を担保できる点に気づきました。GEORAMA等ですべり面サーフェスを作成した際に、安全率や左右の土塊のバランスまで出力できるようにすれば時短にもなるでしょう。

少なくとも、1万箇所程度の3次元+2次元安定計算なら、実用的な時間で解ける時代になりました。課題は「いかに正確な入力データを作成(入手)するか」でしょう。大量のデータを扱う手段は整っていますが、正確なデータを作成する仕組みは整っていません。堆積域を除いた崩壊域をブロック毎にポリゴン化する手法も自動化されていません。
安全率の差異を把握するには、もう少し時間がかかりそうです。


2025年4月14日月曜日

Python から Box にアクセス

BOX から柱状図とコア写真を集める際に、Python SDK を利用しました。https://ja.developer.box.com/guides/tooling/sdks/python/

新たなSDKが推奨されています。
https://ja.developer.box.com/guides/tooling/sdks/python-g

が、web上に情報の多い古い方を選択しました。それによると、大まかな流れは以下の通りでした。

・BOXでアプリ(JWT)を作成・・・管理者にアプリを承認してもらう
・アクセスに必要な情報一式を config.json として書き出し
・Python で json を読み取り、ログイン
・目的のフォルダIDにアクセス・・・管理者にアカウントを追加してもらう

アプリの内容を変更するたびに管理者承認が必要でした。
次にデータを収集する必要に迫られた場合、新しい SDK で試してみましょう。


コア写真から柱状図の生成(失敗)

 生成AIの使い方を理解したので、今度はコア写真(JPG)から柱状図(XML)の作成をテスト。

BLIP系の事前学習モデルにコア写真と柱状図を与えてチューニングした後、最後に丸っと柱状図を吐き出させる方針です。この「丸っと」は手抜きです。まず、現状でどこまでできそうかを見たかったわけです。が、失敗。まともな文章になりませんでした。

それでも、手を入れると可能だろうなという感触はつかめました。
ある程度フォーマットを与える、推論させる固定させておく、選択肢を与える、等々。
地質側の難しいところは深度区分。これは他のモデルを事前に咬ませる必要があるでしょう。
アーキテクチャとしての制約は長さ。XMLだと長いもので4万字程度ありました。これを丸っと再現するのは現段階では困難です。が、数年後なら可能になっているでしょうね。

急ぐ必要はありません。しばらく寝かせておきましょう。