Question

Based on the available Location fields, the float accuracy seems the main field to determine how good a GPS location is, without taking into account the timestamp. I wonder if it may also be helpful to parse the number of satellites from the NMEA data (I think it was $GPGGA) or via LocationManager.getGpsStatus. How do you filter the high-precision GPS locations? More specifically, I'm also interested in knowing:

  • The higher the number of satellites, the better the fix? I know the minimum number of satellites is 4, but can it be said that a fix with 8 sats is considerably better than a 6-sats fix?
  • Isn't the number of sats already included in the accuracy field?
  • Some pages on the internet mention that an important parameter is the DOP (Dilution of Precision). Seems that it appears in the $GPGSA NMEA sentence. Is this sentence available in Android? Moreover, which NMEA sentences are guaranteed to be available in Android?

Thanks.

Was it helpful?

Solution

The higher the number of satellites, the better the fix? I know the minimum number of satellites is 4, but can it be said that a fix with 8 sats is considerably better than a 6-sats fix?

Totally depends on the GPS chipset and the code running on it. Typically yes, more satellites means better prediction.

Some pages on the internet mention that an important parameter is the DOP (Dilution of Precision). Seems that it appears in the $GPGSA NMEA sentence. Is this sentence available in Android? Moreover, which NMEA sentences are guaranteed to be available in Android?

Yeah NMEA sentences are available in Android. Now the NMEA standard is huge, so most of the GPS chipsets only support a small subset of NMEA.I won't guarantee anything, but I found that GGA, RMC, GSV, GST and GSA are the most popular. Most of the chipset that I've worked with gives VDOP and HDOP.

It seems you want to improve the accuracy of your GPS fixes? Why don't you use the Accelerometer, Gyro, Orientation and other sensors (even the Barometer/Wifi RSSI) - or - Kalman filtering. Google Maps does this to improve the accuracy.

How do you filter the high-precision GPS locations?

This is science in progress, getting a perfect GPS position is difficult thing to do, due to the number of variables that change and considering the fact we are working with dumbed down civilian data.

OTHER TIPS

The answer is simple, use the HDOP value.
The smaller the hdop, the better should be the accuracy. (But there is no garantee, like for all things with GPS)
The number of satellites does not help much, ignore them. (The satelite constellation is more important, and that is expressed in DOP and HDOP)
Use hdop < 5, and ignore all fixes below a certain speed threshold (e.g 5km/h)
Further you could use only fixes which are of type "3D-fix". You find that all in the basic NMEA messages. (RMC, GSA, GGA)

Don't use gyro, accelormeter, this will be probably to much work for you and me and most other people.

The Dilution of Precision (DOP) value is based on the satellite geometry. If your GPS is using a cluster of satellites that are close together in the sky you will get a higher value of DOP than if it is using satellites that are more widely spread out. The lower value of DOP, the more accurate your fix. See https://en.wikipedia.org/wiki/Dilution_of_precision_(navigation)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top