緯度経度の位置情報と国土地理院の標高タイルを利用して、任意の地点の標高を求めようとすると、緯度経度をピクセル座標に変換する必要に迫られました。
要は、ある緯度経度が、標高タイル(256×256のメッシュ)内のどのメッシュに該当するかを求める必要がございます。
最初は単純に当該タイルの北西端と南東端の緯度経度から、タイルの東西・南北の長さ(あるいは角度)を求めて、それを256で割ってやれば、1メッシュの大きさ(長さor角度の単位)が分かるので、当該タイル内の緯度経度が分かっていれば、
(当該タイルの北西端の北緯)+(当該タイルの北西端の北緯-任意の緯度)÷(1メッシュの緯度の角度増分)=(当該タイルの南北方向メッシュ番号)
(当該タイルの北西端の東経)+(当該タイルの北西端の東経-任意の経度)÷(1メッシュの経度の角度増分)=(当該タイルの東西方向メッシュ番号)
などのような式で単純に計算できるのかなぁと思っていました。
ただ、そのうち大きめのZoom(すなわち解像度が高い?)で複数(かなり大きな個数の)標高タイルを扱いたくなって色々とやっていると、前述の式ではめちゃめちゃ誤差が出ることが判明しました。
東西方向はあまり誤差がないのですが、南北方向ですごく大きな誤差が発生します。
で、ネット内を探しましたが、これがなかなか式が出てこない。
苦節数日、時間を見つけては検索を続けていたところ、ようやく超難しい換算式を発見しました。なんと、双曲線関数付きの難解な換算式でした。
URLはこちらです。
https://www.trail-note.net/tech/coordinate/
Zoomやタイル座標の説明からはじまり、ピクセル座標、そして、緯度経度の換算式を掲載いただいております。
GISを初心者は必見だと思いました。
(参考)PythonのGeoPandasを活用して、国土地理院の標高タイル(Zoom=12)を合成して、北海道全域の等高線図を書いてみました。
コメント
コメントを投稿