GIS備忘録 緯度経度⇔ピクセル座標(タイル座標の内部座標)の変換式 2023年1月

緯度経度の位置情報と国土地理院の標高タイルを利用して、任意の地点の標高を求めようとすると、緯度経度をピクセル座標に変換する必要に迫られました。

要は、ある緯度経度が、標高タイル(256×256のメッシュ)内のどのメッシュに該当するかを求める必要がございます。

最初は単純に当該タイルの北西端と南東端の緯度経度から、タイルの東西・南北の長さ(あるいは角度)を求めて、それを256で割ってやれば、1メッシュの大きさ(長さor角度の単位)が分かるので、当該タイル内の緯度経度が分かっていれば、

(当該タイルの北西端の北緯)+(当該タイルの北西端の北緯-任意の緯度)÷(1メッシュの緯度の角度増分)=(当該タイルの南北方向メッシュ番号)

(当該タイルの北西端の東経)+(当該タイルの北西端の東経-任意の経度)÷(1メッシュの経度の角度増分)=(当該タイルの東西方向メッシュ番号)

などのような式で単純に計算できるのかなぁと思っていました。

ただ、そのうち大きめのZoom(すなわち解像度が高い?)で複数(かなり大きな個数の)標高タイルを扱いたくなって色々とやっていると、前述の式ではめちゃめちゃ誤差が出ることが判明しました。

東西方向はあまり誤差がないのですが、南北方向ですごく大きな誤差が発生します。

で、ネット内を探しましたが、これがなかなか式が出てこない。

苦節数日、時間を見つけては検索を続けていたところ、ようやく超難しい換算式を発見しました。なんと、双曲線関数付きの難解な換算式でした。

URLはこちらです。

https://www.trail-note.net/tech/coordinate/

Zoomやタイル座標の説明からはじまり、ピクセル座標、そして、緯度経度の換算式を掲載いただいております。

GISを初心者は必見だと思いました。

(参考)PythonのGeoPandasを活用して、国土地理院の標高タイル(Zoom=12)を合成して、北海道全域の等高線図を書いてみました。





コメント