X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXBearing.pm;h=4c8c3eea2a9ce22abbd89b96536dcd4c68bf8c3e;hb=b4826d1f4125788e14fed3adbb99e66242904e74;hp=798339cbcaf5b231799c8b636e04cbfdc79e32bb;hpb=f2e898274129b45146a83630928e484d814a322a;p=spider.git diff --git a/perl/DXBearing.pm b/perl/DXBearing.pm index 798339cb..4c8c3eea 100644 --- a/perl/DXBearing.pm +++ b/perl/DXBearing.pm @@ -88,7 +88,7 @@ sub dr sub is_qra { my $qra = shift; - return $qra =~ /\a\a\d\d\a\a/o; + return $qra =~ /^[A-Za-z][A-Za-z]\d\d[A-Za-z][A-Za-z]$/o; } # calc bearing and distance, with arguments in DEGREES @@ -112,4 +112,36 @@ sub bdist $az = $az+2*$pi if $az < 0; return (rd($az), $dx); } + +# turn a lat long string into floating point lat and long +sub stoll +{ + my ($latd, $latm, $latl, $longd, $longm, $longl) = split /\s+/, shift; + + $longd += ($longm/60); + $longd = 0-$longd if (uc $longl) eq 'W'; + $latd += ($latm/60); + $latd = 0-$latd if (uc $latl) eq 'S'; + return ($latd, $longd); +} + +# turn a lat and long into a string +sub lltos +{ + my ($lat, $long) = @_; + my ($latd, $latm, $longd, $longm); + my $latl = $lat > 0 ? 'N' : 'S'; + my $longl = $long > 0 ? 'E' : 'W'; + + $lat = abs $lat; + $latd = int $lat; + $lat -= $latd; + $latm = int (60 * $lat); + + $long = abs $long; + $longd = int $long; + $long -= $longd; + $longm = int (60 * $long); + return "$latd $latm $latl $longd $longm $longl"; +} 1;