skymatix Developers Blog

株式会社スカイマティクスの開発チームによるDevelopers Blogです。

楕円体高から標高への変換

Lead Researcherの藤田です。

クラウド型ドローン測量・現地管理DXツール「くみき」ではドローンなどによる空撮画像を3次元復元し、点群・DSM・オルソ画像などを作成しています。生成された点群・DSMの3次元情報は、元画像のGPS/GNSS情報をもとにしているため、高さの値については楕円体高になります。しかし、測量など実際の業務では、高さを標高で扱うことが多く、これらの生成物も標高に変換しておいた方が何かと便利です。「くみき」では生成された点群・DSMの高さを内部で標高に変換し、データを保持しています。

標高と楕円体高の関係は

標高 = 楕円体高 - ジオイド高

ですね(標高、楕円体高、ジオイド高に関する詳しい説明はこちら)。

Pythonではpyprojを使って簡単に変換することができます。 日本国内の緯度経度・楕円体高の座標から同地点の標高を求めるためのPythonコードです(日本国外の緯度経度を入力しても指定した楕円体高の値がそのまま返ってきます)。

import pyproj
pyproj.network.set_network_enabled(True) 

lon = 135.  # 経度
lat = 35.  # 緯度
ellipsoid = 78.  # 楕円体高

# EPSG:4326からEPSG:6697へは直接変換できない!、楕円体高の値がそのまま返ってくる
tr = pyproj.Transformer.from_crs(4326, 6697, always_xy=True)
p = tr.transform(lon, lat, ellipsoid)
print(p)
# (135.0, 35.0, 78.0)
# EPSG:6667からEPSG:6697には変換できる
tr = pyproj.Transformer.from_crs(6667, 6697, always_xy=True)
p = tr.transform(lon, lat, ellipsoid)
print(p)
# (135.0, 35.0, 40.94430133324753)

EPSG:4326はWorld Geodetic System 1984(WGS84)で緯度経度、楕円体高

EPSG:6667は日本測地系2011(JGD2011)で緯度経度、楕円体高

EPSG:6697は日本測地系2011(JGD2011)で緯度経度、標高

終わりに

株式会社スカイマティクスでは「くみき」の三次元復元エンジンを世界一にしたく、研究開発に取り組んでいます。今後も三次元復元に関する技術的記事を書いて行こうと思います。

www.slideshare.net