Skip to content

Graphical TFR display with boundary overlay #14

@billmallard

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions