JGD2011とJGD2024の違い – GeoDiveExaのJGD2024対応(3)

, , ,

JGD2011実装と同じくセミダイナミック補正パラメータ(SemiDyna2024.par)を可視化してみる。

1.可視化結果画像

A. 総水平変動量

色の意味:

  • 暖色系(赤〜黄): 変動量が大きい(活発な地殻変動)
  • 寒色系(青〜紫): 変動量が小さい(安定した地域)

典型的なパターン:

  • 東北地方で最大(年間約1.4m相当の累積変動)
  • プレート境界に近い地域ほど変動量が大きい

B. 緯度方向変動量(南北方向)

色の意味:

  • 赤色: 北方向への変動(正の値)
  • 青色: 南方向への変動(負の値)

典型的なパターン:

日本海側と太平洋側で異なる変動パターン
東北地方や北海道では北方向への変動が顕著

C. 経度方向変動量(東西方向)

色の意味:

  • 赤色: 東方向への変動(正の値)
  • 青色: 西方向への変動(負の値)

典型的なパターン:

  • 太平洋プレートの沈み込みにより、東日本では東方向への変動が卓越
  • 西日本ではフィリピン海プレートの影響で複雑なパターン

D. 変動ベクトル図

矢印の意味:

  • 方向: 地殻変動の向き
  • 長さ: 変動量の大きさ(スケールに注意)
  • : 変動量の大きさ(黄色〜赤〜黒)

読み取れる情報:

  • プレート運動の方向が視覚的に理解できる
  • 東日本は概ね東方向、西日本は南東方向の変動パターン

E. 高さ方向変動量(鉛直方向)

色の意味:

  • 赤色: 隆起(上方向への変動、正の値)
  • 青色: 沈降(下方向への変動、負の値)

典型的なパターン:

  • 火山地域や構造線付近で顕著な鉛直変動
  • プレート境界付近で複雑な鉛直変動パターン

F. 変動量統計分布

4つのヒストグラム:

  1. 緯度方向変動の分布
  2. 経度方向変動の分布
  3. 高さ方向変動の分布
  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つの可視化を自動生成します:

  1. 緯度方向変動量ヒートマップ: 南北方向の変動パターン
  2. 経度方向変動量ヒートマップ: 東西方向の変動パターン
  3. 高さ方向変動量ヒートマップ: 鉛直方向の変動パターン
  4. 総水平変動量ヒートマップ: 水平面内の総合変動量
  5. 変動ベクトル図: 変動の方向と大きさを矢印で表示
  6. 変動量統計分布: 各変動成分のヒストグラム
  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つのヒストグラム:

  1. 緯度方向変動の分布
  2. 経度方向変動の分布
  3. 高さ方向変動の分布
  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);
}

まとめ

可視化の意義

  1. 理解の促進: 数値データだけでは分かりにくいプレート運動の影響を視覚化
  2. 品質確認: 補正パラメータの分布や連続性を確認
  3. 応用研究: 地殻変動パターンの地域特性を把握
  4. 教育効果: 測地学や地球科学の教育資料として活用

技術的成果

  • 高精度可視化: 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開発チーム

関連投稿


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

PAGE TOP