Processing of the Wind Data by the National Weather Service:

An Exercise in Throwing Away Information


Charles A. Doswell III

Norman, Oklahoma


Last updated: 23 September 2006

Disclaimer: This essay has no official sanction and does not represent anyone's opinion other than mine; it certainly is not attributable to any organization or anyone within my organization other than me. Its original incarnation was several years ago, in a galaxy far, far away.

Summary: As many of you may not know the details of the NWS algorithm for computing the winds, I am going to supply a brief summary of the method and its history. Then I'm going to show how absurd it is to be doing wind computations in this superannuated way at the current time. In the process, I will describe a simple method for processing winds that takes advantage of the current system for saving the information needed to compute the winds. Finally, my proposed method will be applied to a wind profile from the Norman, Oklahoma sounding site and compared to the NWS method. I'll let you be the judge of the results. Comments are welcomed via e-mail at

Click on the small versions of the figures to see full-sized versions.


1. Finding the wind from tracking a sonde or balloon

Basically, the wind information in NWS soundings is found by tracking the sonde via a radiotheodolite. The radiotheodolite is a system for tracking the balloon's radio signal. This is in principle the same process used in doing "pilot balloon" (or "pibal") observations - an observation system that was dropped by the NWS sometime in the late 1960s or early 1970s. An optical theodolite (used for manual balloon tracking during pibal is sort of like a surveyor's transit; by keeping the balloon centered in the cross hairs of the theodolite, the azimuth and elevation angles to the balloon are tracked and recorded at regular intervals. A radiotheodolite does all this automatically, printing out and recording azimuth and elevation angles.

A little elementary geometry:

Fig. 1

says that if you've obtained azimuth and elevation angles, this is not enough information to fix the position of the sonde (or pibal) in 3-d space. In order to do so, you need either the height of the sonde (or pibal) or the slant range. For a pilot balloon, it is assumed that each balloon rises at the same rate and its height at intervals is simply entered from a table. Of course, with two theodolites tracking the balloon and recording azimuths and elevations simultaneously, it's possible to dispense with this assumption. Proof of that is left to the reader, if a proof is required by that reader.

For the rawinsonde, the height computed from the hypsometric calculations is used to determine the heights of pressure levels, as described in standard textbooks. If a rawinsonde is equipped with a "transponder," it is possible to determine the slant range by the elapsed time it takes to send a radio signal to the sonde and for the sonde to return a signal to the tracking system, thereby eliminating the need for the assumptions used in hypsometry.

Now, let the x-coordinate be the eastward-pointing axis on Fig. 1, and the y-coordinate with the northward pointing axis. Further assume the "ordinary" rawinsonde case (no transponder) so that the "knowns" are the two angles and the height, H. In order to determine the wind, the horizontal position as a function of time must be known. The slant range, R, is found from H by


and then the distance to the horizontal projection point of the balloon, r, is simply


Knowing r, the x-y coordinates of the balloon are given by


Obviously, then, the speed of the balloon's horizontal movement (assumed to be equal to the wind, so that the balloon is stationary with respect to the air at any level) is given by the time derivative of its (x-y) coordinates:


noting that


Using these equations and the measured time changes in sonde height, azimuth, and elevation, we can obtain the (x,y) component velocities of the wind. These can be converted to speed, S, and direction, D, of the wind by


This is all abstract to this point. How are these things actually done in the NWS? Consider the "track" of the sonde on the surface

Fig. 2

This shows locations plotted at regular intervals in time along the track, so the speed is associated with the distance traveled during that time and the direction is along the line between points. As seen in the figure, there is reason to suspect a certain amount of "noise" in the data, due to various sources of uncertainty in the measurements. Hence, it would be reasonable to smooth the data somewhat.

Back in the old days, position information was recorded every minute (60 seconds, in case anyone has totally lost their memory) and the smoothing method basically consisted over doing 2-minute overlapping "averages" by the method shown:

Fig. 3

This process resulted in winds at one-minute intervals that represented a sort of "average" over a two-minute period; these became known as the "minute winds" in NWS jargon.

From the "minute winds" in a rawinsonde an interpolation procedure (the nature of which is poorly-documented and certainly not known to me) gave winds at "standard" levels, typically one or two such height levels referenced to the ground (hence, "AGL," standing for "above ground level) and then reverting to heights above mean sea level (MSL), first at 1000-foot intervals, then at 2000-foot intervals, and finally at 5000 foot intervals. So a sounding at a station with a height of 3300 feet above mean sea level might report at some "1st standard level AGL" (the exact procedure for selecting this 1st standard level is not known to me) like 3500 ft (MSL), then at 4000, 6000, 7000, 8000, 9000, 12 000, 14 000, 16 000, 20 000, 25 000 ... foot levels MSL. These winds would appear in the "PPBB" section of the sounding report. The reason 5000, 10 000, 18 000, ... foot levels are missing is because those winds are assumed to be similar to the reported winds (also interpolated from the "minute winds") at 850 mb, 700 mb, 500 mb, ...; i.e., the mandatory pressure levels that appear in the "TTAA" part of the sounding report.

This procedure was implemented when soundings were worked up totally by hand. The wind information was plotted by hand on a plotting board that resembled Fig. 2 and some special devices enabled a technician to extract the "minute winds" directly from that plot. There were various table look-up and slide rule-type devices used in the workup of the sounding, and a comparable procedure was used for pibals.

Note that there are details in this discussion that have been omitted. The procedure for the "averaging" to obtain the "minute winds" changes somewhat, depending on what heights are involved, and so on. These details are not considered to be very important in what follows.


2. Why the NWS scheme is inappropriate for the modern era

During the conversion to the automated radiotheodolite (ART) procedure (done via a computer) for working up a sounding, the foregoing procedure was simply encoded verbatim into the program that works up the sounding. This "freezing" of a procedure during a phase of automation is typical of the NWS approach to automation. Among the changes instituted, however, was the recording of data at 6-second intervals during the sounding. Thus, there was ten times the information available in any given sounding compared to the previous 1-min information; specifically, ten times the frequency of reporting azimuth and elevation angles (as well as sonde heights), the information used in working up the winds.

Rather than changing the wind computational procedure to reflect this new wealth of information, the NWS chose to retain the procedure described above! However, there has been one minor concession in the calculation: consider

Fig. 4

showing the time series of 6-second observations. The 6-sec interval data points either side of the 1-min values are used to compute average position information at the 1-min interval points to be used in the standard method. Hence, the "new" scheme only ignores 70% of the 6-sec data. This seems rather wasteful, but it could have been worse; they might have ignored 90% of the 6-sec data!

As already noted, this choice is a reflection of the "this is the way we've always done things" philosophy that seems to drive most of the automation process. It seemed to me that a whole array of smoothing techniques could be applied to the 6-sec data that would not have been sensible with 1-min interval recording. Therefore, I was interested in seeing what might happen if a scheme were devised for wind processing that used all the 6-sec wind information, but filtered the position data before computing the winds. Therefore, I secured a 6-sec interval data set from a sounding (Ascent 1302) at Norman Oklahoma (on 1200 UTC, 17 September 1991) to use as a test, provided to me by the staff at the NWS Forecast Office before the 6-sec data were lost.*

* The 6-sec data have been, up until recently, lost owing to the overwriting of the diskettes on which they are written at the time the sounding. That is, the 6-sec data weren't being archived (thanks to, among others, Bill Blackmore, for struggling to see that these valuable data would no longer be discarded). Amazing to think of the price paid to acquire such data, only to see it vanish ... don't get me started on the rawinsonde program in today's NWS! Even now the wind workup for the coded rawinsonde reports is still being done the old-fashioned way.

Once I had the data, I chose to use a running Gaussian time filter, with relative weights defined by


where n is the number of 6-sec data points either side of the current point (n=0 at the current point) and l is the shaping parameter, set equal to 6.0. Since the radiotheodolite has a searching pattern to maintain a track on the balloon, the pointing information recorded has a high frequency cycle imposed on it that is attributable to the searching algorithm. Moreover, there is some noise inherent in the measurements that should be filtered out. This relative weights using this filter are shown in

Fig. 2

A cut-off value of n=12 is used, somewhat arbitrarily, as a point beyond which the weighting has become negligible. At n=13, the relative weight is down from a value of 1.0 at n=0 to a value of 0.00915, which is less than 1% of the central value. The actual weight used during the analysis is the relative weight divided by the sum of the weights (~10.6), to avoid adding a bias to the filtered field. A Gaussian filter has a Gaussian response function; Gaussian filters form the basis of a lot of meteorological data analysis (see, e.g., Caracena et al. 1984). The choice of a Gaussian filter function is more by convenience than by any compelling advantage of Gaussian smoothers over many other possible choices.

In order to deal with the beginning of the time series, the input data to the filter are simply artificially reflected about time t=0 back to 12 time intervals less than t=0, and the filter is applied to the artificially extended time series. Note that (x,y) values are computed from the height and angle data first, and the filter is applied to the (x,y) position data that will be used in the wind computations according to the analysis in section 1. Since the test data were not analyzed through the full depth of the sounding, the time series of observations was extended forward to 12 points beyond the last analyzed time.

Note that the complex trigonometric analysis done in section 1 is not necessary to compute the winds once (x,y) coordinate positions are obtained at 6-sec intervals. To find the (u,v) wind components, only simple time differencing is necessary. I used a simple backward differencing scheme described by


This process means that all of the 6-sec data are used and winds can be obtained at the same interval as the data collection: 6-sec winds. For comparison, the current NWS algorithm was used with the same data (unsmoothed) and in the next section a comparison of the results will be shown.


3. Results of a comparison test

To illustrate the nature of the position data, a plot of the (x,y) coordinates is shown in

Fig. 6

with the smoothed position data superimposed on the raw data. To the resolution of the plot, there is little discernible difference, so the smoothing has only a very small effect on the inferred surface projection of the sonde trajectory. Obviously, this is an indication that things are going rather well. The greatest changes attributable to the smoothing are early in the flight.

Next, consider the time series plot of the wind components in

Fig. 7

As shown by the superimposed points based on the current NWS algorithm, the 6-sec winds are quite compatible with those produced by the current NWS scheme, but show much more detail. One point is noted on the figure where the NWS scheme seems to have been victimized by some sort of noise near one of the "one-minute" points that the 12-sec smoothing was unable to handle. Thus, the 6-sec winds are actually smoother than the current method can provide. I think it's obvious that a lot of the detail in the winds has been lost. Naturally, to what extent this detail is credible is another issue, not to be explored here.

This is even more apparent in the vertical wind profile plot of the winds

Fig. 8

By using only a small fraction of the data, virtually all of the peaks and valleys in the wind profile have been truncated. Recall that the winds provided in the WMO-encoded sounding transmitted routinely (i.e., data in the "TTAA-PPBB" format) are determined by interpolation to "standard" levels from the "one minute" winds, probably by a simple linear interpolation scheme (no documentation of the process is available to me). Thus, the wind profile determined by using the transmitted wind data is a second generation product that would be even more inferior in terms of detail than what this plot shows.

An interesting viewpoint is provided by comparing hodographs

Fig. 9

Whereas it might be quite difficult to discern the behavior of the hodograph from the "one minute" winds, the 6-sec winds are both smooth and detailed. Imagine the loss of structure associated with the interpolation to "standard" levels!

What I've done with this exercise, in my opinion, is the following:

  1. shown that winds computed from the 6-sec data can be compatible with the winds derived from the old NWS scheme that creates 1-min winds,
  2. shown that smoothing the (x,y) position data with a filter provides resultant winds that are: (a) not as prone to noise problems as the NWS method, and (b) characterized by more useful detail than the NWS method,
  3. throwing away 70% of the observations is a waste of valuable information.

I invite readers of this diatribe to offer comments, criticisms, and suggestions.

NOTE: when and if the winds are computed using GPS systems, this whole essay becomes obsolete.