AIRMET / SIGMET Parser

Живая страница для текущего контракта AIRMET/SIGMET. Ниже развёрнутые формы ответа показывают опциональные ветки с явными null, хотя реальный JSON опускает nil-значения.

Точки входа

GET /airmet_sigmet открывает эту документационную страницу.

POST /airmet_sigmet разбирает JSON-запрос и возвращает текущий контракт.

Живой Парсер

Выбери готовый TAC-пример или вставь свой текст. Кнопка "Загрузить пример" подставляет report в форму.

Type
SIGMET
Geometry
POLYGON
Branch
Standard hazard

Обычный WI polygon с грозовым SIGMET и top-level geometry.

Type
AIRMET
Geometry
AREA_FROM_LINE
Branch
Standard hazard

Relative area с привязкой к FIR: calculated_area выбирается по стороне линии.

Type
SIGMET
Geometry
CORRIDOR
Branch
Standard hazard

Corridor с осевой линией и derived polygon в geometry.calculated_area.points.

Type
SIGMET
Geometry
NONE
Branch
Cancel branch

Cancellation branch с cancel payload и пустым hazards array.

Type
SIGMET
Geometry
VA
Branch
VA hazard branch

Volcanic ash SIGMET: volcano хранится сверху, а geometry находится в hazard-блоках.

JSON response

HTML preview for first report

Расширенные Формы Ответа

Блоки ниже специально разворачивают опциональные ветки явно. В реальном API nil-поля опускаются.

POST body: single report

Smallest request body for the live parser form.

{
  "report": "SAVF SIGMET A3 VALID ..."
}

POST body: batch request

Batch mode keeps the same response contract and accumulates unparsed reports in errors.

{
  "reports": [
    "SAVF SIGMET A3 VALID ...",
    "UGGG AIRMET 10 VALID ..."
  ]
}

Expanded report envelope

Union view of the maximal report shape. Real messages include only relevant branches.

{
  "message_raw": "raw TAC text",
  "issuer": "SABE",
  "type": "AIRMET | SIGMET",
  "number": "A3",
  "valid_from": "2026-03-02T12:43:00Z",
  "valid_to": "2026-03-02T16:43:00Z",
  "fir_code": "SAVF",
  "fir_name": "COMODORO RIVADAVIA",
  "geometry": {
    "type": "POLYGON | CORRIDOR | AREA_FROM_LINE",
    "relation": "E_OF_LINE | W_OF_LINE | N_OF_LINE | S_OF_LINE | NE_OF_LINE | NW_OF_LINE | SE_OF_LINE | SW_OF_LINE | null",
    "width_nm": 60,
    "points": [
      {
        "lat": -53.0166666667,
        "lon": -59.0166666667
      },
      {
        "lat": -48.45,
        "lon": -53.9666666667
      }
    ],
    "raw": "source geometry text",
    "calculated_area": {
      "points": [
        {
          "lat": -53.2,
          "lon": -59.3
        },
        {
          "lat": -48.1,
          "lon": -53.7
        }
      ],
      "polygons": [
        {
          "points": [
            {
              "lat": 43.0,
              "lon": 40.0
            },
            {
              "lat": 42.0,
              "lon": 41.0
            }
          ],
          "holes": [
            [
              {
                "lat": 42.5,
                "lon": 40.5
              },
              {
                "lat": 42.4,
                "lon": 40.6
              }
            ]
          ]
        }
      ],
      "ambiguous": false,
      "reason": null
    }
  },
  "cancel": {
    "target_type": "SIGMET",
    "target_number": "21",
    "valid_from": "2026-03-02T10:11:00Z",
    "valid_to": "2026-03-02T14:11:00Z"
  },
  "volcano": {
    "name": "SANTA MARIA",
    "position": {
      "lat": 14.75,
      "lon": -91.55
    }
  },
  "hazards": [
    {
      "raw": "FRQ TS OBS AT 1243Z TOP FL340 MOV ESE 05KT NC",
      "phenomena": "FRQ TS",
      "phase": "OBS | FCST",
      "observed_at": "2026-03-02T12:43:00Z",
      "forecast_at": null,
      "visibility": {
        "value": 700,
        "unit": "M"
      },
      "cause": "FG",
      "altitude": {
        "type": "TOP | LAYER | null",
        "from": 0,
        "to": 340,
        "unit": "FL | FT"
      },
      "movement": {
        "type": "STNR | MOV | null",
        "mode": "MOV",
        "dir": "ESE",
        "dir_deg": 112.5,
        "speed": 5,
        "unit": "KT | KMH | MPS"
      },
      "trend": "NC | WKN | INTSF | null",
      "geometry": {
        "type": "POLYGON",
        "points": [
          {
            "lat": 14.8,
            "lon": -91.23
          },
          {
            "lat": 14.66,
            "lon": -91.25
          }
        ],
        "raw": "N1448 W09114 - N1440 W09115 - ..."
      }
    }
  ],
  "html_text": "<p>Rendered HTML representation</p>"
}

Top-level geometry: polygon

Classic area definition produced by `parse_polygon_with_wi`.

{
  "type": "POLYGON",
  "points": [
    {
      "lat": -13.0,
      "lon": -60.5166666667
    },
    {
      "lat": -13.0,
      "lon": -59.6833333333
    },
    {
      "lat": -12.4,
      "lon": -59.6833333333
    },
    {
      "lat": -12.4,
      "lon": -60.5166666667
    },
    {
      "lat": -13.0,
      "lon": -60.5166666667
    }
  ],
  "raw": "WI S1300 W06031 - S1300 W05941 - S1224 W05941 - S1224 W06031 - S1300 W06031"
}

Top-level geometry: corridor

Axis line plus derived corridor polygon around it.

{
  "type": "CORRIDOR",
  "width_nm": 60,
  "points": [
    {
      "lat": 55.6833333333,
      "lon": -61.2833333333
    },
    {
      "lat": 60.5333333333,
      "lon": -64.8666666667
    }
  ],
  "raw": "WI 60NM WID LINE BTN N5541 W06117 - N6032 W06452",
  "calculated_area": {
    "points": [
      {
        "lat": 55.2503,
        "lon": -60.5787
      },
      {
        "lat": 60.1003,
        "lon": -64.1565
      },
      {
        "lat": 60.9664,
        "lon": -65.5981
      },
      {
        "lat": 56.1164,
        "lon": -62.0288
      },
      {
        "lat": 55.2503,
        "lon": -60.5787
      }
    ]
  }
}

Top-level geometry: relative to line

Axis line and FIR-clipped area chosen from the requested side of line.

{
  "type": "AREA_FROM_LINE",
  "relation": "E_OF_LINE",
  "points": [
    {
      "lat": 43.3333333333,
      "lon": 40.0
    },
    {
      "lat": 42.0,
      "lon": 41.75
    },
    {
      "lat": 41.5,
      "lon": 41.5
    }
  ],
  "raw": "E OF LINE N4320 E04000 - N4200 E04145 - N4130 E04130",
  "calculated_area": {
    "points": [
      {
        "lat": 43.68,
        "lon": 40.38
      },
      {
        "lat": 42.97,
        "lon": 42.99
      },
      {
        "lat": 41.92,
        "lon": 42.54
      },
      {
        "lat": 41.84,
        "lon": 40.73
      },
      {
        "lat": 43.68,
        "lon": 40.38
      }
    ],
    "polygons": [],
    "ambiguous": false,
    "reason": null
  }
}

Hazard shape: standard AIRMET/SIGMET

Used for non-VA hazard blocks. Optional keys are omitted in real JSON when nil.

{
  "raw": "FRQ TS OBS AT 1243Z TOP FL340 MOV ESE 05KT NC",
  "phenomena": "FRQ TS",
  "phase": "OBS",
  "observed_at": "2026-03-02T12:43:00Z",
  "forecast_at": null,
  "visibility": {
    "value": 700,
    "unit": "M"
  },
  "cause": "FG",
  "altitude": {
    "type": "TOP",
    "from": null,
    "to": 340,
    "unit": "FL"
  },
  "movement": {
    "type": "MOV",
    "mode": null,
    "dir": "ESE",
    "dir_deg": 112.5,
    "speed": 5,
    "unit": "KT"
  },
  "trend": "NC",
  "geometry": null
}

Hazard shape: volcanic ash

VA SIGMET keeps geometry inside each OBS/FCST hazard block and exposes top-level volcano metadata.

{
  "volcano": {
    "name": "SANTA MARIA",
    "position": {
      "lat": 14.75,
      "lon": -91.55
    }
  },
  "hazards": [
    {
      "raw": "VA CLD OBS 1150Z SFC/FL130 N1449 W09122 - ... MOV E 5KT",
      "phenomena": "VA CLD",
      "phase": "OBS",
      "observed_at": "2026-03-02T11:50:00Z",
      "forecast_at": null,
      "altitude": {
        "type": "LAYER",
        "from": 0,
        "to": 130,
        "unit": "FL"
      },
      "movement": {
        "mode": "MOV",
        "dir_deg": 90.0,
        "speed": 5,
        "unit": "KT"
      },
      "geometry": {
        "type": "POLYGON",
        "points": [
          {
            "lat": 14.8166666667,
            "lon": -91.3666666667
          },
          {
            "lat": 14.6833333333,
            "lon": -91.3666666667
          }
        ],
        "raw": "N1449 W09122 - N1441 W09122 - ..."
      }
    },
    {
      "raw": "FCST 1800Z VA CLD SFC/FL130 N1448 W09114 - ...",
      "phenomena": "VA CLD",
      "phase": "FCST",
      "observed_at": null,
      "forecast_at": "2026-03-02T18:00:00Z",
      "altitude": {
        "type": "LAYER",
        "from": 0,
        "to": 130,
        "unit": "FL"
      },
      "movement": null,
      "geometry": {
        "type": "POLYGON",
        "points": [
          {
            "lat": 14.8,
            "lon": -91.2333333333
          },
          {
            "lat": 14.6666666667,
            "lon": -91.25
          }
        ],
        "raw": "N1448 W09114 - N1440 W09115 - ..."
      }
    }
  ]
}

Cancel branch

Cancellation flow short-circuits the normal parser path after header/FIR extraction.

{
  "message_raw": "NZZC SIGMET 32 VALID ... CNL SIGMET 21 ...",
  "issuer": "NZKL",
  "type": "SIGMET",
  "number": "32",
  "valid_from": "2026-03-02T14:03:00Z",
  "valid_to": "2026-03-02T14:11:00Z",
  "fir_code": "NZZC",
  "fir_name": "NEW ZEALAND",
  "cancel": {
    "target_type": "SIGMET",
    "target_number": "21",
    "valid_from": "2026-03-02T10:11:00Z",
    "valid_to": "2026-03-02T14:11:00Z"
  },
  "hazards": [],
  "html_text": "<p>Rendered HTML representation</p>"
}

Типы Геометрии

TypeTAC patternOutput branchNotes
POLYGONWI <coord> - <coord> - ...geometry.points, closed ring, geometry.raw
  • Классическое описание зоны через набор координат.
  • Top-level parser ожидает минимум 3 coordinate pair.
CORRIDORWI <width>NM WID LINE BTN <coord> - <coord> - ...geometry.width_nm, axis geometry.points, derived geometry.calculated_area.points
  • Axis points сохраняют исходную осевую ломаную.
  • Calculated area хранит замкнутый corridor polygon вокруг этой оси.
AREA_FROM_LINEE|W|N|S|NE|NW|SE|SW OF LINE <coord> - <coord> - ...geometry.relation, axis geometry.points, FIR-clipped geometry.calculated_area
  • Calculated area может собраться как один polygon через points или как несколько polygons.
  • Неоднозначный clipping отражается через calculated_area.ambiguous и calculated_area.reason.

Группы Явлений

AIRMET

  • SFC VIS
  • SFC WIND
  • MT OBSC
  • MOD ICE
  • MOD TURB
  • MOD MTW
  • TS
  • EMBD TS
  • FRQ TS
  • SQL TS
  • ISOL TS
  • OCNL TS
  • LINE TS
  • OBSC TS
  • OVC CLD
  • BKN CLD
  • SCT CLD
  • FEW CLD

SIGMET

  • SEV TURB
  • SEV ICE
  • SEV MTW
  • TS
  • EMBD TS
  • FRQ TS
  • SQL TS
  • ISOL TS
  • OBSC TS
  • LINE TS
  • OCNL TS
  • VA CLD

Правила Контракта