Wednesday, February 24, 2010

About The Aqua Satellite Project

Folks are downloading the code from the Aqua Satellite Project, so I wanted to do a short post about the project.

Purpose
The purpose of the project is to provide a set of tools for accessing and using data from the Aqua satellite. The goal is to be able to replicate as much of the processing done to the data as allowed by law.

State
The project is in its very early stages. More will be added over time, and if you find any mistakes in what's there, please let me know and I'll correct it.

Aqua Satellite Book
I've been working on a book about the Aqua satellite as part of the project. This book isn't a coffee table book or an "executive summary". It digs into the details of how the Aqua satellite works. Because people are downloading the Aqua satellite code, I've added a "early access" version of the book to the download section of the blog under the name Aqua Satellite (PDF). So far, the book is over 50 pages long and there's more to come. Use this book to come up to speed on the technical aspects of the satellite and its related data and processing code.

Short Source Code Overview
I'll close out by giving a brief overview of the code I used to do the QA spot check from this post. Please remember that this is early beta code.

HDFReader.h and HDFReader.cpp - These files contain the code to read a generic HDF-EOS file. The code works, but requires an ASCII version of the HDF-EOS file rather than the binary files that come from NASA. Use the utility ncdump with only the filename as an argument to convert NASA's binary files to text. The Aqua Satellite book has instructions on how to get ncdump.

AMSUReader.h and AMSUReader.cpp - These files are specializations of HDFReader designed to make it easier to read AMSU HDF-EOS files.

CommandLineArgs.h and CommandLineArgs.cpp - Defines a C++ class for working with command line arguments passed to a program.

FileUtils.h and FileUtils.cpp - Provides some cross-platform file utilities.

main.cpp - The entry point to the QA spot check code I wrote.

AMSUQA.h and AMSUQA.cpp This file  contains the actual QA spot check code. It's translated to pseudo-code below.

   Load AMSU Data

   // Check QA
   Set NumberOfGoodData Equal To NumberOfData - NumberOfBadData - NumberOfMissingData - NumberOfSpecialData
   Set PercentGoodData Equal To NumberOfGoodData Divided By NumberOfData
   Multiply PercentGoodData By 100

   Foreach scanline
      Foreach channel
         If channel Failed NASA QA, Add 1 To Channel's Bad Count
      End Foreach
   End Foreach

   // Write QA results
   Open Output File Using Value Of AutomaticQualityFlag As Filename
   Write Out Name Of AMSU Input File
   Write Out Percent Good Data
   Foreach Channel
      Write Out Channel's Bad Count
   End Foreach

   Close Output File


References:
UAH January Raw Data Spot Check

No comments:

Post a Comment