Sir Cachelot
Geoguru
Gibt es eine Möglichkeit die Geländehöhe über NN automatisch abzufragen über die Koords?
So dass man nicht immer bei GE reinschauen muss?
So dass man nicht immer bei GE reinschauen muss?
#Höhendaten aus SRTM Files
#1.) Download Höhendaten von ftp://e0srp01u.ecs.nasa.gov/srtm/version2/SRTM3/Eurasia
#2.) Unzip Höhendaten
#3.) Dieses Perl Script aus gleichem Verzeichnis starten
#usage: perl srtm_height.pl lat lon
#Online Check per http://www.earthtools.org/webservices.htm, z.B. http://www.earthtools.org/height/49/12
$numArgs = $#ARGV + 1;
if ($numArgs < 2)
{
printf "usage: perl srtm_height.pl lat lon";
exit;
}
#input
my $lat=$ARGV[0];
my $lon=$ARGV[1];
#lower left corner
my $ll_lat=int($lat);
my $ll_lon=int($lon);
#filename
my $filename = "";
if ($ll_lat >= 0) { $filename = "N"; } else {$filename = "S"; };
$filename.=sprintf("%02d",abs($ll_lat));
if ($ll_lon >= 0) { $filename .= "E"; } else {$filename .= "W"; };
$filename.=sprintf("%03d.hgt",abs($ll_lon));
#printf ("%s\n", $filename);
#read file in one big array
open(FILE, $filename);
binmode(FILE);
my $buffer;
my $num_bytes = 1201*1201*2;
read (FILE, $buffer, $num_bytes);
close(FILE);
#calculate offset, see ftp://e0srp01u.ecs.nasa.gov/srtm/version2/Documentation/SRTM_Topo.pdf
my $row_offset = ( ($ll_lat+1.0-$lat)*1200.0);
#printf ("%f\n", $row_offset);
$row_offset = int($row_offset+0.5); #round
my $col_offset = ( ($lon-$ll_lon)*1200.0);
#printf ("%f\n", $col_offset);
$col_offset = int($col_offset+0.5); #round
my $byte_offset = $row_offset*1201+$col_offset;
#printf ("%f\n", $byte_offset);
#get height from buffer
my $height = vec($buffer, $byte_offset, 16);
print $height;