Gracefully handle SRTM tile download failures on page load

This commit is contained in:
Graham McIntire 2026-04-02 08:03:05 -05:00
parent 737de10bf4
commit ebd22ce156
No known key found for this signature in database
GPG key ID: F4ABF488E6029E59

View file

@ -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