Skip to content

Graphical TFR display with boundary overlay #14

Description

@billmallard

Summary

Display active Temporary Flight Restrictions (TFRs) as graphical boundaries on the moving map. TFRs are among the highest-risk airspace violations in general aviation — they are temporary, widely varied in shape and altitude, and frequently issued with little notice (Presidential movement, sporting events, disasters, wildfires).

Data Source

The FAA publishes active TFRs via a public REST API with no authentication required:

https://tfr.faa.gov/tfr2/list.jsp         # HTML list (scrape-able)
https://tfr.faa.gov/save_pages/detail_<id>.xml  # KML/XML per TFR

The FAA also provides a GeoJSON feed:

https://tfr.faa.gov/tfr_map_ims/jsonTFRData.jsp

Update interval: poll every 5–15 minutes is sufficient; TFRs rarely change within a flight.

Display

  • Boundary polygon: red or notam-blue fill with 50% opacity, solid red border
  • Label: TFR type (VIP, Disaster, Sports) + altitude range (e.g. "SFC–FL180")
  • Pop-up detail: tap/click on TFR boundary shows full NOTAM text
  • Proximity alert: warn pilot (audio or visual) when within configurable distance of a TFR boundary

TFR Types to Recognise

Type FAA Code Suggested Colour
VIP (Presidential) 91.141 Red (hard block)
Disaster / Emergency 91.137 Orange
Wildfire 91.137(a)(1) Orange
Space Operations 91.143 Blue
Air show / Sporting 91.145 Yellow
Stadium (game day) 91.145 Yellow

Offline Handling

Cache the last-known TFR set with a timestamp. If data is more than 1 hour old, show a stale-data warning rather than silently displaying outdated TFRs. Stale TFR data is worse than no data if it shows expired restrictions as active.

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions