2026年5月4日月曜日

地理空間MCP Server

地理空間情報:地理空間MCP Server - MLIT Geospatial MCP Server - (α版) - 国土交通省

国交省さんが公開されたMCPサーバーです。第一印象は「対応が早い」でした。河川砂防技術基準の学習用データセット公開に続き、これです。今後、さらに展開されるのでしょう。

動画では Claude Code を利用されています。これ、かなり使い勝手が良いので私も利用しています。もうChat に戻れません。

私の勤めている会社は Chat 止まりです。MCPサーバーにアクセスするためのツールはホワイトリストに入っていないため利用できません。が、そのうち対応してくれるでしょう。たぶん。
Office365  もMCP 経由で操作できるようになりましたので、早く業務メールも処理できるようにして欲しいのですが。

コード整備 その2

・ボーリングコアから柱状図作成
以前は手抜きで生成AIに丸投げ。そりゃダメよね、という結果でした。
今回は画像認識、評価を正攻法で積み上げる仕様で着手。古典的な画像処理からSAM2, Dino v2, YOLO8など、何を使うか選択させるところから実装、比較、評価、次の方針提案までをAIさんにお任せ。こちらは出てきた結果を見て方針変更の必要性を適時与えるだけ。手がかかりません。
コア、サンプリング箇所くらいは教師ナシでもXMLから判断できるだろうと思いきや、意外と難しい。仕方がないので少ない教師データを与えるとで適切に学習が進みました。教師データ作成のためのセグメント指定アプリもAIさんに作っていただきました。ありがたや。
まだセグメンテーションが完璧ではなく、その後の評価もまだまだですので方針を変える必要ありかもしれません。が、自動で試行を繰り返してくれるのは(時間がかかっても)手がかからないのでうれしい限りです。

・PCからエッジAIへ
PCで作成した巨大モデルをセンサー側に載せようと思い、方針作成をAIさんに指示。実機が手元になかったのテストまではできていませんが、数時間でプログラム作成までたどり着きました。しかも、上記の柱状図作成と並行で進行。部下を2人得たような気分です。

・過去コードのバグフィックス
過去に書いたコードを読ませてバグを調査。それなりに出てきます。もともと、これが目的の一つで有償AIを利用しているのですから、ありがたいと思うべきなのでしょうが。ま、修正もAIさんにお願いするので、それほど手はかからないか。

AIを利用したコーディングには、ある程度の知識やノウハウを有していた方が効率的です。その点、これまでのコーディング経験は役立つだろうと思います。若い方はノウハウなしで作っているので、また違った感性が育つのでしょう。
1年後、どのようにAIが変化して、技術者が対応するようになっているのか、楽しみです。

2026年5月2日土曜日

コード整備

先月、地方への出張が続いたためか、出不精がより落ち着いて家にこもっています。時間のあるうちに、いくつかのコードとマニュアルを整備することにしました。

・機械学習モデルの利用サンプル
お客様のご依頼で、Pythonを触ったことのない方でも使えるようにブラウザ上で判定させるサンプルモデルを作成。Python 環境を Docker file にまとめ、OSに関わらず動くようにしました。

・水文水質データベースのスクレーパー
国土交通省 水文水質データベースから、以下のデータをCSVファイルとして取得できるようにしました。
  • 観測所一覧 雨量・水位流量・ダム堰
  • 時間雨量 指定観測所の任意期間の時間雨量 [mm/h]
  • ダム諸量 指定ダムの任意期間の流域平均雨量・貯水量・流入量・放流量・貯水率
  • 水位・流量 指定観測所の任意期間の水位 [m]・流量 [m³/s]
このスクレーパーは、後輩さんからの依頼です。以前、Python で似たようなスクリプトを作成していましたが、Pythonを知らない方でも簡単に使えるようにC++へ移植・拡張。すべてブラウザのフォーム操作のみで完結するGUIも作成し、コマンドプロンプトでなくとも動かせるようにしました。
リクエスト間隔を2秒に固定しサーバー負荷への配慮しつつ、取得済みデータはローカルにキャッシュして二度取得しないようにしました。どの程度のアクセス頻度がOUTなのか判断できなかったため、公開は控えています。

・SPH 土ー水連成
Drag Force を考慮した2相2層でのコードを整備。もともと書いていたコードに対し、以下の点を変更しました。 
  • IDF(Peng 2022)への移植 — 水相を intrinsic density rho_tilde で記述し、自由水-飽和土界面の数値不整合を解消。ベースライン定式化を置換し、以後の全機能の土台に。
  • 境界条件の刷新 — mDBC(English 2022) へ統一(Shepard ghost + hydrostatic 補正)。
  • 数値安定化レイヤ追加 — Tait γ=7において、Riemann 圧力拡散(Zhang 2017)、δ-SPH 拡散、Bonet-Lok カーネル補正、HHT-α 積分を追加。
最も効いた改編はIDF 移植でした。
上記以外にもAIに多様な文献を集めさせて実装し試しています。便利な時代になったのですが、それら棄却した内容に対する理解が追い付いていません。復習が必要です。

つづきます。

2026年4月27日月曜日

AI コーディング

AIの助けを借りてコーディングし始めたころも「すごい」と思いましたが、今はAI主導でコーディングできるようになっています。あらためて「すごい」。これから何度驚かされるのでしょうか。

1年ほど寝かせていたコードですが、2週間ほどで問題点を見つけ、概ねそれらしく動くようになりました。その間、次々に露呈する問題に対して対策を施した文献を探し、実装し、試行したのはAIさんです。1年前と比べても、文献収集力、試行錯誤の効率が段違いです。仕事で使わない手はありません。

この時代、学生さんから見たら、AIを使ってもプログラムを書けないオジサンは老害に見えるかもしれませんね。経験ベースのオジサンたちが古いやり方を踏襲しようとすると、それだけでハラスメント?になるかもしれません。時代は繰り返す、でしょうか。昔も今も、このような構造は変わらないのでしょう。

さあ、コーディング問題は片付いたも同然です。寝かせていた子たちを起こしていきましょう。

Surface-wave dispersion spectrum inversion method applied to Love and Rayleigh waves

Surface-wave dispersion spectrum inversion method applied to Love and Rayleigh waves recorded by distributed acoustic sensingDAS surface-wave inversion | Geophysics | GeoScienceWorld

AI要約

1. 背景(問題点)

DASの特性と制約: DASは既存の光ファイバー網を利用して高密度な空間サンプリングを低コストで実現できる技術ですが、標準的な直線状ケーブルでは主にケーブル軸方向の動的ひずみを記録します。
波の分離の困難さ: 軸方向の成分のみを記録するという特性上、レイリー波とラブ波を分離することが困難です。
従来手法の限界: 従来の表面波解析(分散曲線解析)では、震源とケーブルを一直線上に配置する「インライン」観測で得られる純粋なレイリー波(またはラブ波)のみを扱うのが一般的でした。
クロスラインの問題: 震源がケーブルの延長線上にない「クロスライン」配置では、レイリー波とラブ波が混在して記録されるため、標準的な手法では正確なモデル化ができませんでした。これを解決するために特殊なケーブルやアレイを用いると、導入コストが大幅に増大するという課題がありました。

2. 手法

本研究では、分散曲線を抽出する代わりに分散スペクトル(周波数-位相速度領域)を直接インバージョンする手法を提案しています。
データ処理(観測スペクトルの構築)
スラントスタック法: 多チャンネルの記録をフーリエ変換で周波数領域に変換し、位相速度を仮定した位相シフトを与えて重ね合わせることで、分散スペクトルを構築します。振幅の変動を抑えるための正規化も行われます。

フォワードモデリング(理論スペクトルの生成)
モード集約法(Modal Summation Method): 推定された地下構造モデル(Vs,Vp,ρ、層の厚さ)に基づき、各受振器位置における放射方向(radial)と横方向(transverse)の変位記録を算出します。
DAS記録への変換: 計算された変位を、震源と受振器の方位角に基づいてケーブル軸方向の変位へと線形結合します。
ひずみとゲージ長の考慮: 得られた変位記録に1次中心差分を適用することで、DASが記録する「動的ひずみ」へと変換します。この差分をとる距離が実際のDASのゲージ長に対応します。
スペクトル化: この理論波形に対しても観測データと同様のスラントスタック法を適用し、理論的な分散スペクトルを生成します。

最適化
遺伝的アルゴリズム(GA): 観測スペクトルと理論スペクトルの差(二乗平均平方根誤差)を最小化するように、遺伝的アルゴリズムを用いて最適なS波速度(Vs)モデルを全域的に探索します。

3. 結果

数値シミュレーション: クロスライン配置(混合波)のデータからでも、インライン配置と同等の精度でVs構造を復元できることが確認されました。
低速度層(LVL)の検出: ラブ波に含まれる低周波成分が追加の制約を与えるため、レイリー波単独(インライン)の解析よりも地下深部や低速度層を正確に復元できることが示されました。
実データへの適用: ネバダ州の地熱地帯(PoroTomoプロジェクト)のアクティブ震源および環境ノイズ(NCF)データに適用した結果、異なるデータセットや観測配置の間で一貫性のある地下構造モデルが得られました。

4. 考察

観測設計の柔軟性: 本手法により、震源を必ずしもケーブルの直線上に配置する必要がなくなり、既存の通信用光ファイバー(ダークファイバー)を活用した調査が容易になります。
データ利用効率の向上: 従来は解析が困難だった混在信号を有効活用できるため、利用可能なデータ量が増大し、より高解像度な地下イメージの構築が可能になります。
パラメータ感度:密度の不確実性が解析結果に与える影響は5%未満と極めて限定的です。
P波速度(Vp) については、未固結堆積物では影響が小さいですが、固結した岩盤では誤差が最大20%に達する場合があるため、必要に応じてVp も同時にインバージョンに含めるべきです。
ロバスト性: スラントスタック法はインコヒーレントなノイズを抑制する効果があり、10〜20%程度のノイズが含まれるデータや、10〜15度程度の地形勾配がある場合でも、浅部構造については安定した結果が得られます。

分散曲線を抽出する必要がなく、また Love, Rayleighを気にしなくて良いので、叩く位置をファイバーから外せます。微動計の上を叩いているようなもので、すぐに飽和しちゃいますからね。
この程度ならすぐに組めそうです。

2026年3月28日土曜日

地上開度 その2

久しぶりに地上開度を求めることになりました。

以前の記録を見ると、15年ぶりです。その間、利用することはありましたが、自分の手で作ることはありませんでした。

ArcGIS pro v3.6 を確認しましたが、未だ作成機能は実装されていません。国外製品に実装されないということは、国内限定の指標なのでしょう。

今回は python でArc 用のツールボックスを作って計算してみました。
で、上記 QGIS v3.40  (アドイン:Processing Saga NextGen Provider) との結果の比較段階で、相違に気づきました。

SAGA の Morphometric Protection Index は仰角(水平からの上向きの角度 [radian])です。地上開度(鉛直からの角度)に変換すると、水平:MPI 0度→開度90度となります。水平から下向きの見下ろし角は無視されているため、痩せ尾根や山頂などでも最大90度、平野や滑走路のような広い水平場所でも90度となります。
一方で、地上開度の論文では水平から下向きまで考慮されており、90度以上の値をとります。

NoData 周辺の取り扱いも注意が必要です。特に池や湖。今回は1探索方向の全セルが NoData の場合は90度に設定し、その後に8方向平均をとりました。その方向の探索をやめるとか、8方向平均をとらずに NoData 扱いにするとか、いくつかの考え方があると思います。どのような処理をされたデータなのか、確認が必要です。

15年前はこれらの点に気づいていませんでした。もらった開度データに関しても、どの範囲をとっていたかまで見ていませんでした。今回のように論文を見て実装するなど、手を動かさないとダメでした。
基本、開度を自動で計算できるツールは存在していませんので、頂くデータに関しては、作成手法とデータの範囲に留意しましょう。

*********************************************
20260329 追記
地上開度を計算するArcGIS  pro 用の Python toolbox (.pyt) を GitHub の Public リポジトリに置きました。

2026年3月23日月曜日

文献:Real-time lithology identification while drilling based on drilling parameters analysis with machine learning

Real-time lithology identification while drilling based on drilling parameters analysis with machine learning | Geomechanics and Geophysics for Geo-Energy and Geo-Resources | Springer Nature Link

AI要約

1. 背景
石炭鉱山における災害(斜面崩落、ガス突出など)の防止やガス抽出の効率化には、正確な地層(岩相)情報が不可欠です。従来の技術では、技術者が掘り屑(カッティングス)の色や形状を目視で確認していましたが、精度が低く、個人の経験に依存するという課題がありました。近年、振動、音響、画像解析を用いたAI手法も研究されていますが、地下の過酷な環境やノイズの干渉により、実用化には至っていませんでした。特に、「ドリルストリングの摩擦抵抗」が掘削データに与える影響や、膨大なデータのリアルタイム処理が、機械学習を導入する上での大きな障壁となっていました。

2. 手法
研究チームは、以下のハードウェア、前処理技術、機械学習アルゴリズムを組み合わせたシステムを構築しました。

掘削機(スマート掘削リグ): MWD(Measurement While Drilling)システムを搭載した自走式スマート掘削リグを開発しました。姿勢制御、ロッド操作、遠隔制御の各サブシステムを備え、掘削データを自動的に記録します。また、地下のリグと地上のワークステーションを専用ネットワークで結ぶ遠隔データ処理プラットフォームにより、大規模なデータのリアルタイム解析を可能にしました。

前処理:
高速データ検索: 掘削ステータスを14のコード(掘削、ロッド接続など)に分類し、膨大なデータから有効な掘削情報を即座に抽出します。
摩擦検知と補正: ドリルストリングの座屈(バックリング)安定性解析を行い、座屈が起きない条件下でビットが岩石を破壊していない時の負荷を計測して、摩擦抵抗を自動検知します。
データクリーニング: 部品の起動・停止時に発生する「衝撃」などの無効な信号をフィルタリングして除外します。

機械学習手法: 複数のアルゴリズムを組み合わせる「ソフト投票型アンサンブル学習」を採用しました。個別の識別器として、SVM(Quadraticカーネル)、決定木(Medium Tree)、KNN(Fine KNN)、ニューラルネットワーク(Bilayered NN)の4つを統合し、それぞれの予測確率の重み付き平均から最終的な結果を出力します。

説明変数(入力パラメータ): 補正後の推力(Thrust)、トルク(Torque)、および貫入速度(ROP)、回転数(RPM)の4種類を使用します。

目的変数: 石炭 or 岩石(2値分類)

識別結果の継続性を分析(10セットごとのデータ群で判定)することで、さらに精度を高める手法を導入しています。

3. 結果
識別精度: アンサンブル学習モデルは、テストデータに対して98.79%という極めて高い岩相識別精度を達成しました。
掘削効率の向上: 識別された岩相に合わせて掘削パラメータ(回転数や推力)を最適化した結果、従来のシステムと比較して純掘削効率が18.12%向上しました。
省人化: 従来3人で行っていた作業を1人に削減できる可能性を示し、コスト削減と安全性の向上に寄与しました。

4. 考察
本研究の鍵は、ドリルストリングの摩擦をリアルタイムで検知し、掘削データを補正したことにあります。これにより、地層情報とパラメータの相関性が大幅に強化されました。また、地上と地下をシームレスに結ぶデータプラットフォームが実用性を支えています。
 一方で、課題も残されています。現在のモデルは単一のデータソースに基づいているため、地質条件が大きく異なる地域への適用には限界があります。今後は、掘り屑の画像や掘削振動など、複数の情報を統合した「マルチソース情報」による学習を行うことで、汎用性と精度のさらなる向上が期待されています。

TBM, ドリルジャンボなどと同様に、ノンコアボーリングでもトルクや速度をロギング可能であれば、このような使い方ができるのでしょう。地質を知りたい場合はボアホールカメラを後で挿入すれば良いだけです(実際、数m~10mピッチでノンコアボーリングを実施し、ボアホールカメラから柱状図を作成した経験があります)。ボーリングの数を必要とする場合には、有効な手段でしょう。

機械学習よりも掘削機の方が主要な成果です。既にデータさえあれば分析ができる環境が整っていますので、あとは良いデータを集めるだけですから。