Skip to content

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]