Weather

Background

Weather conditions will dictate your final decision on whether a planned mission can be flown safely and with a successful outcome. Factors to consider include:

  • manufacturer’s stated operating envelope and limitations
  • Part 107 operating limitations
  • effect of wind direction and speed on range
  • rapid battery drain in cold temperatures
  • visibility and lighting conditions needed for photo/video capture

The overall weather outlook provided by your local news will outline basic conditions (thunderstorm? blizzard? hot and sunny?) but not the fine-grained information needed for a flight feasibility assessment.

The DFlight /wx-forecast endpoints provide hourly forecast information a fine-grained (2.5 km) grid for specific flight-impacting weather elements. Forecasts are updated hourly and extend from current hour to 24 hours in the future.

Weather Element wxtypes Value Units Special Values
Air Temperature TEMP Degrees Celsius 9999: no forecast available at  grid point
-100: unlimited ceiling ( > 12,000 FT AGL)
Cloud Ceiling CIG Meters AGL 9999: no forecast available at  grid point 
Cloud Cover SKY Percent 9999: no forecast available at  grid point 
Dewpoint Temperature DEWPT Degrees Celsius 9999: no forecast available at  grid point 
Visibility VIS Meters 9999: no forecast available at  grid point 
Wind Direction WINDDIR 10's of Degrees 9999: no forecast available at  grid point 
Wind Gust Speed WINDGUST Meters/Second 9999: no forecast available at  grid point 
Wind Speed WINDSPEED Meters/Second 9999: no forecast available at  grid point 

The Weather request body

As with all information categories available in DFlight there are three endpoints for weather, one for each way you can define your geographic area of interest. In addition to the area definition, /wx-forecast endpoints  have two additional required elements: 

  • wxtypes – list of weather forecast elements you want to retrieve (allowed values are shown in the table above)
  • hours –  number of hourly forecasts to return (1-24). For current hour only you should enter value of 1. To also retrieve values for each of the next n hours, enter n.

Examples:

  •  distance request (POST to https://dflight-api.ljaero.com/us/v1/wx-forecast/distance-query)
    {
      "longitude": -88.41,
      "latitude": 44.23,
      "distance": 3550,
      "wxtypes": ["SKY", "CIG"],
      "hours": 5
    }
  • route request (POST to https://dflight-api.ljaero.com/us/v1/wx-forecast/route-query)
    {
      "route": {
        "type": "LineString",
        "coordinates":
          [
              [-104.94884809009014, 39.828438740725886],
              [-104.93500548277288, 39.858552306098176],
              [-104.90991575701030, 39.877255920187420],
              [-104.89030539664446, 39.910776850667050]
           ]
      },
      "wxtypes": ["WINDDIR","WINDSPEED"],
      "hours": 8
    }
  • polygon request (POST to https://dflight-api.ljaero.com/us/v1/wx-forecast/polygon-query)
    {
      "poly": {
          "type": "Polygon",
          "coordinates": [[
                [-94.16392027754458, 45.5591076309486],
                [-94.11883542204833, 45.6153493183512],
                [-94.20556002646026, 45.5945463160222],
                [-94.16392027754458, 45.5591076309486]
             ]]
          },
      "wxtypes": ["TEMP","DEWPT"],
      "hours": 10
    }

The Weather response body

As with all request types (except airspace), the response body is a json object containing a single element named found. The contents of found will be a GeoJSON FeatureCollection with one Feature per forecast point relevant to your requested area of interest. Note that forecast locations outside of your requested area can sometimes be included.

There are two reasons for this. First, given the 2.5 km spacing of the forecast points your requested area might contain no points at all. Second, the boundary of your requested area may have equidistant forecast points inside and outside of the area. In this case you would want both in order to interpolate values at the boundary.

The properties given for each returned Feature are in the form of ordered lists, one per forecast hour requested. There will always be an hours list which holds the valid date/time values for the accompanying forecast elements. The element lists included in the result will correspond to the wxtype values you included in your request.

A practical example

We are planning for a flight today under Part 107 and have some flexibility on the exact time to conduct the operation. The operation will be confined to 3 km from the launch site. In the morning, we check the weather forecast to get a better idea of what time to plan for. Part 107 requires:

  • minimum flight visibility of 3 statute miles (4828 m)
  • minimum distance of 500 feet (152.4 m) below clouds

Assuming we wish to fly at altitudes between 300 and 400 feet, this means the ceiling will need to be 900 ft (274.32 m) or higher.

We request ceiling and visibility forecasts for the next 5 hours:

{
  "latitude": 40.761,
  "longitude": -73.983,
  "distance": 3000,
  "wxtypes": ["CIG", "VIS"],
  "hours": 5
}

and POST to the https://dflight-api.ljaero.com/us/v1/wx-forecast/distance-query endpoint.

Response JSON
{
  "found": {
    "type": "FeatureCollection",
    "features": [
      {
        "type": "Feature",
        "geometry": {
          "type": "Point",
          "coordinates": [
            -74.003922,
            40.757555
          ]
        },
        "properties": {
          "cig": [
            276,
            276,
            332,
            548,
            820
          ],
          "vis": [
            7889,
            9553,
            16256,
            16209,
            16256
          ],
          "hour": [
            "JAN 06 2023 15:00",
            "JAN 06 2023 16:00",
            "JAN 06 2023 17:00",
            "JAN 06 2023 18:00",
            "JAN 06 2023 19:00"
          ]
        }
      },
      {
        "type": "Feature",
        "geometry": {
          "type": "Point",
          "coordinates": [
            -73.975305,
            40.754169
          ]
        },
        "properties": {
          "cig": [
            276,
            276,
            332,
            460,
            820
          ],
          "vis": [
            6353,
            9553,
            16256,
            16209,
            16256
          ],
          "hour": [
            "JAN 06 2023 15:00",
            "JAN 06 2023 16:00",
            "JAN 06 2023 17:00",
            "JAN 06 2023 18:00",
            "JAN 06 2023 19:00"
          ]
        }
      },
      {
        "type": "Feature",
        "geometry": {
          "type": "Point",
          "coordinates": [
            -73.999453,
            40.779232
          ]
        },
        "properties": {
          "cig": [
            276,
            276,
            332,
            548,
            820
          ],
          "vis": [
            7889,
            9553,
            16256,
            16209,
            16256
          ],
          "hour": [
            "JAN 06 2023 15:00",
            "JAN 06 2023 16:00",
            "JAN 06 2023 17:00",
            "JAN 06 2023 18:00",
            "JAN 06 2023 19:00"
          ]
        }
      },
      {
        "type": "Feature",
        "geometry": {
          "type": "Point",
          "coordinates": [
            -73.97083,
            40.775845
          ]
        },
        "properties": {
          "cig": [
            332,
            244,
            276,
            460,
            820
          ],
          "vis": [
            11217,
            11217,
            16256,
            16209,
            16256
          ],
          "hour": [
            "JAN 06 2023 15:00",
            "JAN 06 2023 16:00",
            "JAN 06 2023 17:00",
            "JAN 06 2023 18:00",
            "JAN 06 2023 19:00"
          ]
        }
      }
    ]
  }
}

Visibility is within legal limits at all times, but the ceiling looks like it could be too low – or at best marginal – until 18:00z. So we schedule the flight to take place between 18:00 Z and 19:00Z.