Generation of glacier IDs for GLIMS: perl code
Bruce Raup
braup at nsidc.org
Thu Jun 6 14:30:48 MDT 2002
On 2002-06-06 12:13 -0600, Bruce Raup wrote:
> Hi all,
>
> I've just written a short perl program to convert a list of
> longitude,latitude to GLIMS glacier IDs, and have included it below.
Okay, next time I'll sit on it for a day. Below is the correct version,
that gets the north/south bit right.
Bruce
-------------------------- cut -------------------------
#!/usr/bin/perl -w
# $Id: lonlat2glims_id,v 1.3 2002-06-06 14:28:19-06 braup Exp braup $
# Program to take a list of lon/lat values as input (filename on the
# command line or as standard input) and generate GLIMS glacier IDs,
# printed to standard output.
($progname = $0) =~ s!^.*/!!; # get basename of program
use Getopt::Std;
$version = '$Revision: 1.3 $';
($version) = $version =~ /^\$Revision:\s*(\d+\.\d*)/;
$usage = "$progname version $version
Usage:
$progname -h (prints this help message and exits)
OR
$progname [-v] [lon_lat_filename]
where
-v specifies verbose mode
If no files are specified on the command line, then
standard input is read.
This routine assumes all lon/lat values are within normal
ranges (for now).
The input file is expected to have two columns, in lon lat order.
Comments are allowed, and are preceded by a '#' character.
";
$opt_h = $opt_v = '';
if (! getopts('hv') ) {
die "$usage\n";
}
print "$progname version $version\n" if $opt_v;
die "$usage\n" if $opt_h;
while (<>) {
next if /^\s*#/; # skip comments
next if /^\s*$/; # skip blank lines
s/\s*#.*$//; # strip comments off of data lines
($lon,$lat) = split;
$WE = $lon < 0 ? "W" : "E";
$SN = $lat < 0 ? "S" : "N";
$alon = abs($lon);
$alat = abs($lat);
$id = sprintf( "G_$WE%07.3f$SN%06.3f", $alon, $alat );
$id =~ s/\.//g;
print "$lon\t$lat\t$id\n";
}
-------------------------- cut -------------------------
More information about the GLIMS
mailing list