ジオイド高や標高のAPIを公開しました

Posted by keita-kobayashi on April 14, 2023 · 1 min read

久しぶりに投稿させていただいております。Geoloniaの開発者、小林と申します。最近は、空間ID絡みで「ジオイド高」や「標高」「楕円体高」などの議論が色々あるなか、気になったので調べました。

簡単に説明すると、地球は球ではない。楕円体でもない。地下の微妙な重力の違いによって、平均海水面が変わっている。

ただ、こんな複雑な物体を計算するときに簡単な数式に落とし込むのが困難。できたとしても、点と点の間の距離の計算や、ポリゴンの面積の計算など、全ての計算もかなり複雑になる。そのため、基本的な位置情報計算は「準拠楕円体」という仮想な物が地球と仮定し、この楕円体上に空間情報処理を行う。

さて、ジオイド。ジオイド高とういうのは、準拠楕円体面からの距離をメートルで表現しています。何を指しているかというと、平均海水面となります。つまり、地面がなければ、準拠楕円体+ジオイド高の位置に、海の面がある。

標高は、このジオイド面から地面の距離。

「ジオイド」「標高」「楕円体」、お分かりでしょうか。

システムによって、「高さ」の計算が違ったりします。例えば、

  • GPS レシーバーは準拠楕円体高を計算します。地球は平面ではないので、緯度軽度を計算するためには高さも計算しないといけない。英語ですが、とても素晴らしいインタラクティブな GPS の説明サイトがあります。興味があればぜひご覧ください。
  • iOS の API では、 altitude という関数で標高(ジオイド面からの高さ)が返します。別に、 ellipsoidalAltitude で準拠楕円体から高さも取得できます。
  • Android の API では、 getAltitude() の関数を使って、準拠楕円体からの高さしか取得できません。標高に変換するには、別途ジオイドを用意して計算しないといけない。
  • Garmin の山登りやスポーツ用 GPS 機器は種類によって違うみたいですが、明確なリソースが見つかりませんでした。もしあれば教えていただけるとここに追加します。私が持っているトレッキング用GPSには何かしらのジオイドモデルが入っているっぽいけど、どのモデルなのかは不明です。。

それぞれのシステム(特に iOS と Android の違い)を共通言語を喋らせるためには、高さ軸を同じものに変換させないといけない。このために、Geolonia でジオイドのAPIを作りました。

詳しいドキュメンテーションはこちら

ある緯度軽度のジオイドを参照したい場合は、こちらのAPIを使います

https://api-vt.geolonia.com/api/altitude?lat=35.68116277256452&lng=139.76716335256805

こちらは東京駅の座標となりますが、結果は下記の通りとなります。

{
  "lng":139.76716335256805,
  "lat":35.68116277256452,
  "geoid":"36.662",
  "altitude":"3.21"
}

つまり、東京駅の標高(ジオイド面からの地面の距離)は 3.21m で、ジオイド高(準拠楕円体面からジオイド面の距離)は 36.662m となります。

今度、異なるデバイスで位置情報を調べてみて、それぞれの「高さ」の概念を実験してみてください!



Geolonia Maps を無料で試してみる

Geolonia では、ウェブ地図や位置情報を利用したウェブアプリケーションや、モバイルアプリケーションの開発を承っています。

お問い合わせ