#!/usr/bin/perl -w
#
# 緯度経度ずらし
# Nowral
# 99/9/22
#
#緯度と経度の移動量
#秒単位で指定
#(デフォルト、日本時間)
$dlat = 0 + eval(&MacPerl'Ask("緯度方向のずらす量を秒単位で入力してください。", "+9.0"));
if($dlat>0) { $dlat = "+" . $dlat; }
$dlon = 0 + eval(&MacPerl'Ask("経度方向のずらす量を秒単位で入力してください。", "-14.1"));
if($dlon>0) { $dlon = "+" . $dlon; }
@files = @ARGV if $dlat || $dlon;
foreach $oldargv (@files) {
$newargv = $oldargv . $dlat . $dlon;
open(OUT, ">$newargv") || die "Filename too long, maybe?: $!\n";
&MacPerl'SetFileInfo('GPSy', 'TEXT', $newargv);
open(IN, "$oldargv");
while(<IN>){
if(/^T\t/) {
@ed = split("\t");
$ed[5] = &slidedms($ed[5], $dlat);
$ed[6] = &slidedms($ed[6], $dlon);
$_ = join("\t", @ed);
}
print OUT;
}
close(IN);
close(OUT);
}
#&MacPerl'Quit(2);
die "The Unhappy End";
sub slidedms {
my($dms, $ds) = @_;
my($d, $m, $s, $sf);
$dms =~ /(\d+)。(\d+)'(\d+)\.(\d)"/;
$sf = int($1*36000 + $2*600 + $3*10 + $4 + $ds*10 + 0.5);
$s = ($sf / 10) % 60;
$m = ($sf /600) % 60;
$d = int($sf / 36000);
$sf %= 10;
sprintf("%d。%02d\'%02d\.%d\"", $d, $m, $s, $sf);
}