ある経緯度からXKm地点の経緯度を求める
そんなことが必要な今日この頃です。
こちらを参考にコーディングしました。
基点となる地点:lat,lon
距離:dis
確度(真北が0):tc
単位はすべてラジアン
double la=Math.asin(Math.sin(lat)*Math.cos(dis)+Math.cos(lat)*Math.sin(dis)*Math.cos(tc));
double lo=lon;
if (Math.cos(lat)!=0){
lo=(lon-Math.asin(Math.sin(tc)*Math.sin(dis)/Math.cos(lat))+Math.PI) % (2*Math.PI) -Math.PI;
}
というところです。
距離のラジアンて?
地球の平均半径は6371kmということなので、10kmだと10÷6371ということになります。
確度のラジアンて?
真北が0°、真南が180°になりますが、真南なら180×π÷180になります。
ということで、ためしに
東京駅(北緯35度40分53秒、東経139度46分03秒)から6キロ真北は、北緯35度44分07秒、東経139度46分03秒
こちらで調べてみると5.979と21m誤差が。
これは地球は実際は楕円球なので「地球の平均半径は6371km」だと誤差が生じるわけです。
でも、一応式はあってそうなので、今日はここまで。
