Czy ktoś zna poprawną interpretację pomiarów dokładności zwracanych przez getAccuracy ()? Na przykład, czy są one obliczane jako:
Prawdopodobieństwo błędu kołowego (co oznacza, jeśli dobrze rozumiem, promień koła ufności 50%)?
Promień 95% koła ufności?
coś innego?
Ponadto, jakie są rzeczywiste obliczenia, które są używane i jak bardzo możemy na nich polegać? Czy zależy to od źródła oszacowania lokalizacji (GPS vs sieć)?
Wielkie dzięki za każdą radę, którą możesz mi dać.
Odpowiedzi:
Aby odpowiedzieć na jedną część pytania, liczba ta
the radius of 68% confidence,
oznacza, że istnieje 68% prawdopodobieństwa, że prawdziwa lokalizacja znajduje się w promieniu mierzonego punktu w metrach. Zakładając, że rozkład błędów jest normalny (co, jak mówią doktorzy, niekoniecznie jest prawdą), oznacza to, że jest to jedno odchylenie standardowe. Na przykład, jeśliLocation.getAccuracy
zwróci 10, to istnieje 68% prawdopodobieństwa, że rzeczywista lokalizacja urządzenia znajduje się w promieniu 10 metrów od podawanych współrzędnych.http://developer.android.com/reference/android/location/Location.html#getAccuracy ()
źródło
Lokalizacja jest trudnym zadaniem, gdy masz ograniczoną żywotność baterii i nie ma sygnału GPS w budynkach, na obszarach z wieloma dużymi budynkami itp. Ale Android znacznie ułatwia. Gdy żądasz lokalizacji, wystarczy określić, jakiej dokładności potrzebujesz.
Jeśli określisz, że chcesz
accuracy
na przykład*100 meters*
, Android spróbuje uzyskać lokalizację i jeśli może uzyskać lokalizację z dokładnością do 70 metrów, zwróci Ci ją, ale jeśli Android może uzyskać lokalizację z dokładnością większą niż 100 metrów, aplikacja będzie czekać i nic nie otrzyma, dopóki nie znajdzie się miejsce z taką dokładnością.Zwykle Android najpierw pobiera identyfikator komórki, a następnie wysyła go do serwera Google, który mapuje takie identyfikatory komórek, a serwer zwraca szerokość i długość geograficzną z dokładnością, która jest niska na przykład 1000 metrów. Do tego czasu Android spróbuje również zobaczyć wszystkie sieci WiFi w okolicy i prześle informacje o nich również na serwer Google i jeśli to możliwe, serwer Google zwróci nową lokalizację z większą dokładnością, na przykład 800 metrów.
W tym czasie GPS będzie włączony. Urządzenie GPS potrzebuje co najmniej 30 sekund od zimnego startu, aby uzyskać pozycję, więc jeśli uda się to naprawić, zwróci szerokość i długość geograficzną, ale ponownie z dokładnością, która będzie najwyższa z możliwych na przykład 100 metrów. Im dłużej działa GPS, tym lepszą dokładność uzyskasz.
Ważna uwaga: pierwsze dwie metody wymagają połączenia z Internetem. Jeśli nie ma połączenia danych, będziesz musiał poczekać na GPS, ale jeśli urządzenie jest w budynku, prawdopodobnie nie uzyskasz lokalizacji.
źródło
Dokumentacja dotycząca getAccuracy mówi, że zwraca dokładność w metrach. Domyślam się, że oznacza to, że jeśli otrzymasz zwrotną wartość 60, jesteś gdzieś w kole o promieniu 60 metrów wokół podanej pozycji.
źródło
O ile widzę po szybkim spojrzeniu na kod źródłowy Androida, zależy to od sprzętu urządzenia i wartości, które wybierze do zwrócenia.
GpsLocationProvider.java
Plik mareportLocation
metody , która jest wywoływana przez natywnego kodu i zostanie przekazany dokładności jako wartość. W związku z tym wydaje się, że przynajmniej w ramach tych obliczeń nie dokonuje się żadnych obliczeń.QCOM (co wierzę jest Qualcomm) GPS git repo uchwala się
hor_unc_circular
parametr dokładności co wydaje się sugerować, że przynajmniej, że realizacja używa CER.źródło
Jeśli, jak podano w dokumentacji, jest to dokładność, to rzeczywista pozycja użytkowników znajduje się gdzieś w obrębie QUOTED_LOCATION +/- ACCURACY. Tak więc dokładność określa promień, na którym można się spodziewać użytkownika. Dokumenty nie mówią, że możesz być pewien, że użytkownik znajduje się w promieniu - standard wynosi 95%, więc myślę, że to wszystko.
źródło
Rozumiem, że prosisz o jednoznaczną odpowiedź pod względem prawdopodobieństwa, ale myślę, że należy rozważyć dwie rzeczy.
Po pierwsze, dostawca decyduje, co chce umieścić w tej wartości, więc w zależności od dostawcy może to być po prostu błędne przypuszczenie.
Po drugie, warto pomyśleć o tym jako o potencjalnym problemie z zaokrąglaniem. Jeśli próbuję obliczyć Twoją lokalizację na podstawie wielu danych wejściowych, a niektóre z tych danych wejściowych są dostępne tylko dla określonej liczby cyfr znaczących, wówczas można obliczyć lokalizację tylko z określoną liczbą cyfr znaczących.
Pomyśl o tym w ten sposób - o co chodzi „o jeden plus” o „sto”. Prawdopodobnie około stu, ponieważ dokładność stu jest prawdopodobnie mniejsza niż wielkość 1. Jeśli nagle powiem, że odpowiedź wynosi około 101, to może w końcu sugerować poziom dokładności, którego tam nie było. Jeśli jednak podam dokładność, to mogę powiedzieć, że 100 plus minus 10 plus 1 plus minus 0,1 to 101 plus minus 10. Rozumiem, że ogólnie odnosi się to do poziomu ufności 95% ( błąd standardowy), ale znowu wszystko zakłada, że dostawca rozumie statystyki i nie tylko zgaduje.
źródło