Operational weather forecasting agencies generate forecasts using one or more numerical weather forecast models. At any given time, there are a number of forecasts available to use, including National Oceanic and Atmospheric Administration's (NOAA's) Global Forecast System (GFS) or the European Center for Medium-Range Weather Forecast's (ECMWF's) high resolution forecasts (HRES). In addition, some agencies produce ensemble forecasts, such as ECMWF's ensemble prediction system (ENS), which comprise a set of forecasts run slightly differently (i.e., slight variation of its initial conditions and with slightly perturbed weather models) to produce a probabilistic forecast (i.e., a range of future weather possibilities). Each of these weather forecast data sources have their strengths and weaknesses in terms of accuracy in certain situations (e.g., types of weather, locations, times, climates), and for any given time and location, some forecasts will perform better than others.
Traditionally meteorologists manually select or blend forecasts from different sources to generate bespoke forecasts for specific situations, but many use cases can benefit from a service that can analyze forecast data from multiple sources against observed weather data in real time (i.e., directly after source data is updated or directly after observation data is updated), and provide optimized weather forecasts for desired locales and/or situations by selecting more accurate, or blending combinations of, weather forecast data for such locales and situations based on data and statistical models, rather than human intuition and knowledge.
Thus, there is a need for an intelligent weather data service capable of providing optimized weather forecast data using real time weather observation data in response to varying weather forecast requests.
The present disclosure provides for techniques relating to an intelligent weather data service for providing optimized weather forecast data using real time weather observation data in response to weather forecast requests. A weather data system may include a scorer job configured to obtain weather observation data and weather forecast data from a plurality of weather data sources and to generate a plurality of error scores for the weather forecast data over a predetermined time period, each of the plurality of error scores corresponding to one of the plurality of weather data sources and indicating, for a cell on a grid map, an amount or a probability of error in the weather forecast data by a weather data source in relation to the weather observation data; an observations index configured to index the weather observation data; a data store configured to store the plurality of error scores; and a fusion layer configured to receive and respond to a weather data request using the plurality of error scores.
In some examples, the weather observation data is indexed by the observations index according to the grid map. In some examples, the grid map represents a region of interest and is divided into a plurality of cells. In some examples, the plurality of cells comprise S2 cells. In some examples, the region of interest is the Earth. In some examples, the plurality of weather data sources comprises an output of a numerical weather forecast model. In some examples, the plurality of weather data sources comprises an ensemble output from an ensemble model.
A method for evaluating accuracy of weather forecasts includes obtaining, by a scorer job, weather forecast data from two or more weather data sources; obtaining, by the scorer job, weather observation data for one or more cells on a grid map from an observations index; generating a plurality of error scores, the plurality of error scores comprising an error score for each of the weather data sources for each of the one or more cells, each of the plurality of error scores representing an average error over a predetermined time period; storing the plurality of error scores in a data store; and generating an updated plurality of error scores.
In some examples, the one or more cells corresponds to a location of interest. In some examples, generating the plurality of error scores includes determining a root mean square error (RMSE) for each of the one or more cells between each of the two or more weather data sources and corresponding weather observation data. In some examples, generating the plurality of error scores includes determining a centered root mean square error (CRMSE) for each of the one or more cells between each of the two or more weather data sources and corresponding weather observation data. In some examples, generating the updated plurality of error scores includes updating an error score for each of the plurality of error scores in an order of the one or more cells using a most recent update of each of the two or more weather data sources. In some examples, generating the updated plurality of error scores includes updating an error score for a cell when a new weather observation for the cell is available from the observations index. In some examples, generating the updated plurality of error scores includes updating an error score for a cell when an update from at least one of the two or more weather data sources becomes available. In some examples, the predetermined time period comprises an amount of time it takes to generate the plurality of error scores for the one or more cells on the grid map.
A method for providing intelligent weather data service includes obtaining, by a fusion layer, a plurality of error scores for a predetermined time period, the plurality of error scores comprising an error score for a cell on a grid map and for each of two or more weather data sources; receiving a weather data request; selecting weather forecast data from one or more of the two or more weather data sources to include in a response to the weather data request, the weather forecast data selected based on error scores corresponding to the two or more weather data sources; and generating the response to the weather data request, the response comprising desired weather forecast data based on the weather forecast data that was selected.
In some examples, selecting weather forecast data is based on a lowest error score for a location or a region indicated in the weather data request, the location or the region being represented by the cell on the grid map. In some examples, selecting weather forecast data is based on a lowest error score for a time period indicated in the weather data request. In some examples, selecting weather forecast data is based on a lowest error score for a time of day indicated in the weather data request. In some examples, selecting weather forecast data is based on a lowest error score for a season indicated in the weather data request. In some examples, selecting weather forecast data comprises determining a weighted average of the error scores corresponding to the two or more weather data sources. In some examples, selecting weather forecast data comprises generating an ensemble.
The figures depict various example embodiments of the present disclosure for purposes of illustration only. One of ordinary skill in the art will readily recognize from the following discussion that other example embodiments based on alternative structures and methods may be implemented without departing from the principles of this disclosure, and which are encompassed within the scope of this disclosure.
The Figures and the following description describe certain embodiments by way of illustration only. One of ordinary skill in the art will readily recognize from the following description that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles described herein. Reference will now be made in detail to several embodiments, examples of which are illustrated in the accompanying figures.
The above and other needs are met by the disclosed methods, a non-transitory computer-readable storage medium storing executable code, and systems for dispatching fleets of aircraft by a fleet management and flight planning system. The terms “aerial vehicle” and “aircraft” are used interchangeably herein to refer to any type of vehicle capable of aerial movement, including, without limitation, High Altitude Platforms (HAPs), High Altitude Long Endurance (HALE) aircraft, unmanned aerial vehicles (UAVs), passive lighter than air vehicles (e.g., floating stratospheric balloons, other floating or wind-driven vehicles), powered lighter than air (LTA) vehicles (e.g., balloons and airships with some propulsion capabilities), fixed-wing vehicles (e.g., drones, rigid kites, gliders), various types of satellites, rockets, space stations, and other high altitude aerial vehicles.
The invention is directed to an intelligent weather data service. Weather forecast data may be obtained from various weather data sources, each weather data source having different strengths (e.g., because of differences in approach, or different ensemble runs. The system includes a scorer job, a model score data store, an observations index, and a fusion layer. The scorer job is a process configured to query weather forecast data from multiple weather data sources (e.g., NOAA's GFS, ECMWF's HRES, ECMWF's ENS, and other ensembles), as well as weather observations (e.g., organized in an index or other database structure), and calculate an average error according to a model (e.g., based on root mean square error (RMSE), centered root mean square error (CRMSE), or other similar error metric) during a preceding period of time (e.g., N hours). An observations index may be configured to provide access to said weather observations for one or more geographic regions (e.g., Earth or parts thereof). In some examples, the one or more geographic regions are divided into cells (e.g., s2 cells on a grid of Earth), and weather observations are indexed for each cell in the observations index. The scorer job may generate error scores for each of the weather data sources (e.g. output of a numerical weather forecast model such as GFS or HRES, an ensemble of an ensemble model run such as ECMWF's ENS, and the like) for each cell for a given preceding period of time and store it in a model score data store, each error score corresponding to a cell and a weather data source. For example, an error score may indicate an amount or a probability of error in the weather forecast data by a weather data source in relation to the weather observation data for a cell. In another example, an error score may indicate a baseline a priori estimate of typical error and quality of each source. In some examples, the scorer job also may perform other statistical post-processing of the weather forecast data. In other examples, a post-processed model may be an alternative source of weather data (e.g., post-processing of the weather forecast data occurs separate from scorer job). In some examples, the model score data store may store the error scores by cell (e.g., corresponding to cells in the observations index).
The fusion layer may be configured to receive a request for weather data (e.g., from one or more clients) and to respond to said request by selecting or combining forecast data from the weather data sources according to the error scores generated by the scorer job and stored in the model score data store. Such requests may be for the most accurate weather data for one or more of a given location or region. In some examples, a request may further include criteria such as time of day, season, or other time frame. The fusion layer also may be configured to return the most accurate data given how well observations (i.e., actual “real life” weather data) match with a forecast (e.g., to date, during a selected time period, or other time frame). In an example, the fusion layer may select a forecast with the lowest error score. In another example, the fusion layer may select a weighted average of forecasts with weights constructed based on error scores associated with the forecast data. In still other examples, the fusion layer may generate other reasonable combinations of the forecast data using the error scores (e.g., other ensembles). In other examples, other factors (e.g., which model tends to be better, overall or at a particular time or location, a priori expectations for a given parameter in a time period or season, a given time of day, or other reasonable bucketing (i.e., aspect, view or categorization)) may be considered with, or used in the absence of, any observations in a given region or location. In returning forecast data to a client, the fusion layer may obtain the forecast data directly from the weather data source(s).
Each weather data source may publish updates at different time intervals. The scorer job may update the error score for each cell in a number of ways: (a) round robin style cell-by-cell using the most recent update to each forecast from each weather data source that is available at the time of update for that cell, (b) asynchronously (e.g., Pub/Sub, wherein the weather data sources are Publishers and the scorer job is a Subscriber), (c) ad hoc (e.g., updating a cell whenever a new observation is provided for that cell), and (d) other cadence (e.g., a predetermined time period, after a threshold number of weather data sources have published weather forecast updates since the last error score update).
Scorer job 116 may be configured to query weather forecast data from sources 112 and weather observations from observations index 114. Scorer job 116 further may be configured to calculate an average error for each cell represented in observations index 114, and for each of sources 112, according to an analytical model (e.g., based on root mean square error (RMSE), centered root mean square error (CRMSE), or other similar error metric). Scorer job 116 may calculate the average error based on said weather forecast data and a corresponding weather observation. Scorer job 116 may generate error scores for each of sources 112 based on an analysis of an output of a numerical weather forecast model or an ensemble of an ensemble model run (e.g., against weather observations 114a-n according to an analytical model), for each cell for a given preceding period of time. Scorer job 116 may be configured to store said error scores (e.g., error scores 118a-n) in model score data store 118. In some examples, error scores 118a-n may be correspondingly stored according to cells representing geographical locations. For example, weather observation 114a may correspond to the same cell as error score 118a, and weather observation 114n may correspond to the same cell as error score 118n. In some examples, each of error scores 118a-n may comprise an individual error score for each of sources 112.
In some examples, each of sources 112a-n may have a refresh or update rate, which may be the same or different than another of sources 112a-n. In an example, as shown, GFS and ENS-N both refresh at the same rate (e.g., every 10 minutes or 10 hours), ENS-1 and ENS-2 refresh at the same rate (e.g., every 8 minutes or 8 hours), and HRES refreshes at its own different rate (e.g., every 20 minutes or 20 hours). In another examples, all sources 112 may be refresh at a same rate, or even standardized to refresh at the same (i.e., synchronously). In yet another example, each of sources 112 may refresh at different times.
Scorer job 116 may update error scores 118a-n in a number of ways: (a) round robin style cell-by-cell in an order (e.g., from weather observation 114a through weather observation 114n) using the most recent update of each forecast or ensemble from sources 112 available at the time of update for that cell, (b) asynchronously, (c) ad hoc (e.g., updating the error score for a cell whenever a new observation is available from observations index 114 for that cell), and (d) other cadences (e.g., a predetermined time period, after a threshold number of sources 112 have published updates since the last error score update).
Fusion layer 120 may be configured to receive a request for weather data from one or more of clients 122a-n, and to respond to said request by selecting or combining forecast data from one or more of sources 112 according to error scores 118a-n, as generated by scorer job 116 and stored in model score data store 118. Such requests may be for accurate weather data for a given location or region, a given time period or season, a given time of day, or other parameter or combination of parameters. Fusion layer 120 may be configured to return accurate weather data based on how well observations (i.e., actual “real life” weather data) match with a forecast (e.g., to date, during a selected time period, or other time frame). In an example, the fusion layer may select a forecast with the lowest error score for the requested location, region, time period, time of day, season, or combination thereof. In another example, the fusion layer may select a weighted average of the forecast data. In still other examples, the fusion layer may generate other reasonable combinations of the forecast data using the error scores (e.g., ensembles). In other examples, other factors (e.g., which model tends to be better, overall or at a particular time or location) may be considered with, or in the absence of, any observations in a requested region or for a requested location (e.g., cell). In returning forecast data to a client, the fusion layer may obtain the forecast data directly from the selected one(s) of sources 112.
An updated plurality of error scores may be generated at step 210. In some examples, generating the updated plurality of error scores may occur for each of the plurality of error scores in an order of the one or more cells using a most recent update of each of the two or more weather data sources. In some examples, generating the updated plurality of error scores may occur ad hoc, for example, a cell may be updated when a new weather observation for the cell is made available by the observations index. In some examples, generating the updated plurality of error scores may occur for some or all of the one or more cells when an update from at least one of the two or more weather data sources becomes available.
Computing device 401 also may include a memory 402. Memory 402 may comprise a storage system configured to store a database 414 and an application 416. Application 416 may include instructions which, when executed by a processor 404, cause computing device 401 to perform various steps and/or functions, as described herein. Application 416 further includes instructions for generating a user interface 418 (e.g., graphical user interface (GUI)). Database 414 may store various algorithms and/or data, including neural networks (e.g., encoding flight policies or planning algorithms) and data regarding wind patterns, weather forecast data, weather observations, past and present locations of aerial vehicles, sensor data, map information, air traffic information, among other types of data. Memory 402 may include any non-transitory computer-readable storage medium for storing data and/or software that is executable by processor 404, and/or any other medium which may be used to store information that may be accessed by processor 404 to control the operation of computing device 401.
Computing device 401 may further include a display 406, a network interface 408, an input device 410, and/or an output module 412. Display 406 may be any display device by means of which computing device 401 may output and/or display data. Network interface 408 may be configured to connect to a network using any of the wired and wireless short-range communication protocols described above, as well as a cellular data network, a satellite network, free space optical network and/or the Internet. Input device 410 may be a mouse, keyboard, touch screen, voice interface, and/or any or other hand-held controller or device or interface by means of which a user may interact with computing device 401. Output module 412 may be a bus, port, and/or other interface by means of which computing device 401 may connect to and/or output data to other devices and/or peripherals.
In one embodiment, computing device 401 is a datacenter or other control facility (e.g., configured to run a distributed computing system as described herein), and may communicate with a controller and/or flight control system (e.g., to provide desired weather forecast data). As described herein, system 400, and particularly computing device 401, may provide weather forecast data for planning a launch and flight path for an aerial vehicle (e.g., along a desired heading or within a desired radius of a target location), a service location, or other location from which an aerial, terrestrial, or water vehicle may fly, sail, drive, float, or otherwise travel to, through and from. Various configurations of system 400 are envisioned, and various steps and/or functions of the processes described below may be shared among the various devices of system 400 or may be assigned to specific devices.
In
In another example, a client device may request accurate weather forecast data for a time period for cell 503d to plan a service flight for vehicle 502d. Various types of services (e.g., providing LTE or other Internet connectivity, making Earth observations, gathering environmental data) for location 501d may be desired for a given time period, and accurate weather forecast data may be helpful to plan the service flight (e.g., select a type of aircraft, determine a flight path).
In some examples, map 500 may comprise a grid map broken up into a plurality of cells (not shown). The plurality of cells may divide map 500 into portions or sections in the shape of cell 503a, 503d and/or 503g.
While specific examples have been provided above, it is understood that the present invention can be applied with a wide variety of inputs, thresholds, ranges, and other factors, depending on the application. For example, the time frames and ranges provided above are illustrative, but one of ordinary skill in the art would understand that these time frames and ranges may be varied or even be dynamic and variable, depending on the implementation.
As those skilled in the art will understand, a number of variations may be made in the disclosed embodiments, all without departing from the scope of the invention, which is defined solely by the appended claims. It should be noted that although the features and elements are described in particular combinations, each feature or element can be used alone without other features and elements or in various combinations with or without other features and elements. The methods or flow charts provided may be implemented in a computer program, software, or firmware tangibly embodied in a computer-readable storage medium for execution by a general-purpose computer or processor.
Examples of computer-readable storage mediums include a read only memory (ROM), random-access memory (RAM), a register, cache memory, semiconductor memory devices, magnetic media such as internal hard disks and removable disks, magneto-optical media, and optical media such as CD-ROM disks.
Suitable processors include, by way of example, a general-purpose processor, a special purpose processor, a conventional processor, a digital signal processor (DSP), a plurality of microprocessors, one or more microprocessors in association with a DSP core, a controller, a microcontroller, Application Specific Integrated Circuits (ASICs), Field Programmable Gate Arrays (FPGAs) circuits, any other type of integrated circuit (IC), a state machine, or any combination of thereof.