$ curl -s 'https://nationalmap.gov/epqs/pqs.php?units=Meters&output=json&x=-83.65&y=41.37' | jq '.USGS_Elevation_Point_Query_Service.Elevation_Query.Elevation'
212.77
$
####
2020/06/23 15:26:07 INFO ./5.2.elev.pl
2020/06/23 15:26:07 INFO {
"USGS_Elevation_Point_Query_Service" => {
"Elevation_Query" => {
"Data_Source" => "3DEP 1/3 arc-second",
"Elevation" => -1000000,
"Units" => "Meters",
"x" => "41.37",
"y" => "-83.65"
}
}
}
2020/06/23 15:26:07 INFO 41.37 -83.65 0.208
2020/06/23 15:26:07 INFO ==============
2020/06/23 15:26:07 INFO https://api.weather.gov/points/41.37,-83.65
2020/06/23 15:26:08 INFO CLE
2020/06/23 15:26:08 INFO 16 52
2020/06/23 15:26:08 INFO ==============
2020/06/23 15:26:08 INFO https://api.weather.gov/gridpoints/CLE/16,52
2020/06/23 15:26:08 INFO ==============
2020/06/23 15:26:08 INFO 213.0552 wmoUnit:m
####
#!/usr/bin/env perl
use strict;
use warnings;
use 5.016;
use Log::Log4perl;
use Mojo::UserAgent;
use open ':std', OUT => ':utf8';
use Mojo::Util qw(dumper);
# get rid of old log
my $file = '/home/hogan/Documents/hogan/logs/4.log4perl.txt';
unlink $file or warn "Could not unlink $file: $!";
my $log_conf4 = "/home/hogan/Documents/hogan/logs/conf_files/4.conf";
Log::Log4perl::init($log_conf4); #info
my $logger = Log::Log4perl->get_logger();
$logger->info("$0");
# weston, OH 41.37,-83.65
my $lat = 41.37;
my $long = -83.65;
# the API docs says you must identify yourself, please make this something legit
my $name = '(example.com, contact@example.com)';
my $url2 =
"https://nationalmap.gov/epqs/pqs.php?output=json&units=Meters&x=$lat&y=$long";
my $ub = Mojo::UserAgent->new;
$ub->transactor->name($name);
# get JSON response
my $qv = $ub->get($url2)->res->json;
$logger->info( dumper $qv);
my $elev = .208; # 676 ft = .206 +.02 for observer #km
$logger->info("$lat $long $elev");
my $url1 = "https://api.weather.gov/points/$lat,$long";
$logger->info("==============");
$logger->info($url1);
my $ua = Mojo::UserAgent->new;
$ua->transactor->name($name);
# get JSON response
my $pv = $ua->get($url1)->res->json->{properties};
my $station = $pv->{'cwa'};
my $gridX = $pv->{'gridX'};
my $gridY = $pv->{'gridY'};
$logger->info("$station");
$logger->info("$gridX $gridY");
$logger->info("==============");
## new transaction
## find elevation
my $uc = Mojo::UserAgent->new;
$uc->transactor->name($name);
my $url3 = "https://api.weather.gov/gridpoints/$station/$gridX,$gridY";
$logger->info( $url3 );
my $json = $uc->get($url3)->res->json;
#my $props = $json->{properties};
my $elev2 = $json->{properties}->{elevation}->{value};
my $unit = $json->{properties}->{elevation}->{unitCode};
$logger->info("==============");
#$logger->info(dumper($props));
$logger->info( $elev2 . ' '. $unit);
__END__