Gracefully handle SRTM tile download failures on page load
This commit is contained in:
parent
737de10bf4
commit
ebd22ce156
1 changed files with 11 additions and 1 deletions
|
|
@ -2,6 +2,8 @@ defmodule MicrowavepropWeb.ContactLive.Show do
|
|||
@moduledoc false
|
||||
use MicrowavepropWeb, :live_view
|
||||
|
||||
require Logger
|
||||
|
||||
alias Microwaveprop.Propagation.BandConfig
|
||||
alias Microwaveprop.Propagation.Scorer
|
||||
alias Microwaveprop.Radio
|
||||
|
|
@ -677,7 +679,7 @@ defmodule MicrowavepropWeb.ContactLive.Show do
|
|||
lon1 when is_number(lon1) <- contact.pos1["lon"] || contact.pos1["lng"],
|
||||
%{"lat" => lat2} <- contact.pos2,
|
||||
lon2 when is_number(lon2) <- contact.pos2["lon"] || contact.pos2["lng"],
|
||||
{:ok, profile} <- ElevationClient.fetch_elevation_profile(lat1, lon1, lat2, lon2, 256) do
|
||||
{:ok, profile} <- safe_fetch_elevation(lat1, lon1, lat2, lon2) do
|
||||
freq_ghz = band_to_ghz(contact.band)
|
||||
dist_km = haversine_km(lat1, lon1, lat2, lon2)
|
||||
analysis = TerrainAnalysis.analyse(profile, dist_km, freq_ghz)
|
||||
|
|
@ -869,6 +871,14 @@ defmodule MicrowavepropWeb.ContactLive.Show do
|
|||
end)
|
||||
end
|
||||
|
||||
defp safe_fetch_elevation(lat1, lon1, lat2, lon2) do
|
||||
ElevationClient.fetch_elevation_profile(lat1, lon1, lat2, lon2, 256)
|
||||
rescue
|
||||
e ->
|
||||
Logger.warning("Elevation profile failed: #{Exception.message(e)}")
|
||||
{:error, :elevation_unavailable}
|
||||
end
|
||||
|
||||
defp band_to_ghz(nil), do: 10.0
|
||||
|
||||
defp band_to_ghz(band) do
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue