指定緯度における1kmあたりの経度の角度などを計算するAppleScriptです。Rubyのコードで書かれたものがあったので、AppleScriptに翻訳してみました。
三角関数を用いるため、関数計算ライブラリ「calcLibAS」を併用しています。
なんでこんな計算をすることになったかといえば、Apple Mapsの仕様で、地図表示エリアの指定時に表示距離ではなく表示角度(spn)が要求されるようなので、計算方法を求めておいたという次第です。
AppleScript名:1kmあたりの経度の大きさを求める.scptd |
— – Created by: Takaaki Naganoya – Created on: 2019/12/15 — – Copyright © 2019 Piyomaru Software, All Rights Reserved — use AppleScript version "2.4" — Yosemite (10.10) or later use framework "Foundation" use scripting additions use calcLib : script "calcLibAS" –参照:1kmあたりの経度の大きさ –https://github.com/ryym/google-maps-demo/blob/master/note.md set aLat to 31.5719562 –鹿児島の緯度 set aDeg to calc1kmDegreeinLatitude(aLat) of me –経度方向(横)に1kmに相当する角度 –> 0.010543813284 set bDeg to calc100mDegreeinLatitude(aLat) of me –経度方向(横)に100mに相当する角度 –> 0.001054381328 set aLat to 35.73993521 –練馬の緯度 set aDeg to calc1kmDegreeinLatitude(aLat) of me –経度方向(横)に1kmに相当する角度 –> 0.011067403977 set bDeg to calc100mDegreeinLatitude(aLat) of me –経度方向(横)に100mに相当する角度 –> 0.001106740398 –1kmあたりの緯度の大きさ set eRes to calc1kmDegreeinLong() of me –緯度方向(縦)に1kmに相当する角度 –> 0.008983152841 set eRes to calc100mDegreeinLong() of me –緯度方向(縦)に100mに相当する角度 –> 8.98315284119522E-4 –指定緯度における1km相当の経度の角度 on calc1kmDegreeinLatitude(aLat) set eRadius to 6378.137 –in km set r to eRadius * (cos (aLat * pi / 180)) set cm to 2 * pi * r set kd to 360 / cm return kd end calc1kmDegreeinLatitude –指定緯度における1km相当の経度の角度 on calc100mDegreeinLatitude(aLat) set eRadius to 6378.137 –in km set r to eRadius * (cos (aLat * pi / 180)) set cm to 2 * pi * r set kd to 360 / cm return kd / 10 end calc100mDegreeinLatitude –1km相当の緯度の角度 on calc1kmDegreeinLong() set eRadius to 6378.137 –in km set pc to 2 * pi * eRadius set dLat to 360 / pc return dLat end calc1kmDegreeinLong –100m相当の緯度の角度 on calc100mDegreeinLong() return calc1kmDegreeinLong() / 10 end calc100mDegreeinLong |