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.
Totally depends on the GPS chipset and the code running on it. Typically yes, more satellites means better prediction.
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.
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.