師匠の散歩

きままにPerlでも

度分秒をdegに変換

度分秒をdegに変換/ subDms2Deg.cgi

度分秒から度の値を求める

「X度Y分Z秒.少数」のように機知の区切り文字のある文字列を、Splitを使って数字を取り出す方法はよくWebで見つかるが、国土地理院でよく用いているXXYYZZ.ZZZ形式のデータを度に変換するものを作成したので紹介する。

作成条件、作成に使った手段

  1. 「度分秒コンマ小数点」で表される緯度・経度のみを対象とし、他の文字列は対応しない
  2. 3度1分2秒の場合、30102と記述する
  3. コンマより右は秒の小数点の値とする

入力

度分秒を入れてください。37度12分34.567秒の場合は、「371234.567」です。 入力データから「空白、度、分、秒、:、:、-」を削除して計算します。

サブルーチン

sub dms2deg {
 my $dms = shift;
  $dms =~ s/ //g;
  $dms =~ s/度//g;
  $dms =~ s/分//g;
  $dms =~ s/秒//g;
  $dms =~ s/://g;
  $dms =~ s/://g;
  $dms =~ s/-//g;
  $dms =~ s////g;
 my ($deg,$min,$sec,$deg2);
 $deg = int($dms/10000);
 $min = int($dms/100)-int($dms/10000)*100;;
 $sec = $dms - $deg*10000 - $min *100 ;
 $deg2 = (($sec/60+$min)/60+$deg);
# return ($deg,$min,$sec,$deg2); # テストでは複数の値を戻した
  return $deg2;                  # 通常は、解は1つだけ返せばよい
}

subDms2Deg.cgi // Topに戻る // indexに戻る
Copyright(C) 2009-2021 Grandmaster Last up : 2020/09/18