Airspace Advisory

The Airspace Advisory API returns all the airspace that applies to a given ruleset. Based on the concept of Contextual Airspace, AirMap's Airspace Advisory API applies the rules a pilot is flying under to various types of airspace intersecting with their flight plan, returning only relevant information.

For example, for a pilot flying near Los Angeles International Airport under the US Part 107 ruleset, a rule may state: Do not fly in Class B controlled airspace without ATC authorization. In contrast, the corresponding advisory, which takes their flight location into account, states: LOS ANGELES CLASS B AREA A no fly area, requires FAA special authorization.

AirMap's Airspace Advisory API takes in a geometry (i.e. flight area) and a ruleset identifier, returning all the relevant advisories that intersect with that flight area. As an example, let's check the airspace around Los Angeles for a commercial pilot operating under the US Part 107 ruleset:

curl "https://api.airmap.com/advisory/v1/airspace?geometry=%7B%22type%22:%22Polygon%22,%22coordinates%22:%5B%5B%5B-118.37422977821873,33.87348655670471%5D,%5B-118.36867332458498,33.863573814253485%5D,%5B-118.38066085298475,33.86018750331337%5D,%5B-118.38379367311414,33.87900537305605%5D,%5B-118.37422977821873,33.87348655670471%5D%5D%5D%7D&rulesets=usa_part_107" \
     -H "X-API-Key: <API_KEY>"  
     
## The Airspace Advisory API returns the specific advisories which apply to this flight and ruleset:

{
  "status": "success",
  "data": {
    "color": "orange",
    "advisories": [
      {
        "id": "4684250",
        "name": "HAWTHORNE CLASS D requires FAA authorization, permissible below 400 ft",
        "last_updated": null,
        "latitude": 33.8583459,
        "longitude": -118.375023,
        "distance": 757,
        "type": "controlled_airspace",
        "city": "Redondo Beach",
        "state": "California",
        "country": "USA",
        "rule_id": 5069,
        "ruleset_id": "usa_part_107",
        "properties": {
          "url": "https://www.faa.gov/uas/request_waiver/",
          "ceiling": 400,
          "airport_id": "HHR",
          "airport_name": "Jack Northrop Fld/Hawthorne Muni",
          "airspace_classification": "D",
          "type": "d"
        },
        "color": "orange",
        "requirements": {
          "notice": {
            "phone": null,
            "digital": false
          }
        }
      },
      {
        "id": "4684251",
        "name": "TORRANCE CLASS D requires FAA authorization, permissible below 400 ft",
        "last_updated": null,
        "latitude": 33.7583458,
        "longitude": -118.375023,
        "distance": 11877,
        "type": "controlled_airspace",
        "city": "Rancho Palos Verdes",
        "state": "California",
        "country": "USA",
        "rule_id": 5069,
        "ruleset_id": "usa_part_107",
        "properties": {
          "url": "https://www.faa.gov/uas/request_waiver/",
          "ceiling": 400,
          "airport_id": "TOA",
          "airport_name": "Zamperini Fld",
          "airspace_classification": "D",
          "type": "d"
        },
        "color": "orange",
        "requirements": {
          "notice": {
            "phone": null,
            "digital": false
          }
        }
      }
    ]
  }
}
let coordinates = [[
	CLLocationCoordinate2D(latitude: 38.72569753630937, longitude: -77.26924896240234),
	CLLocationCoordinate2D(latitude: 38.72569753630937, longitude: -76.88781738281250),
	CLLocationCoordinate2D(latitude: 39.02451827974919, longitude: -76.88781738281250),
	CLLocationCoordinate2D(latitude: 39.02451827974919, longitude: -77.26924896240234),
	CLLocationCoordinate2D(latitude: 38.72569753630937, longitude: -77.26924896240234)
]]

let polygon = AirMapPolygon(coordinates: coordinates)
let rulesets: [AirMapRulesetId] = ["usa_part_107", "usa_sec_336"]

AirMap.getAirspaceStatus(within: polygon, rulesetIds: rulesets) { (result) in
	
	switch result {
		
	case .error(let error):
		print(error)
		
	case .value(let airspace):

		for advisory in airspace.advisories {
			print()
			print(advisory.type.title)
			print(advisory.name)
		}
	}
}
List<String> rulesetIds = ...

AirMap.getAirspaceStatus(polygon, rulesetIds, new AirMapCallback<AirMapAirspaceStatus>() {
    @Override
    protected void onSuccess(AirMapAirspaceStatus status) {
        // Show status advisories
        AirMapLog.d(TAG, "Status: " + status);
    }

    @Override
    protected void onError(AirMapException e) {
        // Handle error
    }
});

An important property of an advisory is its color, designating its relative restrictiveness when evaluating the safety and permissibility of a flight. The overall response also includes a color corresponding to the most restrictive color returned within the list. It can be a simple and intuitive form of visually communicating risk to a pilot in your application before they make the decision to fly.

The colors correspond to the following definitions:

Color
Description

Green

There are no known advisories in this area

Yellow

There are known advisories in this area and caution should be used

Orange

Flight is regulated in this area and requires authorization to fly

Red

Flight is strictly regulated in this area (Probably not safe/legal to fly for the majority of people)


What's Next

Checking the weather

Weather