『dms => degree変換』 『WGS84 <=>tokyo 変換』をperlで行う。
perlで携帯サイトを作るときに、GPS機能を使う場合もあるでしょう。
PGS情報はAPIとも連動させやすいですし、マッシュアップサイトを作るのも扱いやすい情報ですよね。
しかし、GPSは結構形式を覚えるまでが面倒です。
経度緯度の表記方法
- dms表記
- degree表記
- WGS84
- tokyo
このように、表記表にも測位系にも異なる形式が混在し、APIなどを使用する場合も適した形式に変換する必要があるのです。
便利な perl モジュール Geo::Coordinates::Converter
CPANには便利なモジュールがあるもので、欲しい機能はたいていすでに誰かが作っています。
このモジュールを使えば
dms <=> degree
も
WGS84 <=> tokyo
も思いのまま
でも、何らかの理由で使えない人のために・・・。
果たして需要があるのか・・・。
実は自分の場合は、レンタルサーバでコーディングしていたため、Geo::Coordinates::Converterをinstallすることができなかったため、使ったのですが。
もし同じような人がいれば、どうぞ
sub dms_to_degree{ my ($dms) = @_; my ($degree, $min, $sec) = ($dms =~ /^\s*[+|-]{0,1}(\d+)\.(\d+)\.(\d+\.\d+)$/); my $dms2degree = $degree + $min/60 + $sec/3600; return sprintf "%.6f", $dms2degree; } sub wgs84_to_tokyo{ my ($lat, $lon) = @_; return ($lat + 0.00010696*$lat - 0.000017467*$lat - 0.0046020, $lon + 0.000046047*$lon + 0.000083049*$lon - 0.010041); } sub tokyo_to_wgs84{ my ($lat, $lon) = @_; return ($lat - 0.00010695*$lat + 0.000017464*$lat + 0.0046017, $lon - 0.000046038*$lon - 0.000083043*$lon + 0.010040); }
degree_to_dms もあったはずだが、どっか消したっぽい。
いつか見つけたら、また公開します。