Alan Browne wrote:
Where a GPS position in Lat/Long (base 10 real*) is concerned,
anything beyond the 5th dp is noise in almost all cases including SBAS
aided.**
What we have to ask ourselves then is why Apple stores them this way?
a BSSID: 8c:85:80:d1:be:37
a Latitude: 32.45985031
a Longitude: -93.81759643000001
a BSSID: 8e:76:3f:f8:5d:cd
a Latitude: 32.4594841
a Longitude: -93.8175888
This isn't esp. obscene. A little overkill (2 or 3 dp's)
a BSSID: 92:76:3f:f8:5d:cd
a Latitude: 32.4594841
a Longitude: -93.81756591
a BSSID: 92:95:51:b5:b6:ae
a Latitude: 32.45910644
a Longitude: -93.81759643000001
That trailing "1" seems to be a conversion artifact from a
multiplication somewhere - sourced as 64b integer and stored as 64b
float (probably).
Does anyone have any idea why the highly insecure Apple WPS database
contains GPS entries to this illogically numerous set of decimal places?
"illogical"? Not at all. Nobody got fired or crashed a Mars lander for excessive resolution. The reverse case is a different matter.
All of which goes against Arlen's desperate attempts to prove that one can beIf you understood the code you'd know that the WPS DB returns the lat/lon >>>> as a 64bit integer and the python script converts into a float with a
simple multiplication of 1e-8. Anything beyond the 8th dp is noise.
Where a GPS position in Lat/Long (base 10 real*) is concerned, anything
beyond the 5th dp is noise in almost all cases including SBAS aided.**
Even beyond the the 4th dp, it is likely noise in most cases.
If Lat is represented as a fraction of a semi-circle, then a signed 32
bit integer is more than adequate for general purposes.
Likewise Longitude as a fraction of a circle.
(LSB=0.0046...m and 0.0093...m respectively - though you could represent >>> Lat as a circle as well at the loss of 1 bit of resolution).
*by real I mean number line real, not computer language "real" type.
**(Excluding survey RTK measurements - which are baseline lengths, not
L/L but might be tied to a precise L/L - there 1cm+1mm/km error is common) >>
"tracked by a router". When the reality is that all one can track is the
router. Which is meaningless.
There are literally 100's of thousands of router locations (WiFi) that
are available in databases with their locations well known. Any
receiver (including smartphones) can have apps that use the GPS to "tag"
a WiFi label with the position where it was detected. The error in
position being where the detecting radio (smartphone or other) was when
it found that WiFi. (SSID).
This can be on any system - whether Apple did so or contributed to such
- I don't know.
It's a meaningless complaint, regardless of who is doing it. As in all
such things: if there is an outcome that "can" happen - it assuredly
"will" happen.
In yet another desperate attempt to make Apple "look bad".
Par. Ignore it.
On 2025-12-19 10:40, candycanearter07 wrote:
Never trust a float for anything that requires precision.
Silly statement.
If you understand the structure of the float (IEEE 754) as implemented
in your programming language and OS then analyzing the _resolution_ of
the floating value and the resultant _precision_ of the result (2 things that many programmers ignore) then float is fine for many (if not all) things requiring precision.
As I stated in another post, Python (and many C) programmers seem quite
lazy in this respect and so liberally use 64 bit float where 32 would
do. Or even 16. So much excess resolution pretty much guarantees conservation of information in most cases with a reasonably large number
of operations. (akin to having a 500HP engine where 200HP is much more
than adequate).
A key point is understanding the effect of operations on the _precision_
of an operation and the order of operations on variables and the result
that conserve information and _precision_ and not merely _resolution_
which itself is a characteristic of the "instrument" (in this case CPU registers and memory and not a guarantee of _precision_ in the result).
Implementing precision operations as integer values with some assigned resolution to LSB (say: LSB = 0.001 metres) is NO different if the order
of operations is not carefully designed to conserve actual _information_
in a sequence of operations.
It is either negative (bit set) or not (bit not set).
The question mainly is WHY Apple stores them to the number of integers that >>they do, where all I can do is convert the integer values to human-readable >>decimal coordinates.
If you look at the original data you posted a few articles back, you
might notice that the number of significant digits in the Lat/Long
numbers vary widely for each BSSID.
That implies that the number is
coming from the GPS receiver and is probably not "processed" prior to
be being logged. The entries with fairly few significant figures is
probably an old GPS who's designers were only confident in a few
digits precision. The longer entries could easily be the output of an
RTK differential GPS system capable of millimeter accuracy. A way to
verify this is to write a program that grabs the first half of the
BSSID and searches various OUI databases for the name of the
manufacturer. Something like this:
"Wi-Fi Vendor - Detect vendor of a Wi-Fi access point with just your
iPhone or iPad"
<https://github.com/jiribrejcha/wifi-vendor-lookup>
I'll try it.
BSSID: 84:eb:3e:f8:36:d3
Latitude: 32.45880508
Longitude: -93.81717681
Plugging the BSSID into:
<https://oui.is/>
<https://oui.is/84eb3ef836d3>
I get:
Vivint Smart Home 84:eb:3e:00:00:00/24
Here's a longer Lat:
BSSID: bc:9b:68:7e:15:c3
Latitude: 32.459438320000004
Longitude: -93.817276
<https://oui.is/bc9b687e15c3>
I get:
Vantiva USA LLC bc:9b:68:00:00:00/24
I can't determine if either company has a reason to have a longer
Lat/Long. However, notice the number of digits in the Lat, which are
mostly zeros, except for the last digit:
Latitude: 32.459438320000004
I don't know what they're doing, but it looks like they're using the
Latitude to store some kind of data or ID. There are several other
entries in the data that show a similar pattern of 8 places to the
right of the decimal point for useful data followed by 6 zeros and 1
numeric digit.
This should be useful:
"Accuracy of Decimal Places in Latitude and Longitude Degrees" <https://support.garmin.com/en-US/?faq=hRMBoCTy5a7HqVkxukhHd8>
8 decimal places is 1.11mm resolution which is probably the limit of
GPS resolution (not sure).
Anyway, good luck with whatever you're doing.
| Sysop: | Amessyroom |
|---|---|
| Location: | Fayetteville, NC |
| Users: | 54 |
| Nodes: | 6 (0 / 6) |
| Uptime: | 13:45:53 |
| Calls: | 742 |
| Files: | 1,218 |
| D/L today: |
3 files (2,681K bytes) |
| Messages: | 183,470 |
| Posted today: | 1 |