Archive for the 'STK Engine' Category
This is the last installment of the Ionospheric Error Analyst blog. I've written two previous blogs on this mashup application, describing how you can calculate near real time navigation accuracy, including ionospheric effects, and display them on a globe. In this installment, I'll complete the project and provide a download of the entire application so you can build it on your own and use it.
When we left off, the last pieces we needed were the time and positions to calculate and then finally, the actual navigation accuracy calculation itself. To provide the time to calculate, we need to look at the filename of the TEC file. Remember the TEC file contains the total electron count data we need to calculate the navigation error due to the ionosphere. The filename contains the date the TEC data is valid for - and it's valid for 15 minutes after that date. Parsing the name and generating a date from the name elements is straight forward:
// sample TEC filename // 200706102130_TEC.txt // 01234567890123456789 year = Int32.Parse(filename.Substring(0, 4)); month = Int32.Parse(filename.Substring(4, 2)); day = Int32.Parse(filename.Substring(6, 2)); hour = Int32.Parse(filename.Substring(8, 2)); minute = Int32.Parse(filename.Substring(10, 2)); // add 15 minutes to file timestamp - we want latest accuracy return new JulianDate(new DateTime(year, month, day, hour, minute, 0)).AddSeconds(900);
What about the grid we need to calculate over? That's easy too. We start with the bottom left grid point defined by the user and simply increment that by 1 degree for the entire area specified in the GUI. I'll use a 1 degree step because the TEC data is defined with this increment. Each time the grid point location is calculated, it's stored in a List of ContourCells. The ContourCell class simply stores the four vertices of the cell as well as the cell ID and a definition of which of the four vertices of the cell the accuracy calculation will occur on. You could change this implementation calculate for the middle of the cell - or somewhere in between too if you like. In the interest of saving space, I'll let you browse that code on your own. Look for the CalculateCONUSGrid method. Note that the TEC data from NOAA is defined only over the continental United States (CONUS). There's no error checking in the application to ensure the user has entered the correct latitude/longitude boundaries however. You'll even get results for areas outside of CONUS. The point is, be sure to understand the limitations of the data you use - otherwise your analysis will be flawed.No comments