问题
I want to display a signal bar for a GPS device using .NET CF. I'm able to read NMEA data and get the SNR signals. But they are a number of satellites with some active and some inactive with various SNRs. I thought about getting average of total SNR but it won't give a accurate value as three strong signal satellite is enough for GPS fix and with another 5 satellites with bad SNR can mess up the signal bar calculation. How am I gonna calculate GPS signal in percentages in a proper way?
回答1:
Use the GSA
NMEA sentance to get the Dilution of Precision
:
This sentence provides details on the nature of the fix. It includes the numbers of the satellites being used in the current solution and the DOP. DOP (dilution of precision) is an indication of the effect of satellite geometry on the accuracy of the fix. It is a unitless number where smaller is better. For 3D fixes using 4 satellites a 1.0 would be considered to be a perfect number, however for overdetermined solutions it is possible to see numbers below 1.0.
From GPS info.
A DOP value of 1 is perfect, while a DOP value of 20 or greater is poor. You typically want a DOP of less than 10.
回答2:
No, don´t use the DOP, use the HDOP (horicontal dilution of precision) value. The DOP does includes the altitude (height above elipsoid/sea level). Since the altitude is not very accurate, GPS is mostly used for horicontal (lat, lon) positions. Therefore the hdop is more useful. You typically will use hdop < 5 values.
Another way: The answer above, calculates the quality related to a specific location, and time. If you really want the signal strength, e.g for comparing the quality of the installation of the GPS receiver inside a vehicle, or the quality of the antenna: Then you should average the Signal to Noise ratio of all used! satellites. You will find this in the GSV sentences. As far as I know, there is no standard way to compute the overall signal strength. But I would not use this to show bars on a display, its more for analysis and monitoring.
回答3:
There is sentence called
$PGRME Estimated Position Error [1.NMEA0183 Ref]
which I would say it's exactly what we are looking for but unfortunately it is Garmin's proprietary sentence. It makes me think calculating such a thing might have a fair amount of work that Garmin tried to brand it for it's own protocol.
Also about the suggestion of using GSA. When I am looking at this sentence, there is no DOP in it. searching give me "$PGRMF Position Fix Sentence" which is again a Garmin proprietary sentence.
As I can see only GGA sent. has the Horizontal Dilution of precision.
I would like to know if I need specific Garmin compatible hardware to read Garmin sentences or there is another solution.
来源:https://stackoverflow.com/questions/3159260/gps-signal-strength-calculation