Tuesday, December 04, 2007

Making sense of the Global Positioning System

Thanks to the U.S. Department of Defense (and good ole President Ronald Reagan) GPS signals are freely available for civilian use. The fact is, today GPS is basically ubiquitous in most people's lives. Most new cars use it to show you where you are and your proximity to the nearest Starbucks. Raising the "cool factor" bar for technology using GPS is its implications on the Internet as we know it. For example people are geocoding their images in their online photo albums, Cool apps like Google Earth, Geocaching and all sorts of new creative games using real places are sprouting up all over the Internet (people are going outside again!). Basically, with GPS the Internet can break out of it's closed linear stage and becomes part of our real three dimensional world. Very cool, but more on that later - let's dive into what makes the Global Positioning System tick and how you can take advantage of the technology in your next project.

You will find that most GPS devices out there (USB GPS for your PC, handheld GPS's, etc etc) will report data from satellites in a neat standard format called NMEA. NMEA uses a serial ASCII protocol to send GPS data to your application for consumption. The resulting comma delimited data is piped out or logged sentence by sentence from your device. The NMEA format makes it easy to take the data and parse it anyway we'd like. Now we could just use the software that came with our Microsoft's Streets and Trips or Earthmate GPS but that's no fun.

Decoding GPS log files
There are many different types of NMEA sentences. Luckily they are all in an easy to read format. The first field is the sentence type and will start with $. I am only going to focus on a couple sentence types that give us our position information. For the purpose of this blog, we'll ignore the other sentences but there is plenty of references online about them.

My favorites, $GPGGA and $GPRMC. You will find that these two will have all the data you should need for tracking.

Example sentence (GPGGA):
$GPGGA,192122,3514.7971,N,07634.7585,W,1,04,01.3,00006.2,M,-035.9,M,,*79

Translation:
$GPGGA,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx*hh

Here is what each field means:
1 = UTC of Position
2 = Latitude
3 = N or S
4 = Longitude
5 = E or W
6 = GPS quality indicator (0=invalid; 1=GPS fix; 2=Diff. GPS fix)
7 = Number of satellites in use [not those in view]
8 = Horizontal dilution of position
9 = Antenna altitude above/below mean sea level (geoid)
10 = Meters (Antenna height unit)
11 = Geoidal separation (Diff. between WGS-84 earth ellipsoid and
mean sea level. -=geoid is below WGS-84 ellipsoid)
12 = Meters (Units of geoidal separation)
13 = Age in seconds since last update from diff. reference station
14 = Diff. reference station ID#
15 = Checksum

Example sentence (GPRMC):
$GPRMC,192137,A,3514.7966,N,07634.7588,W,000.0,000.0,310707,,,A*66

Translation:
$GPRMC,hhmmss.ss,A,llll.ll,a,yyyyy.yy,a,x.x,x.x,ddmmyy,x.x,a,m*hh

Here is what each field means:

1 = UTC time of fix
2 = Data status (A=Valid position, V=navigation receiver warning)
3 = Latitude of fix
4 = N or S of longitude
5 = Longitude of fix
6 = E or W of longitude
7 = Speed over ground in knots
8 = Track made good in degrees True
9 = UTC date of fix
10 = Magnetic variation degrees (Easterly var. subtracts from true course)
11 = E or W of magnetic variation
12 = Mode indicator, (A=Autonomous, D=Differential, E=Estimated, N=Data not valid)
13 = Checksum

By parsing these etypes either in real time by reading the data from a COM port, or from an existing log file you can use the coordinate information in any way you choose. I am currently working on a cool (Ok, I think its cool..) vehicle tracking application that I should be releasing here on this site soon. There are allot of good examples floating around with source code that should give you a handle on using this data.

In closing, the Global Positioning System is a powerful resource that you can tap into and enable your applications to become spatially aware. This opens plenty of doors for new and innovative apps - so get coding!

If you read this far,  you should follow me on Twitter!

9 comments:

Anonymous said...

Packers and Movers Gurgaon
Packers and Movers Delhi
Packers and Movers Bangalore
Packers and Movers Pune
Packers and Movers Hyderabad
Packers and Movers Mumbai

Pusat Penjualan Obat Herbal said...

It is very useful thanks for sharing information

Cara Melancarkan BAB
Mengobati Diabetes Secara Ampuh
Cara Meredakan Masalah Sakit Lambung
Cara Menyembuhkan DBD
Cara Mengobati TBC Sampai Sembuh
Resep Tradisional Buah Apel Untuk Batu Empedu
Obat Terbaik Diabetes Melitus

latina masio said...

how google earth detect this...


canon pixma ix6870 driver download

canon pixma mg3670 driver download

canon pixma g2000 driver download


canon pixma mp287 driver download

canon pixma ix6770 driver download

Printer driver download

canon printer driver download


Richary said...

great post and very helpful, hope can be always guided every post shared on this site. Thank you to visit our site also on the printer drivers:


OKI B431DN Drivers


Ricoh Aficio MP-2000L2 Driver


Driver Printer Epson L355


Driver Canon LBP 1120


Driver Printer Xerox Phaser 3010

Asep fauzi nurjaman said...

Thank you very much for sharing this very useful information, I am very happy to have found this information that I have been looking for
Obat Luka Jahitan Yang Terbuka
Cara Mengobati Keputihan
Obat Tumor Parotis
Obat Penumbuh Jaringan Kulit
Obat Nyeri Persendian
Cara Mengobati Hirschsprung
Obat Batuk Berdarah
Cara Menyembuhkan Radang Tenggorokan

Asep fauzi nurjaman said...

Thank you very much for sharing this very useful information, I am very happy to have found this information that I have been looking for
Obat Sakit Leher
Obat Tenggorokan
Obat Panu Alami
Obat Kapalan Alami
Obat Gondongan

Asep fauzi nurjaman said...

Thank you very much for sharing this very useful information, I am very happy to have found this information that I have been looking for
cara untuk mengobati kusta dengan cepat
obat alami menyembuhkan tipes dengan cepat

Fahrezy agra said...

Thank you for your support who has read our article. I'm very happy if you can share our article below

Toko Obat Herbal
Obat Nyeri Sendi
Cara Merawat Kesehatan Jantung
Obat Penambah HB darah
Obat Untuk Menghilangkan Milia

Asep fauzi nurjaman said...

Thank you very much for sharing this very useful information, I am very happy to have found this information that I have been looking for
obat kelenjar tiroid membengkak
cara menghilangkan flek hitam di wajah
obat penambah darah alami
cara ampuh mengobati mata katarak
obat kaki bengkak akibat keseleo
cara mengobati rhinitis