Skip to main content
Posts by:

Tim Booher

Build 3d Model of Yard

I have always believed in compensating for my lack of experience through leveraging my modeling background. With the right tools, I can hone my intuition and help my lack of experience through careful planning. I also need tools to communicate to my family, friends and any contractors my exact plans. In the past I had built small 3d sections of my yard through setting up a laser level on a high point and breaking my yard into a grid and carefully measuring with a level. The results were a 3d point cloud that I wrangled into (formerly) Google SketchUp.

My latest plans call for a shed and potentially a kitchen and house expansion. This requires a full 3d model of my entire yard and I don’t have anything close to the time required to build separate grids and compile them into a patchwork. Additionally, a key principle of mine is to match the fidelity required and all I needed was a rough sandbox for my yard — for the purposes of design only. This means I could be up to 5-10 off in elevation and still get what I want.

Two years ago, I purchased the GIS data for Alexandria, and through Matlab mapping toolbox I was able to pull up the following contours of my yard.

Image

I couldn’t think of any immediate way to get these lines into dxf or some vector format readable by SketchUp, but I was able to retrace the lines easily enough (2 hours of work, but I wanted clean splines anyway) when I combined the 2′ contour data with the following survey of my house.

Image

The problem was that it produced a terrible approximation that didn’t look like my yard. I ended up trying to approximate the yard through some basic shapes, but I ended up with this mess.

first try of 3d yard

The next try was an attempt to get the fidelity right and rely on intuition. I took a hose out and tried to keep it flat. I learned that the city plot was a lot more accurate than I originally thought. Oh well, but now I had a better model to work with. I used Autodesk Sketch on the ipad and made up the contours with my finger. Than I scanned them into visio to get some good splines.

Here is the result:

contours

landscape_update_1

With some rough pulling, I have something much closer to what I’m expecting:

landscape_update_3

 

All together this gave me exactly what I wanted, a solid 3d model that enabled me to play with my yard and start planning my shed.

3d view

3d view 2

 

By 0 Comments

Defense Acquisition Certification

Here is a post that I hope is helpful to others out there who can be paralyzed from taking action to getting professional acquisition certifications. What is the official name and background of this program? The official name is the Acquisition Professional Development Program. The Acquisition Professional Development Program (APDP) promotes the development and sustainment of a professional acquisition workforce in the Air Force. It is DoD wide. You need it because certain jobs will require you to have it. Good acquisition organizations take this seriously, because it is an easy way to weed folks out from future jobs.

Where are the best places for information? Here are the links I found useful:

  • AF acquisition careers You can find an overview of the program and the useful sites here.
  • What are the requirements for each level?Follow the guidelines for your discipline here: dap.dau.mil.
  • How do I know what level I am? Go to Acquisition Career Management System but you might need to go to (afpc secure ) first. The purpose is to go to My Civilian APDP Record and
  • Where do I sign up for courses?here
  • What is the continuous learning requirement? 80 points over two years.

What is the road ahead for me? I have a level 3 certification due date of 2014-06-03. My acquistion position is “ACQUISITION POSITION NOTCRITICAL OR DEVELOPMENTAL” and my position title is that I am a “GENERAL ENGINEER”.

What classes have I completed? 2013-11-05 SYS 101 GRADUATED 2012-08-24 CON 115 GRADUATED 2012-07-25 PMT 251 GRADUATED 2012-06-28 SAM 101 GRADUATED 2003-08-01 TST 101 GRADUATED 2003-04-18 ACQ 201B GRADUATED 2003-02-21 ACQ 201A GRADUATED 2001-12-28 ACQ 101 GRADUATED Latest continuous learning points are from: 2012-08-24 34.0 CON 115. How can I get more continous learning points? (It looks like there is a whole web site on this. I’m going to focus on getting the courses done for L2 SPRDE-SYSTEMS ENGINEER, and hope that gets me more than enough CL points.)

Continuous Learning Status My status is “CURRENT”. My last suspense was 2012-07-25 (for what?) POINTS TO DATE: 34 (what does this mean?) SUSPENSE: 2014-07-25 (this requires attention — what does that mean)

Current plan? I need to take the following: * Log 103 * Sys 101 (just as a pre-req) * Sys 202 * Sys 203 * CLE 003

Welcome TIMOTHY - here is a summary of your progress toward earning 80 Continuous Learning points (CLPs) every 24 months:

The Personnel System shows that you are in an Acquisition Coded position, and you are required to earn 80 CL points within 24 months.

 Currently, your CL suspense date is:     7/25/2014
ACQNow CL points earned this period:     34
Points needed:                                    46

 If you do not have any upcoming CL events scheduled, you might consider the following methods of earning points to help you meet the goal:
- a DAU Web based course (click here)
- a DAU Continuous Learning Module (click here)
- an AFIT Module (click here)

What/where is a list of different types of certification levels you can get?

  • Contracting
  • Systems Engineering
  • Financial Management
  • Program Management
  • Information Technology
  • Logistics
  • Scientific Research and Development
  • Test and Evaluation
  • Production, Manufacturing & Quality Assurance

So I need to get certified in Systems Engineering

Level 1 (Done)

  • Acq 101 (done)
  • Sys 101 (done)
  • CLE 001
  • CLM 017

Level 2

  • ACQ 201 A/B (done)
  • LOG 103 (20 CLP) (working now)
  • SYS 202 (9 CLP) (done)
  • SYS 203 (36 CLP)
  • CLE 003

  • 2 Year Experience, BS

Level 3

  • SYS 302
  • CLE 012
  • CLE 068
  • CLL 008

  • 4 year experience

By 0 Comments

Find corrupted images

So I deleted all my pictures, and I restored them which resulted in a bunch of corrupted images; thousands of corrupted images. To fix this, I wrote the following script in MATLAB using the image processing toolbox:

// insert blog here

Using matlab I tried to determine what a corrupted image is. First when using the image processing toolbox to open an image, I noticed:

g = imread(s);
Warning: JPEG library error (8 bit), "Corrupt JPEG data: premature end of data segment"."
Warning: JPEG library error (8 bit), "Invalid JPEG file structure: two SOI markers"."

Also, a histogram of such a file looked liked this:

histogram

So, the only challenge is to find the spike, or simply a crazy high percent of 128, the mean value. Simple enough.

cd('/media/95543211-fd8f-4fc9-9b24-3a787113e4c2/+JPEG');
jpegs = dir('.');

num_files = 100;

file_count = length(jpegs);

G = zeros(1,num_files-2);

for i = 3:(num_files+2)
    name = jpegs(i).name;
    disp(['working: ' name]);
    if true
        try
         I = rgb2gray(imread(name));
         [w, l] = size(I);
         gray_percent = sum(sum(I==128))/(w*l);
         G(i-2) = gray_percent;
         if gray_percent > 0.07
           disp(['moving . . . ' name]);
           movefile(name, ['too_much_gray/' name]);
         else
           disp(['good: ' name]);
           movefile(name, ['noerr/' name]);
         end
        catch
         disp(['bad: ' name]);
        end

    end
end

Then a script to see which images might be corrupt:

And a ruby script to move the results (yeah — really inefficient, I know).

So files that might crash matlab are at least removed.

#!/bin/bash

for f in *
do
  # echo "Processing $f file..."
  # take action on each file. $f store current file name
  if ! identify "$f" &> /dev/null; then
     echo "$f"
  fi
done

and (yes, this is silly)

#!/home/bonhoeffer/.rvm/rubies/ruby-1.9.3-p286/bin/ruby
filez = <<EOF
__003999
__026328
__029322
__032335
__035823
__035842
__036090
__038688
__039670
__048554
__048561
__048634
19991215_22_43_43_033877
19991215_22_43_43_034820
19991215_22_43_43_049844
19991215_22_43_56_038011
19991215_22_44_16_010202
20070729_14_42_57_048540
EOF

puts filez.split(' ').size

filez.split(' ').each do |f|
	puts "mv #{f} matlab_bad/#{f}"
	`mv #{f} matlab_bad/#{f}`
end

By 0 Comments

IMA equations

Here are some of the questions I had when starting as an IMA.

How do you schedule IDTs?

You have to be on a .mil domain or else you need to use arrows-r.

utaps

Who pays?

IDTs and the 2-week annual tour are centrally funded.

What are my work requirements?

I am cat A with 48 paid IDTs and 2 week tour is required and my R/R Date is Aug-4.

This is a nice briefing AFD-120503-056.pdf.

What is the R/R date?

12 consecutive months in which an active Guard or Reserve member is required to earn a minimum of 50 points (including membership) for a satisfactory year of federal service.

This defines a “good year”.

key reference: http://www.e-publishing.af.mil/shared/media/epubs/AFI%2036-2254V1.pdf

What is form 40A?

How do OPRs work? Where do you find them?

In work.

-At the end of each training day, write bullet statements on the back of your orders or 40A describing your accomplishments. Provide your supervisor with a copy for your record. This will become input for the OPR/EPR.

-Accomplishments in your civilian profession may be used for an OPR, IF they are pertinent to military skills and leadership

Who do you ask for help and what will you get from them?

Ask the BIMMA or the senior reservist

How much civilian leave do you get?

15 days

By 0 Comments

Import Access Data into Excel (via VB and ADO)

I had a lot of data in MySql in a rails application, but I moved to Mongo on a new application and wanted to give the client a nice archive of excel files for each client. It has been a long time since I’ve worked with visual basic, but it came back quickly.

I was amazed how clunky the interface and I wrote some pretty redundant code, but this was my Saturday and I tried to get this out the door quickly. My basic workflow was to load an office trial version on a virtual machine, then install SQL server on windows and set up an ODBC connection string which I used to import all data into access. In access, I just wrote a bunch of sql strings and used access to automate excel via VBA.

https://gist.github.com/tbbooher/2386826

By 0 Comments

Your key with fingerprint … is not authorized to access heroku with Ubuntu

This error was pretty hard to solve. I emailed heroku support and they recommended:

“https://github.com/ddollar/heroku-accounts”:https://github.com/ddollar/heroku-accounts

bq. For git commands to work git needs to use the ssh key associated with that account. It’s probably choosing a key associated with a different account which is causing these permissions errors. You can use a ~/.ssh/config file to specify which key should be used. Check out this client plugin written by one of our engineers. It helps manage both Heroku credentials and ssh keys for easy switching between accounts. https://github.com/ddollar/heroku-accounts Please let me know if you have more questions.

Their comment did make my future work with multiple accounts easier — it didn’t solve my problem which was that my old fingerprint was still active, and causing trouble.

The solution for me was not to create and provide a new key to heroku. It was to go to the gnome passwords and keys folder and manually delete “My Personal Keys”.

See this comment from “launchpad”:https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/505278 for details.

bq. The culprit is gpg-keyring-daemon. It subverts the normal operation of ssh-agent, mostly just so that it can pop up a pretty box into which you can type the passphrase for an encrypted ssh key. And it paws through your .ssh directory, and automatically adds any keys it finds to your agent. And it won’t let you delete those keys. How do we hate this? Let’s not count the ways — life’s too short.

bq. The failure is compounded because newer ssh clients automatically try all the keys in your ssh-agent when connecting to a host. If there are too many, the server will reject the connection. And since gnome-keyring-daemon has decided for itself how many keys you want your ssh-agent to have, and has autoloaded them, AND WON’T LET YOU DELETE THEM, you’re toast.

bq. What you really want to do is to turn off gpg-keyring-daemon altogether. Go to System –> Preferences –> Startup Applications, and unselect the “SSH Key Agent (Gnome Keyring SSH Agent)” box — you’ll need to scroll down to find it.

bq. You’ll still get an ssh-agent, only now it will behave sanely: no keys autoloaded, you run ssh-add to add them, and if you want to delete keys, you can. Imagine that.

By 0 Comments

Radar parameter estimation

[mathjax]

Here we tackle what a Radar needs to accurately measure a target’s position, size and motion. (This is nothing new, just a placeholder for some of my notes.)

First of all, everything depends on $SNR$, and the parameter estimation happens in the main computer of a Radar. The theoretical rms error of a measurement is of the form:

<br /> \delta M = \frac{k M}{\sqrt{SNR}}<br />

where \(k\) is a constant between 0.5 and 1.

h3. Range

First, let’s tackle range. They key metric for range is bandwidth, the higher the bandwidth the better the resolution.

Estimation of the range of a target is based upon using A/D sampled measurements of the round trip time to and the target

<br /> R = \frac{c T_R}{2}<br />

For time delay measurements , such as range, the value of the constant depends on the shape of the radar pulse’s spectrum and the pulse’s rise time and for a rectangular pulse, whose width is, (T):

<br /> \delta T = \frac{T}{2 \sqrt{SNR}}<br />

or equivalently,

<br /> \delta R = \frac{c T}{2 \sqrt{SNR}}<br />

However, pulses always move in trains or if $T_D$ is the dwell time:

<br /> \delta R = \frac{c , T}{2, \sqrt{SNR\, \text{PRF} \, T_D}}<br />

from Barton and Ward.

So Range depends on \(SNR\), pulse shape and width, effective bandwidth, number of pulses that can be coherently integrated.

This is explained well by a diagram in the lincoln presentation:

h3. Angle

Now, let’s tackle angle. Angle accuracy depends on antenna size. Simple detection provides coarse location in angle by isolating a target’s location within beamwidth of antenna (and beamwidth is just \(\lambda / D \), where \(D\) is the aperture diameter and \(\lambda \) is the wavelength. But this is very coarse, 1° beam at 100 km extends across 1,745 meters. In order to provide more accurate angle estimation, you have to measure at different beam positions to improve accuracy. You can do this through sequential lobing, conical scan tracking, or monopulse angle estimation.

h4. Conical Scanning

Conical scanning is a technique to keep the beam pointed at the target to improve angle accuracy. It is based on the principle that the radar receiver will get maximum returned signal strength when the target is in the beam centre, so if the beam is pointed directly at the target, when the target moves it will move out of the beam center and the received signal strength will fall. Circuitry designed to monitor any fall off in received signal strength controls a servo motor that steers the aerial to follow the target motion.

Wikipedia has a nice drawing that explains this technique:

!https://upload.wikimedia.org/wikipedia/commons/3/32/Conical_scan.jpg!

h4. Sequential lobing

While conical scan tracking uses the phase of modulation to get the angle error and amplitude modulation to get the beam displacement, sequential lobing uses two slightly separated antenna elements to send the beam slightly to either side of the midline of the antenna, switching between the two to find which one gave the stronger return, thereby indicating which direction the antenna should be moved in order to point directly at the target.

Here, wikipedia provides another good diagram:

!https://upload.wikimedia.org/wikipedia/commons/b/b6/Monopulseprinzip2.gif!

h4. Monopulse

Monopulse radars are similar in general construction to conical scanning systems, but add one more feature. Instead of broadcasting the signal out of the antenna “as is”, they split the beam into parts and then send the two signals out of the antenna in slightly different directions. When the reflected signals are received they are amplified separately and compared to each other, indicating which direction has a stronger return, and thus the general direction of the target relative to the boresight. While monopulse, requires a separate receiver for each channel, it improves performance over conical scan and sequential lobing whose performance degrade with time varying radar returns.

All angle errors are summed up well by the following:

and

SNR, type of measurement technique, antenna illumination distribution, antenna size, and frequency.

h3. Doppler

Lastly, let’s look at Doppler accuracy. Doppler accuracy depends on coherent integration time \(\Delta t \):

Doppler frequency is calculated as:

<br /> f_d = \frac{2 v_r}{\lambda}<br />

To accurately measure Doppler, use two closely spaced frequency filters offset from the center frequency of the Doppler filter containing the detection

<br /> \text{Doppler measurement accuracy} \propto \frac{\lambda}{\Delta t} \frac{1}{\sqrt{SNR}}<br />

Doppler accuracy depends on SNR, pulse shape, integration time.

h3. Real world limitations

h4. Receiver noise

# Adds variance to estimates

h4. Radar calibration

# Poor calibration leads to poor estimation

h4. Amplitude fluctuations

# Small effect on monopulse and array solutions

h4. Angle noise (angle scintillations, or target glint)

# Complex target return biases angle estimate

h4. Multipath (low angle tracking)

# Reflection off earth’s surface combines with direct path return

# Can cause biases in angle estimates for all technique

h4. Good References

“Parameter Estimation”:http://www.ll.mit.edu/workshops/education/videocourses/introradar/lecture9/lecture.pdf

“Basic Fundamentals”:http://faculty.nps.edu/jenn/Seminars/RadarFundamentals.pdf

“Parameter Estimation and Tracking”:http://aess.cs.unh.edu/Radar%202010%20PDFs/Radar%202009%20A_15%20Parameter%20Estimation%20and%20Tracking%20Part%201.pdf

By 0 Comments

Wind speed calculation

I want to know the impact of wind on endurance.

So we have something like this:

This gives us 8 cases of wind direction:

From this we can infer that going to the center from one of the 8 directions.

So an overall flight path would look like this:

If each grid cell is a distance (s) in size, each time a diagonal transition is made the distance would be (sqrt{2} s). As an aircraft enters each cell, they encounter the wind-star as shown above with the expected value of the wind facing one of the eight possible directions. In general, if (W) is the wind velocity in direction (alpha), from grid direction (g in [1,8]) we have to find the expected value for the wind in direction (cos(alpha_{g,w})), by integrating over all values of (w).

[
V_{g,w} = sum_{1..12} cos(alpha_{g,w_{i}}) dot P_i
]

With these bins:

h3. Wind Directions ( w_{i} )
|Wind Direction|Angle|
|1|0|
|2|30|
|3|60|
|4|90|
|5|120|
|6|150|
|7|180|
|8|210|
|9|240|
|10|270|
|11|300|
|12|330|

h3. Grid Direction (g)
|Grid Direction||
|1|315|
|2|270|
|3|225|
|4|0|
|5|180|
|6|45|
|7|90|
|8|135|

By 0 Comments

Buyback military years

h2. Should I even buy the years? what if we use the 13K for something really special? the cashflow is way out there.

1 36 7836.4409
2 37 8692.4214
3 38 9592.7079
4 39 10539.1884
5 40 11533.8243
6 41 12578.6531
7 42 13675.7911
8 43 14827.4367
9 44 16035.8728
10 45 17303.4704
11 46 18632.6915
12 47 20026.0928
13 48 21486.3287
14 49 23016.1553
15 50 24618.4338
16 51 26296.1345
17 52 28052.3406
18 53 29890.2526
19 54 31813.1921
20 55 33824.6069
21 56 35928.0746
22 57 38127.3083
23 58 40426.1607
24 59 42828.6297
25 60 45338.8632
26 61 47961.165
27 62 50700
28 63 53560
29 64 56545.97
30 65 59662.89

If you’ve spent time in on active duty with an honorable discharge (i.e. you have a DD-214) and you then join the civil service, it is possible to pay for your military years and receive credit for FERS.

Questions:
* What are the various deadlines?

There is a two-year interest free period that begins on your date of hire. However, since the interest is added on an annual basis, if the deposit amount is paid in full prior to three years of your hire date the deposit is interest.

* Can I collect my civilian and reserve retirements? (Retirement: You must waive your military retired pay in order to receive credit for military service in a civilian annuity, unless your military retirement is based on)
*

employee. The deposit can be made in one single payment, multiple payments, or through payroll deductions, normally for as little as $25-$50

There are two reasons to do this:
* You could retire sooner, or
* Your can increase your retirement annuity

Here are the rules:
* The deposit must be paid in full while you are a federal employee
* that you must have at least five years of creditable civilian service and be covered under the CSRS or FERS retirement system on the date of retirement

All the details are here: “http://www.opm.gov/retire/pre/fers/servicecredit.asp”:http://www.opm.gov/retire/pre/fers/servicecredit.asp

Here is the math. The deposit amount is 3% of military base pay for FERS employees.

There are three steps to make this happen:

Obtain your total estimated military earnings by sending form RI20-97 and a copy of your DD214 to your respective military pay representative. The military payroll office will send you a short letter or form indicating your total estimated earnings during your military service.

Complete a SF-3108 or SF-2803 This form requires a statement on the form concerning military deposits, which is not available on the on-line version. Obtain the edited form from your HR office. HR will forward the documents to your civilian payroll office. Your payroll office will bill you directly.

Make the deposit to your civilian payroll office. You can pay the deposit in one lump sum, a series of payments, or sign up for payroll deductions, normally for as little as $50 per pay period. The deposit must be paid in full while you are employed and cannot be made after you retire.
Step 4: When the deposit is complete, your payroll office will send you a letter that the deposit is paid in full. Keep this document for your permanent retirement records and send a copy to your HR office. Payroll will not usually notify your HR office of the deposit, so it is very important that you retain a copy of this letter until you

classdef PaymentPlanner  0
               obj.year_of_departure = 2011 + years_from_now;
            end
%           how many years are we looking at total?
            obj.n                       = PaymentPlanner.years_out+1;
%           which years are we looking at?
            obj.years                   = (2011:(2011+PaymentPlanner.years_out))';
%           what are the years of the experiment?
            obj.tv_each_year            = obj.years;
%           what age are you each year?
            obj.tv_age                  = obj.years-(ones(obj.n,1)*1976);
%           what is your age when you leave service?
            obj.year_of_62              = obj.years(obj.tv_age == 62);
            obj.age_at_departure        = obj.year_of_departure-obj.birthday(1);
%           what is the inflation-adjusted salary in each year?
            obj.tv_salary               = obj.increase_with_inflation(obj.starting_salary)';
%           what is the inflation-adjusted salary at exit
            obj.departing_salary_TY     = obj.tv_salary(obj.years == obj.year_of_departure);
%           how much cash on hand each year?
            obj.tv_cash_on_hand_TY      = obj.increase_with_inflation(obj.amt_years_buyback)';
%           how many years in federal service?
            obj.total_time_in_service   = obj.year_of_departure - PaymentPlanner.year_started_service;
%           how much cash would the government return?
            obj.payout                  = calculate_payout(obj);
%           what is the yearly payment available in 2011 dollars?
            obj.yearly_payment_BY       = obj.present_value(obj.get_retirement_BY, obj.year_of_62 - obj.year_of_departure);
        end

        function compare_30_year_coa(obj)
           for i = 1:30
               obj.year_of_departure = 2011 + i;
               obj.age_at_departure  = obj.year_of_departure-obj.birthday(1);
               obj.total_time_in_service   = obj.year_of_departure - PaymentPlanner.year_started_service;
               obj.yearly_payment_BY       = obj.present_value(obj.get_retirement_BY, obj.year_of_62 - obj.year_of_departure);
               disp([num2str(i) '|' num2str(obj.age_at_departure) '|' num2str(obj.yearly_payment_BY)]);
               A(i) = obj.yearly_payment_BY;
           end
           plot(1:30,A);
        end

        function out = present_value(obj, x, years)
            out = x/((1+obj.inflation_rate)^years);
        end

        function out = increase_with_inflation(obj,x)
            out = x*((1+obj.inflation_rate).^(1:obj.n));
        end

        function display_output(obj)
            disp(['At age ' num2str(obj.age_at_departure) ' you would depart with a base year salary of ' num2str(obj.starting_salary) ]);
            disp(['You would get ' num2str(obj.yearly_payment_BY) ' (BY11) going forward at age 62.']);
        end

        function payout = calculate_payout(obj)
            idx                         = find(obj.tv_age == 62);
            count_to_the_top            = length(obj.tv_payout_TY(idx:end));
            retirement_starting_salary  = obj.get_retirement_TY;
            obj.tv_payout_TY(idx:end)   = retirement_starting_salary*(1+obj.inflation_rate).^(1:count_to_the_top);
            payout                      = sum(obj.tv_payout_TY);
        end

        function yearly_payment = get_retirement_TY(obj)
            yearly_payment      = (obj.total_time_in_service/100)*obj.departing_salary_TY;
        end

        function yearly_payment = get_retirement_BY(obj)
            yearly_payment      = (obj.total_time_in_service/100)*obj.starting_salary;
        end

        function obj = value_at_age_62(obj)

        end
    end

end

h2. What are the steps?

Do I fall under: Uniformed Services Employment and Reemployment Rights Act (USERRA)?
No because no civilian service was interrupted.
How much do I pay?
For periods of service performed during 1999 the deposit equals 3.25%; and during 2000 the deposit equals 3.40%. After 31 Dec 00 the deposit returns to 3% of your military base pay.
For periods of service performed during 1999 the deposit equals 3.25%; and during 2000 the deposit equals 3.40%. After 31 Dec 00 the deposit returns to 3% of your military base pay.
So, for example, I joined in 07/04/1999 and departed in 08/05/2009
What is the process

By 0 Comments

Winds around the world

Goal: characterize the winds available around the world.

First we need to construct our grid:

The horizontal, latitude-longitude grid ranges from +70 to -70 deg in latitude and from 0 to 357.5E deg in longitude, producing a grid that has dimensions of 57 x 144 points.

In matlab, this is:

[cells/degree northern_latitude_limit western_longitude_limit]
zerom(

These data were produced from the “NCEP/NCAR Reanalysis”:http://www.esrl.noaa.gov/psd/data/reanalysis/reanalysis.shtml are available at six-hour intervals, from January 1, 1948 to the present, and it is this 6-hour data that was used as the basis for this work.

Spatially, the delivered data values are given at points in a three-dimensional, global system using a 2.5 x 2.5 deg grid of latitude-longitude and altitudes that are specified by atmospheric pressure.

Above each point in this grid, horizontal wind information is delivered at 4 pressure levels: 50 mb, 70 mb, 100 mb, and 150 mb. If we assume a standard day, this corresponds to: 67,726 60,504 53,083 44,647 feet. At each grid point and pressure altitude, the horizontal wind vectors have been sorted into 12 directional bins.

Cells per degree = 2.5
Degrees per cell = 0.4

– how linear is the wind change with altitude?
– where are winds high?

By 0 Comments