なんとなく

誰得感満載な記事が多いかも。Mono関係とLinuxのサーバ関係、レビューとか。

ジオイドファイルの更新対応

はじめに

行政に出したりする資料を作成するわけではないけど、2025/04/01からジオイド・モデルの変更が行われたのでそれに対応したという話。

www.gsi.go.jp

ダウンロードサービスのアカウントがクリアされた模様

国土地理院基盤地図情報ダウンロードサービスのアカウントがクリアされてて今までのが使用できなくなっているのに気づかず、ログインできなくて焦ったけど、よくよく見てみたら、

4月1日以降に本サービスを利用する場合は、以前のID・パスワードは御利用頂けません。
画面右上の【ログイン】をクリックし【新規登録】にある同意事項を御確認頂き、新しいID・パスワードを入手の上、御利用願います。

基盤地図情報ダウンロードサービス

とのことだった。赤字にするところおかしいような気もするし、ログイン画面に書いておいてくれてもいいことだとは思う。

アカウントを新規作成してジオイド・モデルのダウンロード

今までのアカウントが使えなくなってしまったので、アカウントの新規作成して、ジオイド・モデルをダウンロードする。

JPGEO2024_isg.zipをダウンロードし、展開し、JPGEO2024.isg取り出す。

ファイルの変換には新し目のバイナリが必要

takeshich.hatenablog.com

に書いたようにAndroidのSW Mapsで使用するのでISGをGTXにgdal_translateで変換するのだが、今回も同様にQGIS付属のGDALで変換しようとしたら

ERROR 6: ISG: coord units = dms not supported

と怒られてしまった。

調べたところ

ISG driver:

Parse dms in ISG format

gdal/NEWS.md at master · OSGeo/gdal · GitHub

と書いてあり、GDAL 3.10.0以降でなければうまく変換できないようである。

当方のPCにあるもののバージョンは、

GDAL 3.8.2, released 2023/16/12

だったので対応しておらず、エラーが出た模様。

そこで、dockerを使って適当に対応してみた。

ファイルの変換

dockerイメージは存在してるようなので、以下コマンドで試してみた。

docker pull ghcr.io/osgeo/gdal:ubuntu-full-latest
docker run --rm ghcr.io/osgeo/gdal:ubuntu-full-latest gdal_translate --version

GDAL 3.11.0dev-b51894d2b5c27a9f9a3b4494937ed5c2c26c384d "Trans rights are human rights", released 2025/02/19

最新を指定したので当然、3.10.0以降

変換のためにファイルを扱うのでホスト側でディレクトリを作成し、コンテナの/mntにそのディレクトリ(/home/takeshich/gdal)をマウントさせて実行する。

/home/takeshich/gdalに対象のJPGEO2024.isgを置いた

$ mkdir gdal
$ cd gdal
$ pwd
/home/takeshich/gdal

ISGからGTXに変換する。

docker run --rm -v /home/takeshich/gdal:/mnt ghcr.io/osgeo/gdal:ubuntu-full-latest gdal_translate -ot Float32 -if ISG -of GTX /mnt/JPGEO2024.isg /mnt/JPGEO2024.gtx

これで変換できた。

変換後の確認

とりあえず、変換できたものの正しいかよくわからないので、Geotiffに変換して地図ソフトでそれなりに表示されることを確認してみた

docker run --rm -v /home/takeshich/gdal:/mnt ghcr.io/osgeo/gdal:ubuntu-full-latest gdal_translate -co "PHOTOMETRIC=MINISBLACK" -if GTX -of "GTiff" /mnt/JPGEO2024.gtx /mnt/JPGEO2024.tif

日本海溝が見えたので大丈夫そう。

数値的なところでも確認しておきたい。

docker run --rm -v /home/takeshich/gdal:/mnt ghcr.io/osgeo/gdal:ubuntu-full-latest gdallocationinfo -wgs84 /mnt/JPGEO2024.tif 140.087855056 36.103774806
Report:
  Location: (804P,834L)
  Band 1:
    Value: 40.2304992675781

vldb.gsi.go.jp

で位置情報でのジオイド高が確認できるので試してみる。

使用したパラメータ  「ジオイド2024 日本とその周辺」
「基準面補正パラメータ」
緯度・経度 緯度  36°06′13.5893″
経度  140°05′16.2782″

出力値
ジオイド高 40.2826 m
基準面補正量  0.0000 m
ジオイド高+基準面補正量  40.2826 m

あれ???5cmちがう。

いろいろ試して、サンプルアルゴリズムを変えるとそれっぽい値になった。

docker run --rm -v /home/takeshich/gdal:/mnt ghcr.io/osgeo/gdal:ubuntu-full-latest gdallocationinfo -wgs84 -r bilinear /mnt/JPGEO2024.gtx 140.087855056 36.103774806
Report:
  Location: (804.01420224P,834.27351164L)
  Band 1:
    Value: 40.2825984188241

上記のサイトでどのような方法で位置の値を取得しているのか調べてはいないけど、ダウンロードしたzip内にPDFがあり、そこにBilinear補間との記述があった。オプションをBilinearにし、おおよそ同じような値が得られた。 そのため、変換したファイルは問題ないと判断した。

Androidで使用するのでファイルを移動し設定した。

終わりに

国土地理院から提供されているジオイドモデルを変換して更新したという話題でした。 ソフト側で対応してくれるのが楽でいいのだけど、開発者が日本の方でない場合や自分でいろいろ対応しなければならないものについては参考になったのかもしれない。 当方の場合、開発ボードなRTKGNSS使って遊んでいるので、自分でいろいろ対応しなければならず、それはそれで面倒な反面、楽しかったり勉強になったりすると思っている。