JGD2011実装と同じくセミダイナミック補正パラメータ(SemiDyna2024.par)を可視化してみる。
1.可視化結果画像
A. 総水平変動量
色の意味:
- 暖色系(赤〜黄): 変動量が大きい(活発な地殻変動)
- 寒色系(青〜紫): 変動量が小さい(安定した地域)
典型的なパターン:
- 東北地方で最大(年間約1.4m相当の累積変動)
- プレート境界に近い地域ほど変動量が大きい

B. 緯度方向変動量(南北方向)
色の意味:
- 赤色: 北方向への変動(正の値)
- 青色: 南方向への変動(負の値)
典型的なパターン:
日本海側と太平洋側で異なる変動パターン
東北地方や北海道では北方向への変動が顕著

C. 経度方向変動量(東西方向)
色の意味:
- 赤色: 東方向への変動(正の値)
- 青色: 西方向への変動(負の値)
典型的なパターン:
- 太平洋プレートの沈み込みにより、東日本では東方向への変動が卓越
- 西日本ではフィリピン海プレートの影響で複雑なパターン

D. 変動ベクトル図
矢印の意味:
- 方向: 地殻変動の向き
- 長さ: 変動量の大きさ(スケールに注意)
- 色: 変動量の大きさ(黄色〜赤〜黒)
読み取れる情報:
- プレート運動の方向が視覚的に理解できる
- 東日本は概ね東方向、西日本は南東方向の変動パターン

E. 高さ方向変動量(鉛直方向)
色の意味:
- 赤色: 隆起(上方向への変動、正の値)
- 青色: 沈降(下方向への変動、負の値)
典型的なパターン:
- 火山地域や構造線付近で顕著な鉛直変動
- プレート境界付近で複雑な鉛直変動パターン

F. 変動量統計分布
4つのヒストグラム:
- 緯度方向変動の分布
- 経度方向変動の分布
- 高さ方向変動の分布
- 総水平変動の分布
統計情報:
- 平均値(赤の破線)
- 中央値(青の破線)
- 標準偏差
- 最小値・最大値

2.SemiDyna2024補正パラメータの可視化:プレート運動による地殻変動を見る
概要
JGD2024測地系では、プレート運動に伴う定常的な地殻変動を補正するため「セミ・ダイナミック補正」が導入されました。この補正パラメータ(SemiDyna2024.par)に含まれる21,134点の変動データを可視化することで、日本列島全体の地殻変動パターンを視覚的に理解することができます。
本記事では、Pythonスクリプト visualize_semidyna2024.py を使用して、セミ・ダイナミック補正パラメータを7つの異なる視点から可視化する方法を紹介します。
セミ・ダイナミック補正とは
背景
日本列島は複数のプレート(太平洋プレート、フィリピン海プレート、ユーラシアプレート、北米プレート)が複雑に接する地域に位置しており、プレート運動により年間数センチメートルの地殻変動が継続的に発生しています。
補正の必要性
- JGD2011基準: 2011年5月24日の座標値を基準
- 経年変化: 基準日から時間が経過するほど、実際の座標と基準座標にずれが蓄積
- JGD2024の解決策: 2024年2月1日を基準日として、プレート運動による定常的な変動を補正
補正パラメータの構造
SemiDyna2024.parファイルには、以下の情報が含まれています:
- メッシュコード: 日本全国を約1km四方のメッシュに分割(8桁メッシュコード)
- 緯度方向変動量(dB): 秒単位(北方向が正)
- 経度方向変動量(dL): 秒単位(東方向が正)
- 高さ方向変動量(dH): メートル単位(上方向が正)
- データ点数: 21,134点
可視化スクリプトの特徴
主な機能
visualize_semidyna2024.py スクリプトは、以下の7つの可視化を自動生成します:
- 緯度方向変動量ヒートマップ: 南北方向の変動パターン
- 経度方向変動量ヒートマップ: 東西方向の変動パターン
- 高さ方向変動量ヒートマップ: 鉛直方向の変動パターン
- 総水平変動量ヒートマップ: 水平面内の総合変動量
- 変動ベクトル図: 変動の方向と大きさを矢印で表示
- 変動量統計分布: 各変動成分のヒストグラム
- クラスター別詳細図: 地域ごとの変動特性
技術的特徴
# メッシュコードから座標を計算
def parse_mesh_code(mesh_code):
"""8桁メッシュコード(3次メッシュ、1kmメッシュ)の中心座標を返す"""
mesh_str = str(mesh_code).zfill(8)
# 1次メッシュ(約80km)
p = int(mesh_str[0:2])
u = int(mesh_str[2:4])
# 2次メッシュ(約10km)
q = int(mesh_str[4])
v = int(mesh_str[5])
# 3次メッシュ(約1km)
r = int(mesh_str[6])
w = int(mesh_str[7])
# 座標計算
lat_sw = p / 1.5
lon_sw = u + 100.0
lat_sw += q * (1.0 / 1.5) / 8.0
lon_sw += v / 8.0
lat_sw += r * (1.0 / 1.5) / 80.0
lon_sw += w / 80.0
# メッシュ中心座標
lat_center = lat_sw + (1.0 / 1.5) / 160.0
lon_center = lon_sw + 1.0 / 160.0
return lat_center, lon_center
秒からメートルへの変換
# 緯度・経度の秒単位からメートルへの変換
# 緯度1秒 ≈ 30.9m
# 経度1秒 ≈ 30.9m × cos(緯度)
dB_m = dB_arr * 30.9 # 緯度方向(北方向が正)
dL_m = dL_arr * 30.9 * np.cos(np.radians(latitudes_arr)) # 経度方向(東方向が正)
# 水平方向総変動量(ベクトルの大きさ)
horizontal = np.sqrt(dB_m**2 + dL_m**2)
使用方法
必要な環境
# Python 3.x
# 必要なライブラリ
pip install numpy matplotlib scipy scikit-learn
実行方法
cd /Volumes/BIWIN/10-git/GeoDive2Vsc/jgdPara/idokido
python visualize_semidyna2024.py
出力ファイル
スクリプトを実行すると、image_semidyna2024/ フォルダに以下の画像が生成されます:
緯度方向変動量.png– 南北方向の変動パターン経度方向変動量.png– 東西方向の変動パターン高さ方向変動量.png– 鉛直方向の変動パターン総水平変動量.png– 水平面内の総合変動量変動ベクトル.png– 変動の方向と大きさ変動量統計分布.png– 各変動成分のヒストグラムクラスター00.png~クラスターNN.png– 地域別詳細図
可視化結果の解釈
1. 緯度方向変動量(南北方向)
色の意味:
- 赤色: 北方向への変動(正の値)
- 青色: 南方向への変動(負の値)
典型的なパターン:
- 東北地方や北海道では北方向への変動が顕著
- 日本海側と太平洋側で異なる変動パターン
2. 経度方向変動量(東西方向)
色の意味:
- 赤色: 東方向への変動(正の値)
- 青色: 西方向への変動(負の値)
典型的なパターン:
- 太平洋プレートの沈み込みにより、東日本では東方向への変動が卓越
- 西日本ではフィリピン海プレートの影響で複雑なパターン
3. 高さ方向変動量(鉛直方向)
色の意味:
- 赤色: 隆起(上方向への変動、正の値)
- 青色: 沈降(下方向への変動、負の値)
典型的なパターン:
- 火山地域や構造線付近で顕著な鉛直変動
- プレート境界付近で複雑な鉛直変動パターン
4. 総水平変動量
色の意味:
- 暖色系(赤〜黄): 変動量が大きい(活発な地殻変動)
- 寒色系(青〜紫): 変動量が小さい(安定した地域)
典型的なパターン:
- 東北地方で最大(年間約1.4m相当の累積変動)
- プレート境界に近い地域ほど変動量が大きい
5. 変動ベクトル図
矢印の意味:
- 方向: 地殻変動の向き
- 長さ: 変動量の大きさ(スケールに注意)
- 色: 変動量の大きさ(黄色〜赤〜黒)
読み取れる情報:
- プレート運動の方向が視覚的に理解できる
- 東日本は概ね東方向、西日本は南東方向の変動パターン
6. 変動量統計分布
4つのヒストグラム:
- 緯度方向変動の分布
- 経度方向変動の分布
- 高さ方向変動の分布
- 総水平変動の分布
統計情報:
- 平均値(赤の破線)
- 中央値(青の破線)
- 標準偏差
- 最小値・最大値
7. クラスター別詳細図
クラスタリング手法: DBSCAN(密度ベース)
- パラメータ:
- 近傍半径: 0.3度(約33km)
- 最小サンプル数: 50点
用途:
- 変動パターンが類似した地域のグループ化
- 地域ごとの変動特性の詳細分析
- 補正パラメータの品質確認
観測される変動の実例
スクリプトを実行すると、以下のような統計情報が出力されます:
読み込んだデータ点数: 21134
緯度範囲: 24.05° ~ 45.52°
経度範囲: 122.93° ~ 153.98°
緯度方向変動範囲: -0.872m ~ 1.234m
経度方向変動範囲: -0.956m ~ 1.678m
高さ方向変動範囲: -0.234m ~ 0.567m
水平変動範囲: 0.012m ~ 2.123m
主要地域の変動傾向
| 地域 | 水平変動量 | 主要な変動方向 | 特徴 |
|---|---|---|---|
| 東北地方 | 大(1.0~1.5m) | 東~東南東 | 太平洋プレート沈み込み |
| 関東地方 | 中~大(0.8~1.2m) | 東~南東 | 複数プレートの影響 |
| 中部地方 | 中(0.5~0.8m) | 東~南東 | フォッサマグナの影響 |
| 近畿地方 | 小~中(0.3~0.6m) | 南東 | フィリピン海プレート |
| 中国地方 | 小(0.2~0.4m) | 南~南東 | ユーラシアプレート内部 |
| 九州地方 | 中(0.5~0.8m) | 南東~南 | フィリピン海プレート |
| 北海道 | 中~大(0.6~1.0m) | 東~北東 | 太平洋・北米プレート境界 |
| 沖縄地方 | 大(1.0~1.4m) | 北西~西 | フィリピン海プレート |
技術的詳細
カラーマップの選択
# 発散型カラーマップ(正負の値を表現)
CMAP_DIVERGING = 'RdBu_r' # 赤→白→青(緯度・経度・高さ方向変動)
# 連続型カラーマップ(大きさを表現)
CMAP_SEQUENTIAL = 'hot_r' # 白→黄→赤→黒(総水平変動量)
クラスタリングアルゴリズム
DBSCANを使用する理由:
- 密度ベース: 任意の形状のクラスターを検出可能
- ノイズ耐性: 外れ値を自動的に除外
- パラメータ調整: eps(近傍半径)とmin_samples(最小点数)で制御
# DBSCANパラメータ
CLUSTER_EPS = 0.3 # 0.3度(約33km)の範囲
CLUSTER_MIN_SAMPLES = 50 # 最小サンプル数
# クラスタリング実行
db = DBSCAN(eps=eps, min_samples=min_samples, metric='euclidean')
labels = db.fit_predict(coords)
可視化の工夫
1. 実データのみ表示(補間なし)
# 散布図を描画(実データのみ、補間なし)
scatter = ax.scatter(longitudes, latitudes, c=values,
cmap=cmap, vmin=vmin, vmax=vmax,
s=2, alpha=0.8, edgecolors='none')
理由: 補正パラメータが実際に存在する地点のみを正確に表示
2. 凸包(Convex Hull)による境界線
# 凸包(外接ポリゴン)を描画
if len(latitudes) >= 3:
points = np.column_stack((longitudes, latitudes))
hull = ConvexHull(points)
for simplex in hull.simplices:
ax.plot(points[simplex, 0], points[simplex, 1], 'k-', linewidth=2, alpha=0.5)
効果: データが存在する範囲を視覚的に明示
3. ベクトルのスケーリング
# ベクトルを見やすく拡大(200倍)
scale_factor = 0.01 / np.max(magnitude) * 200.0
for i in range(len(lat_sub)):
ax.arrow(lon_sub[i], lat_sub[i],
dL_sub[i] * scale_factor, dB_sub[i] * scale_factor,
head_width=0.02, head_length=0.02, fc=color, ec=color, alpha=0.7)
理由: 実際の変動は非常に小さいため、視覚化には拡大が必要
応用例
1. 測量計画への活用
補正量が大きい地域を事前に把握することで:
- 測量精度の見積もり
- 基準点の配置計画
- 測量時期の選定
2. GNSSデータの補正検証
- 実測値と補正パラメータの比較
- 補正モデルの精度評価
- 異常値の検出
3. 地殻変動研究
- 長期的な変動トレンドの把握
- プレート運動モデルの検証
- 地震前後の変動比較
4. インフラ管理
- 長大構造物(橋梁、トンネル)の変位予測
- 測地座標の経年変化管理
- 維持管理計画の策定
可視化結果の活用
GeoDiveアプリでの実装
本可視化スクリプトの成果は、GeoDiveアプリの以下の機能に反映されています:
// SemiDynaCorrection.cs - セミ・ダイナミック補正の実装
public static (double lat, double lon, double height) JGD2011ToJGD2024WithCorrection(
double jgd2011Lat, double jgd2011Lon, double height)
{
// メッシュコードから補正値取得
var meshCode = MeshCodeUtility.GetMeshCode(jgd2011Lat, jgd2011Lon, 3);
if (!meshCorrectionData.TryGetValue(meshCode, out var correction))
{
// 補正パラメータが見つからない場合
return (jgd2011Lat, jgd2011Lon, height);
}
// バイリニア補間による高精度補正
var (dB, dL, dH) = GetInterpolatedCorrection(jgd2011Lat, jgd2011Lon);
// 補正適用
double jgd2024Lat = jgd2011Lat + dB / 3600.0;
double jgd2024Lon = jgd2011Lon + dL / 3600.0;
double jgd2024Height = height + dH;
return (jgd2024Lat, jgd2024Lon, jgd2024Height);
}
まとめ
可視化の意義
- 理解の促進: 数値データだけでは分かりにくいプレート運動の影響を視覚化
- 品質確認: 補正パラメータの分布や連続性を確認
- 応用研究: 地殻変動パターンの地域特性を把握
- 教育効果: 測地学や地球科学の教育資料として活用
技術的成果
- 高精度可視化: 21,134点の補正パラメータを7つの視点から可視化
- 統計分析: 地域ごとの変動特性を定量的に評価
- 自動化: Pythonスクリプトによる完全自動生成
参考情報
データソース
- SemiDyna2024.par: 国土地理院提供のセミ・ダイナミック補正パラメータ
- データ点数: 21,134点
- メッシュサイズ: 約1km(3次メッシュ)
- 基準日: 2024年2月1日
参考リンク
スクリプト実行例
$ python visualize_semidyna2024.py
================================================================================
SemiDyna2024補正パラメータ可視化スクリプト
================================================================================
出力フォルダ: image_semidyna2024
データ読み込み中: par/SemiDyna2024.par
読み込んだデータ点数: 21134
緯度範囲: 24.05° ~ 45.52°
経度範囲: 122.93° ~ 153.98°
緯度方向変動範囲: -0.872m ~ 1.234m
経度方向変動範囲: -0.956m ~ 1.678m
高さ方向変動範囲: -0.234m ~ 0.567m
水平変動範囲: 0.012m ~ 2.123m
================================================================================
1. 緯度方向変動量ヒートマップを作成中...
保存しました: image_semidyna2024/緯度方向変動量.png
================================================================================
2. 経度方向変動量ヒートマップを作成中...
保存しました: image_semidyna2024/経度方向変動量.png
================================================================================
3. 高さ方向変動量ヒートマップを作成中...
保存しました: image_semidyna2024/高さ方向変動量.png
================================================================================
4. 総水平変動量ヒートマップを作成中...
保存しました: image_semidyna2024/総水平変動量.png
================================================================================
5. 変動ベクトル図を作成中...
保存しました: image_semidyna2024/変動ベクトル.png
================================================================================
6. 変動量ヒストグラムを作成中...
保存しました: image_semidyna2024/変動量統計分布.png
================================================================================
7. クラスター解析を実行中...
検出されたクラスター数: 6
ノイズ点数: 234
各クラスターの詳細図を作成中...
保存しました: image_semidyna2024/クラスター00.png
保存しました: image_semidyna2024/クラスター01.png
保存しました: image_semidyna2024/クラスター02.png
保存しました: image_semidyna2024/クラスター03.png
保存しました: image_semidyna2024/クラスター04.png
保存しました: image_semidyna2024/クラスター05.png
================================================================================
✓ すべての可視化が完了しました!
✓ 出力フォルダ: image_semidyna2024
================================================================================
画像フォルダを開きました: image_semidyna2024
作成日: 2025年11月5日
バージョン: 1.0
著者: GeoDive開発チーム

コメントを残す