2016年5月26日木曜日

LatLonとMGRSとかの変換

LatLonとMGRSとかの変換は以下のページが使いやすいと思います
Lat/Lon and UTM Converstion - Yellowstone Research Coordination Network
大学のWebページだと思いますが、LatLon(deg), LatLon(Deg, Min, Sec), Standard UTM, NATO UTMの相互変換に対応しています。
Standard UTMとは通常のUTMで、2桁の数字+1桁のアルファベット+任意桁(偶数)の数字で構成されています。
一方、NATO UTM(以下基本的にMGRS)というのはいわゆるMGRSのことで、2桁の数字+1桁のアルファベット+2桁のアルファベット+任意桁(偶数)の数字で構成されています。
NATO UTMは国土地理院が呼称するUTMと同じもので、このブログエントリ中で述べられるNATO UTM, MGRS, UTMは同じものを対称にしています(エントリ中では本来のUTMはStandard UTM(またはSUTM)と表記しています)。
ちなみにこのMGRSは米軍や自衛隊で使用されており、その精度と扱いやすさから利用が広まっています。例えば国土地理院も防災対策等で使用する地図にUTMグリッド入りを推奨しています(その割には一般レベルには広まってない気がしますが)。

さて、上記のページ(モンタナ州立大学のページ)ですが、LatLon→MGRSに変換できるページは他にも有るにかかわらず、このページを紹介した理由について。さすが大学というか、HTMLのソースがかなり見やすいです。座標の変換もJavaScriptで書いてあり、移植しやすいです。MGRSの変換方法はイマイチわかりづらいですが、このソースを移植すればそれなりに使えるものになるはずです。
最も、MGRSの地図を見てみるとイギリスとかノルウェーの当たりが結構不規則になっています。海岸線を防御する上でグリッド間の移動が発生すると砲撃の計算が面倒とかいろいろ理由があってのことだと思いますが、単純な計算では位置を計算出来ないようになっています。
国土地理院のWeb地図でもUTMの表示は可能ですが、UTMの表示範囲は51Q-56Uの範囲で、おおよそ日本の国土がすべて収まる四角形です。ただし国土地理院で資料として表示している地図はノルウェーの当たりも綺麗なグリッドになっているので、不規則なグリッドは国(もしくはNATO等)の独自な規則なのかもしれません。

JavaScriptから計算を移植する際の注意点ですが、C#等では整数と実数の扱いに特に注意する必要があります。例えば運動エネルギーの計算は(1/2)mv^2のような感じですが、これを額面通りにソースコードとすると1/2が整数で演算されて1/2=0となりますから、それに何を掛けようと0になり、質量や速度が大きくてもエネルギーは0と計算されます。このように整数と実数が分けられて計算される環境では、(1/2.0)mv^2のように、除算のどちらかを明示的に実数(浮動小数点数)として認識させる必要があります。
JavaScriptでは1/2でも0.5となり、明示的に実数だと指定する必要がありません。上記のページのソースでも1/4のような計算が有り、そのままコピペすると(整数と実数が分けられる環境では)整数での除算が発生します。

0 件のコメント:

コメントを投稿