# CifpControlledAirspace

Defines the boundaries and properties of controlled airspace (Class B, C, D, etc.) as sequences of boundary-defining points

**Source:** CIFP table `CIFP_CONTROLLED_AIRSPACE` · version `239462ba9c35` · effective 2026-04-16

> Each airspace boundary is described by multiple sequential records (SEQUENCE_NUMBER). Only the first record in a group typically contains the full airspace metadata (limits, name); subsequent records define additional boundary points. ARC_ORIGIN and ARC_DISTANCE/BEARING fields are only populated for arc boundary segments.

## Example query

```graphql
# Introspect the CifpControlledAirspace type in GraphiQL at https://api.nav.sortie.co/graphql
# Example shape (pair with a compatible root query field):
{
  # ...rootQuery... {
    recordType
    customerAreaCode
    sectionCode
    icaoCode
  # }
}
```

Run at https://api.nav.sortie.co/graphql (GraphiQL available in-browser).

## Fields

| Field | Type | Description | Units | Enum |
|---|---|---|---|---|
| `recordType` | `RecordType` | Indicates whether the record is a standard record or tailored record |  | `S`=Standard record |
| `customerAreaCode` | `CifpControlledAirspaceCustomerAreaCode` | Geographic region or customer area for which the data applies |  | `CAN`=Canada and Alaska; `LAM`=Latin America and Caribbean; `PAC`=Pacific; `USA`=Contiguous United States |
| `sectionCode` | `CifpControlledAirspaceSectionCode` | ARINC 424 section code identifying the record type; UC indicates controlled airspace |  | `UC`=Controlled Airspace |
| `icaoCode` | `CifpControlledAirspaceIcaoCode` | ICAO region code identifying the country or geographic region of the airspace |  | `K1`, `K2`, `K3`, … (12 values) |
| `airspaceType` | `AirspaceType` | Type of controlled airspace being described |  | `0`=Class D surface area without weather observer; `1`=Class D surface area with weather observer; `C`=Class C airspace; `K`=Terminal Control Area (TCA) / Class B airspace; `P`=Class B airspace; `T`=Terminal Radar Service Area (TRSA) |
| `airspaceCenter` | `String` | Identifier of the navaid, fix, or airport that serves as the center reference for the airspace |  |  |
| `sectionCode2` | `CifpControlledAirspaceSectionCode2` | Section code qualifying the AIRSPACE_CENTER identifier type |  | `HA`=Heliport; `PA`=Airport |
| `airspaceClassification` | `AirspaceClassification` | FAA airspace classification of the controlled airspace |  | `B`=Class B airspace; `C`=Class C airspace; `D`=Class D airspace |
| `multipleCode` | `MultipleCode` | Alphabetic code used to differentiate multiple airspace areas that share the same airspace center identifier; letters A-Z used sequentially |  | `A`, `B`, `C`, … (26 values) |
| `sequenceNumber` | `String` | Sequential number ordering the boundary-defining records within a single airspace definition; increments in steps of 10 |  |  |
| `continuationRecordNo` | `String` | Continuation record number; 0 indicates the primary record, numbers 1 and above indicate continuation records with additional data for the same sequence point |  |  |
| `level` | `String` | Indicates the altitude level classification of the airspace (high, low, or both); typically null for terminal controlled airspace |  |  |
| `timeCode` | `String` | Code indicating the hours of operation of the airspace; null if the airspace is continuous (H24) |  |  |
| `notam` | `String` | Indicates whether the airspace is subject to activation by NOTAM |  |  |
| `boundaryVia` | `BoundaryVia` | Defines the type of path used to connect this boundary point to the next boundary point in sequence |  | `CE`, `G`, `GE`, … (8 values) |
| `latitude` | `String` | Latitude of the boundary point for this sequence record, encoded as hemisphere (N/S) followed by DDMMSSCC (degrees, minutes, seconds, hundredths of seconds) | degrees |  |
| `longitude` | `String` | Longitude of the boundary point for this sequence record, encoded as hemisphere (E/W) followed by DDDMMSSCC (degrees, minutes, seconds, hundredths of seconds) | degrees |  |
| `arcOriginLatitude` | `String` | Latitude of the center point of an arc boundary segment; populated only when BOUNDARY_VIA is R, L, or CE | degrees |  |
| `arcOriginLongitude` | `String` | Longitude of the center point of an arc boundary segment; populated only when BOUNDARY_VIA is R, L, or CE | degrees |  |
| `arcDistance` | `String` | Radius of the arc boundary segment measured from the arc origin; stored as a 4-digit integer representing tenths of nautical miles (e.g., 0052 = 5.2 NM) | tenths of nautical miles |  |
| `arcBearing` | `String` | True bearing from the arc origin center point to the arc boundary point; stored as a 4-digit integer in tenths of degrees (e.g., 2458 = 245.8 degrees) | tenths of degrees true |  |
| `rnp` | `String` | Required Navigation Performance value applicable within this airspace boundary segment; null if not specified | nautical miles |  |
| `lowerLimit` | `LowerLimit` | Lower altitude limit of the airspace, encoded as a 5-character value in hundreds of feet MSL or the special value GND for ground level; only populated on the first sequence record of an airspace definition | hundreds of feet MSL | `GND`, `00300`, `00301`, … (72 values) |
| `unitIndicator` | `UnitIndicator` | Unit of measurement for the LOWER_LIMIT altitude value |  | `A`=Altitude in feet MSL; `M`=Flight level (hundreds of feet) |
| `upperLimit` | `String` | Upper altitude limit of the airspace encoded as a 5-character value in hundreds of feet MSL; only populated on the first sequence record of an airspace definition | hundreds of feet MSL |  |
| `unitIndicator2` | `UnitIndicator` | Unit of measurement for the UPPER_LIMIT altitude value |  | `A`=Altitude in feet MSL; `M`=Flight level (hundreds of feet) |
| `controlledAirspaceName` | `String` | Official name of the controlled airspace (e.g., city or facility name); only populated on the first sequence record of an airspace definition |  |  |
| `fileRecordNo` | `String` | Sequential file record number assigned to this record within the CIFP data file for traceability |  |  |
| `cycleDate` | `String` | AIRAC cycle date when this record was last updated, in YYNN format where YY is the two-digit year and NN is the AIRAC cycle number within that year |  |  |

## Enum values

### `icaoCode` (`CifpControlledAirspaceIcaoCode`)

| Code | Description |
|---|---|
| `K1` | Contiguous US (eastern) |
| `K2` | Contiguous US (central) |
| `K3` | Contiguous US (southern) |
| `K4` | Contiguous US (western) |
| `K5` | Contiguous US (north-central) |
| `K6` | Contiguous US (south-central) |
| `K7` | Contiguous US (northwestern) |
| `PA` | Alaska |
| `PG` | Guam and Mariana Islands |
| `PH` | Hawaii |
| `TI` | US Virgin Islands |
| `TJ` | Puerto Rico |

### `multipleCode` (`MultipleCode`)

| Code | Description |
|---|---|
| `A` | First airspace segment for this center |
| `B` | Second airspace segment for this center |
| `C` | Third airspace segment for this center |
| `D` | Fourth airspace segment for this center |
| `E` | Fifth airspace segment for this center |
| `F` | Sixth airspace segment for this center |
| `G` | Seventh airspace segment for this center |
| `H` | Eighth airspace segment for this center |
| `I` | Ninth airspace segment for this center |
| `J` | Tenth airspace segment for this center |
| `K` | Eleventh airspace segment for this center |
| `L` | Twelfth airspace segment for this center |
| `M` | Thirteenth airspace segment for this center |
| `N` | Fourteenth airspace segment for this center |
| `O` | Fifteenth airspace segment for this center |
| `P` | Sixteenth airspace segment for this center |
| `Q` | Seventeenth airspace segment for this center |
| `R` | Eighteenth airspace segment for this center |
| `S` | Nineteenth airspace segment for this center |
| `T` | Twentieth airspace segment for this center |
| `U` | Twenty-first airspace segment for this center |
| `V` | Twenty-second airspace segment for this center |
| `W` | Twenty-third airspace segment for this center |
| `X` | Twenty-fourth airspace segment for this center |
| `Y` | Twenty-fifth airspace segment for this center |
| `Z` | Twenty-sixth airspace segment for this center |

### `boundaryVia` (`BoundaryVia`)

| Code | Description |
|---|---|
| `CE` | Circle centered on AIRSPACE_CENTER, last point of boundary (end) |
| `G` | Great circle (straight line) to next point |
| `GE` | Great circle to next point, last point of boundary (end) |
| `H` | Rhumb line to next point |
| `L` | Counter-clockwise (left) arc to next point |
| `LE` | Counter-clockwise (left) arc to next point, last point of boundary (end) |
| `R` | Clockwise (right) arc to next point |
| `RE` | Clockwise (right) arc to next point, last point of boundary (end) |

### `lowerLimit` (`LowerLimit`)

| Code | Description |
|---|---|
| `GND` | Ground level (surface) |
| `00300` | 00300 |
| `00301` | 00301 |
| `00501` | 00501 |
| `00600` | 00600 |
| `00700` | 00700 |
| `00701` | 00701 |
| `00801` | 00801 |
| `00900` | 00900 |
| `01000` | 01000 |
| `01001` | 01001 |
| `01100` | 01100 |
| `01101` | 01101 |
| `01200` | 01200 |
| `01201` | 01201 |
| `01300` | 01300 |
| `01400` | 01400 |
| `01500` | 01500 |
| `01501` | 01501 |
| `01600` | 01600 |
| `01700` | 01700 |
| `01800` | 01800 |
| `01900` | 01900 |
| `02000` | 02000 |
| `02100` | 02100 |
| `02200` | 02200 |
| `02300` | 02300 |
| `02400` | 02400 |
| `02500` | 02500 |
| `02501` | 02501 |
| `02600` | 02600 |
| `02700` | 02700 |
| `02800` | 02800 |
| `02900` | 02900 |
| `03000` | 03000 |
| `03100` | 03100 |
| `03200` | 03200 |
| `03300` | 03300 |
| `03400` | 03400 |
| `03500` | 03500 |
| `03600` | 03600 |
| `03700` | 03700 |
| `03800` | 03800 |
| `03900` | 03900 |
| `04000` | 04000 |
| `04200` | 04200 |
| `04300` | 04300 |
| `04400` | 04400 |
| `04500` | 04500 |
| `04600` | 04600 |
| `04800` | 04800 |
| `04900` | 04900 |
| `05000` | 05000 |
| `05200` | 05200 |
| `05300` | 05300 |
| `05500` | 05500 |
| `05800` | 05800 |
| `06000` | 06000 |
| `06500` | 06500 |
| `06800` | 06800 |
| `06900` | 06900 |
| `07000` | 07000 |
| `07200` | 07200 |
| `07500` | 07500 |
| `07800` | 07800 |
| `08000` | 08000 |
| `08500` | 08500 |
| `08600` | 08600 |
| `09000` | 09000 |
| `10000` | 10000 |
| `10500` | 10500 |
| `11000` | 11000 |

## Column provenance

Every field maps 1:1 to a column in the `CIFP_CONTROLLED_AIRSPACE` table of `nasr.db`. Original FAA column names:

| GraphQL field | SQLite column |
|---|---|
| `recordType` | `RECORD_TYPE` |
| `customerAreaCode` | `CUSTOMER_AREA_CODE` |
| `sectionCode` | `SECTION_CODE` |
| `icaoCode` | `ICAO_CODE` |
| `airspaceType` | `AIRSPACE_TYPE` |
| `airspaceCenter` | `AIRSPACE_CENTER` |
| `sectionCode2` | `SECTION_CODE_2` |
| `airspaceClassification` | `AIRSPACE_CLASSIFICATION` |
| `multipleCode` | `MULTIPLE_CODE` |
| `sequenceNumber` | `SEQUENCE_NUMBER` |
| `continuationRecordNo` | `CONTINUATION_RECORD_NO` |
| `level` | `LEVEL` |
| `timeCode` | `TIME_CODE` |
| `notam` | `NOTAM` |
| `boundaryVia` | `BOUNDARY_VIA` |
| `latitude` | `LATITUDE` |
| `longitude` | `LONGITUDE` |
| `arcOriginLatitude` | `ARC_ORIGIN_LATITUDE` |
| `arcOriginLongitude` | `ARC_ORIGIN_LONGITUDE` |
| `arcDistance` | `ARC_DISTANCE` |
| `arcBearing` | `ARC_BEARING` |
| `rnp` | `RNP` |
| `lowerLimit` | `LOWER_LIMIT` |
| `unitIndicator` | `UNIT_INDICATOR` |
| `upperLimit` | `UPPER_LIMIT` |
| `unitIndicator2` | `UNIT_INDICATOR_2` |
| `controlledAirspaceName` | `CONTROLLED_AIRSPACE_NAME` |
| `fileRecordNo` | `FILE_RECORD_NO` |
| `cycleDate` | `CYCLE_DATE` |
