Archive for the 'Spatial Analysis Library' Category
I was a little reluctant to open a Twitter account, not because I didn't think the tech was cool, but could I possibly have that much to say each day? In such short sentences? Well, I figured out that on a daily basis I may not have much to say, but GPS does. I wanted to provide some useful information to GPS followers, something that could be said in a few words.
To that end, I created an account on Twitter with a user name GPSToday. This account I figured, could send 'tweets' to followers about GPS events, like accuracy statistics, satellite outages, etc. But this type of information would take a lot of my time to create and update on a regular basis. Ahhh, but wait, the AGI Navigation component can be coded in any way, shape or form. I could use this to create a program that automatically did what I needed and produce the results automatically.
The first application: GPS Accuracy Stats over the globe each day. Whether you're aware or not, GPS accuracy varies each day - due to satellite outages, GPS signal quality and many other factors. Getting a quick glance of GPS accuracy and status on Twitter can keep you informed with no work on your part. So what's available?
Here's a picture of a sample GPSToday Daily Accuracy tweet:
I use the AGI Navigation Accuracy Library, Dynamic Geometry Library and the Spatial Analysis Library to calculate the global position error, at 5 degree grid increments and 60 sec time steps. I then find the Maximum, Mean and Minimum statistics over the globe for the day. Once I have this information, I construct a string that states what you see in the picture above and use Twitterizer post the tweet. I can't believe how easy this was to do.
On the machine I use to calculate the global accuracy, I used Windows Scheduler to set up the run every day at midnight. When it completes, The code will send me an e-mail that it finished and update the GPSToday status with the message above. Also, if there were any satellite outages, a tweet with that info would be posted as well.
Computing global accuracy is easy using the Spatial Library component. A peek at the documentation here, then heading to the Programmer's Guide, Overview, Coverage section, show lots of examples of how to compute coverage. Down towards the bottom are some navigation examples also. The coverage algorithm first calculates access over the grid (not at specific times, but based on the assets and constraints you assigned to the grid). Once Access is calculated, you can evaluate a Figure of Merit (FOM), such as Navigation Accuracy, on that calculated Access at given time steps. Also built in are statistical functions to allow statistical calculations over the entire grid and time, or just across time at a specified grid point. Nice.
The best part of all this is that the access and FOM calculations are multi-threaded and core aware - the library will take advantage of all the cores on your machine simply by setting the following:
m_CoverageDefinition.MultithreadCoverage = true;
So, with the components, a little time and the help of a couple of tools, getting a new requirement coded and out the door happened in very little time.
Happy tweeting!5 comments