Add logging to SRTM elevation fallback chain
This commit is contained in:
parent
2ae60d036b
commit
fe9c1a3c5b
2 changed files with 18 additions and 2 deletions
|
|
@ -3,6 +3,8 @@ defmodule Microwaveprop.Terrain.ElevationClient do
|
|||
|
||||
alias Microwaveprop.Terrain.Srtm
|
||||
|
||||
require Logger
|
||||
|
||||
@batch_size 100
|
||||
|
||||
@spec fetch_elevation_profile(float(), float(), float(), float(), pos_integer()) ::
|
||||
|
|
@ -10,12 +12,18 @@ defmodule Microwaveprop.Terrain.ElevationClient do
|
|||
def fetch_elevation_profile(lat1, lon1, lat2, lon2, n \\ 64) do
|
||||
case srtm_tiles_dir() do
|
||||
nil ->
|
||||
Logger.debug("SRTM tiles_dir not configured, using API")
|
||||
fetch_elevation_profile_api(lat1, lon1, lat2, lon2, n)
|
||||
|
||||
tiles_dir ->
|
||||
case Srtm.fetch_elevation_profile(lat1, lon1, lat2, lon2, tiles_dir, n) do
|
||||
{:ok, _profile} = ok -> ok
|
||||
{:error, _} -> fetch_elevation_profile_api(lat1, lon1, lat2, lon2, n)
|
||||
{:ok, _profile} = ok ->
|
||||
Logger.info("Elevation profile served from SRTM tiles")
|
||||
ok
|
||||
|
||||
{:error, reason} ->
|
||||
Logger.warning("SRTM failed (#{inspect(reason)}), falling back to API")
|
||||
fetch_elevation_profile_api(lat1, lon1, lat2, lon2, n)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
defmodule Microwaveprop.Terrain.Srtm do
|
||||
@moduledoc false
|
||||
|
||||
require Logger
|
||||
|
||||
@samples 3601
|
||||
@void -32_768
|
||||
@base_url "https://elevation-tiles-prod.s3.amazonaws.com/skadi"
|
||||
|
|
@ -26,19 +28,25 @@ defmodule Microwaveprop.Terrain.Srtm do
|
|||
url = "#{@base_url}/#{lat_dir}/#{filename}.gz"
|
||||
path = Path.join(tiles_dir, filename)
|
||||
|
||||
Logger.info("Downloading SRTM tile #{filename} from S3")
|
||||
|
||||
case Req.get(url, req_options()) do
|
||||
{:ok, %{status: 200, body: body}} ->
|
||||
decompressed = :zlib.gunzip(body)
|
||||
File.write!(path, decompressed)
|
||||
Logger.info("SRTM tile #{filename} downloaded (#{byte_size(decompressed)} bytes)")
|
||||
{:ok, path}
|
||||
|
||||
{:ok, %{status: 404}} ->
|
||||
Logger.warning("SRTM tile #{filename} not available on S3 (404)")
|
||||
{:error, :not_available}
|
||||
|
||||
{:ok, %{status: status}} ->
|
||||
Logger.error("SRTM tile #{filename} download failed: HTTP #{status}")
|
||||
{:error, "SRTM download HTTP #{status}"}
|
||||
|
||||
{:error, reason} ->
|
||||
Logger.error("SRTM tile #{filename} download error: #{inspect(reason)}")
|
||||
{:error, "SRTM download error: #{inspect(reason)}"}
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue