AIRMET SIGMET
A SIGMET (Significant Meteorological Information) is a weather advisory for the safety of all aircraft. They are divided into:
- Convective - thunderstorms, hail, and cyclones
- Non-Convective - turbulence, icing, dust clouds, volcanic activity, and radiation
An AIRMET (Airman's Meteorological Information) is a weather advisory for smaller aircraft or VFR navigation. They are divided into:
- Sierra - IFR conditions like low ceilings and mountain obscuration
- Tango - turbulance and high surface winds
- Zulu - icing and freezing levels
Both types share a similar report format and therefore are combined into a single handling class. The Bulletin
and weather type can be used to classify each as a SIGMET or AIRMET for filtering purposes.
class avwx.AirSigManager()
Because of the global nature of these report types, we don't initialize a report class with a station ident like the other report types. Instead, we use a class to manage and update the list of all active SIGMET and AIRMET reports.
>>> from avwx import AirSigManager
>>> from avwx.structs import Coord
>>> manager = AirSigManager()
>>> manager.update()
True
>>> manager.last_updated
datetime.datetime(2022, 3, 27, 5, 54, 21, 516741, tzinfo=datetime.timezone.utc)
>>> len(manager.reports)
113
>>> len(manager.contains(Coord(lat=33.12, lon=-105)))
5
>>> manager.reports[0].data.bulletin.type
Code(repr='WA', value='airmet')
>>> manager.reports[0].data.type
'AIRMET SIERRA FOR IFR AND MTN OBSCN'
along(coords: List[avwx.structs.Coord]) -> List[avwx.AigSigmet]
Returns available reports the intersect a flight path
async async_update() -> bool
Async updates list of reports by fetching from all sources
Returns True
if new reports are available, else False
contains(coord: avwx.structs.Coord) -> List[avwx.AigSigmet]
Returns available reports that contain a coordinate
last_updated: datetime.datetime = None
UTC Datetime object when the reports were last updated
raw: List[str]
List of the original fetched report strings
reports: List[avwx.AirSigmet] = None
List of parsed avwx.AirSigmet
objects
async async_update() -> bool
Updates list of reports by fetching from all sources
Returns True
if new reports are available, else False
class avwx.AigSigmet()
In addition to the manager, you can use the avwx.AirSigmet
class like any other report when you supply the report string via parse
or from_report
.
>>> from avwx import AirSigmet
>>> report = 'WSPR31 SPJC 270529 SPIM SIGMET 3 VALID 270530/270830 SPJC- SPIM LIMA FIR EMBD TS OBS AT 0510Z NE OF LINE S0406 W07103 - S0358 W07225 - S0235 W07432 - S0114 W07503 TOP FL410 MOV SW NC='
>>> sigmet = AirSigmet.from_report(report)
True
>>> sigmet.last_updated
datetime.datetime(2022, 3, 27, 6, 29, 33, 300935, tzinfo=datetime.timezone.utc)
>>> sigmet.data.observation.coords
[Coord(lat=-4.06, lon=-71.03, repr='S0406 W07103'),
Coord(lat=-3.58, lon=-72.25, repr='S0358 W07225'),
Coord(lat=-2.35, lon=-74.32, repr='S0235 W07432'),
Coord(lat=-1.14, lon=-75.03, repr='S0114 W07503')]
>>> sigmet.data.observation.intensity
Code(repr='NC', value='No change')
>>> sigmet.data.observation.ceiling
Number(repr='FL410', value=410, spoken='flight level four one zero')
contains(coord: avwx.structs.Coord) -> bool
Returns True if the report area contains a coordinate
data: avwx.structs.AirSigmetData = None
AirSigmetData dataclass of parsed data values and units
from_report(report: str) -> avwx.AigSigmet
Returns an updated report object based on an existing report
intersects(path: shapely.geometry.LineString) -> bool
Returns True if the report area intersects a flight path
issued: date = None
UTC date object when the report was issued
last_updated: datetime.datetime = None
UTC Datetime object when the report was last updated
parse(report: str, issued: Optional[date] = None) -> bool
Updates report data by parsing a given report
Can accept a report issue date if not a recent report string
raw: str = None
The unparsed report string
source: str = None
Source URL root used to pull the current report data
units: avwx.structs.Units
Units inferred from the report contents
class avwx.structs.AirSigmetData
area: str
body: str
bulletin: avwx.structs.Bulletin
correction: Optional[str]
end_time: Optional[avwx.structs.Timestamp]
forecast: Optional[avwx.structs.AirSigObservation]
issuer: str
observation: Optional[avwx.structs.AirSigObservation]
raw: str
region: str
remarks: Optional[str]
sanitized: str
start_time: Optional[avwx.structs.Timestamp]
station: Optional[str]
time: Optional[avwx.structs.Timestamp]
type: str
class avwx.structs.AirSigmetObservation
bounds: List[str]
ceiling: Optional[avwx.structs.Number]
coords: List[avwx.structs.Coord]
end_time: Optional[avwx.structs.Timestamp]
floor: Optional[avwx.structs.Number]
intensity: Optional[avwx.structs.Code]
movement: Optional[avwx.structs.Movement]
other: List[str]
poly: Optional[shapely.geometry.Polygon]
position: Optional[avwx.structs.Coord]
start_time: Optional[avwx.structs.Timestamp]
type: Optional[avwx.structs.Code]