【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>