【perlメモ】測地系変換モジュール『Location::GeoTool』のサンプル

測地系には大まかに日本で使われている日本測地系 北緯dd°mm.ss 東経dd°mm.ss(ddd.mm.ss.nnn)という形式と世界測地系(ddd.dddddd…)という形式です。

Googleマップは世界測地系、マピオンやYahoo!は日本測地系だったりするのでお互いのデータを相互に利用する場合には変換が必要になります。

perlのCpanモジュール『Location::GeoTool』を利用して実際に変換してみました。Location::GeoToolのサンプルコードをそのまま流用しています。

元の座標は例の尖閣諸島の衝突位置を日本測地系から、世界測地系に変換してみました。

データの出力フォーマットが色々変えられるので色々表示しています。マピオンのURL用の出力フォーマットなどもあって工夫次第で色々便利に使えそうです。

Location::GeoTool – search.cpan.org

use Location::GeoTool;
  # New constructor (Options can be set)
  my $oGeo = Location::GeoTool->new({changeMyself => 0,enableWantarray => 0});
#  $oGeo->set_coord(‘35.39.24.491′,’139.40.10.478′,’tokyo’,’gpsone’);

  $oGeo->set_coord(‘26.01.07′,’123.37.1′,’tokyo’,’gpsone’);
# $oGeo->set_coord(‘26.0186111111111′,’123.616944444444′,’wgs84′,’degree’);

  # Old constructor
#  my $oGeo = Location::GeoTool->create_coord(‘35.39.24.491′,’139.40.10.478′,’tokyo’,’gpsone’);

  my @mapion = $oGeo->format_mapion->array;
   # => ("35/39/24.491","139/40/10.478")
    foreach my $g (@mapion){
        print "format_mapion:$g\n";
    }
    print "mapion lat:".$oGeo->format_mapion->lat,"\n";
    print "mapion long:".$oGeo->format_mapion->long,"\n";

  my $oGeoW = $oGeo->datum_wgs84;
    foreach my $g (@oGeoW){
        print "datum_wgs84:$g\n";
    }
    print "degree lat:".$oGeo->format_degree->lat,"\n";
    print "degree long:".$oGeo->format_degree->long,"\n";

  my @wgs84 = ($oGeoW->lat,$oGeoW->long);
   # => ("35.39.36.145","139.39.58.871")
    foreach my $g (@wgs84){
        print "wgs84:$g\n";
    }

  my @degree_wgs84 = $oGeoW->format_second;
   # => (128376.14524…,502798.87076…)
    foreach my $g (@degree_wgs84){
        print "degree_wgs84:\n";
        foreach my $x(keys %{$g}){
            print "$x = ${$g}{$x}\n";
        }
    }

実行結果

F:\kumacchi\MyProgram\perl\sample\GeoTool>perl geotool01.pl
format_mapion:26/01/07.000
format_mapion:123/37/01.000
mapion lat:26/01/07.000
mapion long:123/37/01.000
degree lat:26.0186111111111
degree long:123.616944444444
wgs84:26.01.21.401
wgs84:123.36.55.337
degree_wgs84:
source =
def_format = gpsone
out_datum = wgs84
defaultFormat = gpsone
alt = +000000
lat = 26.01.07
cache_long =
out_format = second
cache_lat =
changeMyself = 0
long = 123.37.1
defaultDatum = wgs84
def_datum = tokyo
enableWantarray = 0

F:\kumacchi\MyProgram\perl\sample\GeoTool>

測地系 – Wikipedia

(Visited 1 times, 1 visits today)

タグ : ,