au携帯のGPSデータを変換するApplescript
奇特な方からのご好意でauのGPS機能付き携帯電話 A5406CA が入手できたので、GPSで遊んでみました。
携帯のGPS機能で測地したGPSデータで地図を開くことが出来て便利ですが、携帯で地図をいじっているとパケット代が気になります。
そこで、携帯からGPSデータをメールで送ってみたら、次のようなURLデータになります。
http://rcs-ez.mti.ne.jp/casio/ShowMap.asp?datum=0&unit=0&lat=+39.47.57.90&lon=+141.08.22.77&fm=0
このURLを表示させると、携帯電話用なので、小さな画面が出ますが、縮尺を変えられないので、良く分かりませんね。
そこで、このデータから緯度経度をそのまま mapfan に
http://www.mapfan.com/index.cgi?&ZM=12&MS=1&MAP=E141.8.22.77N39.47.57.90
のようにして表示させると、ずれて表示されます。
これはGPSのデータがこの携帯ではWGS84系なのに対して、mapfanがTOKYO系を使っていることに起因しています。
このWGS84系の緯度経度情報をTOKYO系に変換する方法をネットで調べると、厳密にするのは面倒だけど、1秒程度の誤差を容認できるなら簡便に変換できることがわかりました。
そこで、au携帯からメールで送られたURLデータから、緯度経度の部分を抜き出して、TOKYO系に変換してmapfan で表示させるAppleScriptを制作しました。(文末に転載)
クリップボードからデータを読み出すので、URLデータをコピーしてから実行してみてください。
ちなみに上記のデータを変換したmapfan用のURLは次のようになります。
http://www.mapfan.com/index.cgi?&ZM=12&MS=1&MAP=E141.8.35.41N39.47.47.78
これだと、ズームができるので、使えますね。
AppleScript のソース
set ans to the clipboard as text try set wk to characters (offset of "+" in ans) thru (the length of ans) of ans as string set nData to characters 2 thru ((offset of "&" in wk) - 1) of wk as string on error display dialog "Bad data in Clipboard" return end try try set wk2 to characters (offset of "&" in wk) thru (the length of wk) of wk as string set wk to characters (offset of "+" in wk2) thru (the length of wk2) of wk2 as string set eData to characters 2 thru ((offset of "&" in wk) - 1) of wk as string on error display dialog "Bad data in Clipboard" return end try set nData_deg to deg_conv(nData) set eData_deg to deg_conv(eData) set nDeg to nData_deg + 1.0696E-4 * nData_deg - 1.7467E-5 * eData_deg - 0.004602 set eDeg to eData_deg + 4.6047E-5 * nData_deg + 8.3049E-5 * eData_deg - 0.010041 set nData to ch_conv(nDeg) set eData to ch_conv(eDeg) set cmd to "http://www.mapfan.com/index.cgi?&ZM=12&MS=1&MAP=E" & eData & "N" & nData open location cmd on deg_conv(inData) set wk to inData as string set dlm to AppleScript's text item delimiters set AppleScript's text item delimiters to "." set d1 to text item 1 of wk set d2 to text item 2 of wk set d3 to text item 3 of wk set D4 to text item 4 of wk set AppleScript's text item delimiters to dlm set ans to d1 + d2 / 60 + (d3 + D4 / 100) / 3600 return ans end deg_conv on ch_conv(inData) set wk to inData set d1 to wk div 1 set wk to (wk mod 1) * 60 set d2 to wk div 1 set wk to (wk mod 1) * 60 set d3 to ((wk * 100) div 1) / 100 set ans to (d1 as text) & "." & (d2 as text) & "." & d3 as text return ans end ch_conv