Wie wird die Standortgenauigkeit in Android gemessen?

95

Kennt jemand die richtige Interpretation der von getAccuracy () zurückgegebenen Genauigkeitsmessungen? Werden sie beispielsweise berechnet als:

  • Kreisfehlerwahrscheinlichkeit (dh, wenn ich das richtig verstehe, Radius eines 50% -Konfidenzkreises)?

  • Radius von 95% Konfidenzkreis?

  • etwas anderes?

Welche Berechnungen werden tatsächlich verwendet und wie stark können wir uns darauf verlassen? Hängt es von der Quelle der Standortschätzung ab (GPS vs. Netzwerk)?

Vielen Dank für jeden Rat, den Sie mir geben können.

John RB Palmer
quelle
4
Die Frage war nicht, wie der Standort ermittelt wird, sondern die tatsächliche Definition des Rückgabewerts von getAccuracy in der Standortklasse.
Janusz

Antworten:

67

Um einen Teil der Frage zu beantworten, bedeutet die Zahl the radius of 68% confidence,, dass eine Wahrscheinlichkeit von 68% besteht, dass sich der wahre Ort innerhalb dieses Radius des gemessenen Punkts in Metern befindet. Unter der Annahme, dass Fehler normal verteilt sind (was, wie in den Dokumenten angegeben, nicht unbedingt zutrifft), bedeutet dies, dass dies eine Standardabweichung ist. Wenn beispielsweise Location.getAccuracy10 zurückgegeben wird, besteht eine Wahrscheinlichkeit von 68%, dass der wahre Standort des Geräts innerhalb von 10 Metern von den angegebenen Koordinaten liegt.

http://developer.android.com/reference/android/location/Location.html#getAccuracy ()

karl
quelle
Danke, Karl. Ich sehe, dass sie jetzt die Dokumentation aktualisiert haben, was sehr hilfreich ist. Genau das habe ich gesucht, obwohl ich denke, dass Dscheffys Argument auch wichtig ist.
John RB Palmer
@paracycle macht auch einen guten Punkt, dass die Genauigkeit vom Anbieter gemeldet wird, der am Ende entscheiden kann, wie er will, damit umzugehen. Die Verwendung von DDMS liefert beispielsweise einen Wert von 0,0 für die Genauigkeit, da Sie eine genaue Koordinate eingeben.
Karl
11
@AidenStrydom, nein. Wenn die Genauigkeit 1000 zurückgibt, besteht eine Wahrscheinlichkeit von 68%, dass sich der tatsächliche Standort innerhalb von 1000 Metern vom angegebenen Standort befindet.
Karl
Wird die Genauigkeit vom Wetter beeinflusst?
Juri Tichomirow
@karl meinst du, dass 32% über 10 Meter sind? (zB 11 oder 12 oder mehr Meter).
David
44

Der Standort ist eine schwierige Aufgabe, wenn Sie eine begrenzte Akkulaufzeit haben und wenn in Gebäuden und in Gebieten mit vielen großen Gebäuden usw. kein GPS-Signal vorhanden ist. Android macht es jedoch viel einfacher. Wenn Sie einen Standort anfordern, müssen Sie nur angeben, welche Genauigkeit Sie benötigen.

Wenn Sie angeben, dass Sie einen accuracyfür ein Beispiel wünschen *100 meters*, versucht Android, den Standort zu ermitteln. Wenn ein Standort mit einer Genauigkeit von 70 Metern ermittelt werden kann, wird dieser an Sie zurückgegeben. Wenn Android jedoch einen Standort mit einer Genauigkeit von mehr als 100 ermitteln kann Meter, Ihre Anwendung wird warten und nichts erhalten, bis es einen Ort mit einer solchen Genauigkeit gibt.

Normalerweise erhält Android zuerst die Zellen-ID und sendet sie dann an den Google-Server, der diese Zellen-IDs zuordnet. Der Server gibt einen Breiten- und Längengrad mit einer Genauigkeit zurück, die beispielsweise für 1000 Meter niedrig ist. Zu diesem Zeitpunkt wird Android auch versuchen, alle WiFi-Netzwerke in der Umgebung anzuzeigen und Informationen darüber auch an den Google-Server zu senden. Wenn möglich, gibt der Google-Server einen neuen Standort mit einer höheren Genauigkeit für beispielsweise 800 Meter zurück.

Zu diesem Zeitpunkt ist das GPS eingeschaltet. Das GPS-Gerät benötigt nach einem Kaltstart mindestens 30 Sekunden, um eine Korrektur zu erhalten. Wenn also eine Korrektur möglich ist, gibt es Längen- und Breitengrade zurück, jedoch wieder mit einer Genauigkeit, die für ein Beispiel von 100 Metern die höchstmögliche ist. Je länger das GPS funktioniert, desto genauer wird es.

Wichtiger Hinweis: Die ersten beiden Methoden erfordern eine Internetverbindung. Wenn keine Datenverbindung besteht, müssen Sie auf das GPS warten. Befindet sich das Gerät jedoch in einem Gebäude, erhalten Sie wahrscheinlich keinen Standort.

Verkäufer
quelle
14
Das beantwortet nicht wirklich die Frage, was "100m Genauigkeit" bedeutet.
Tomas
2
@ Lieferant können Sie bitte die Referenz angeben, von der Sie diese Information erhalten haben. Ihre Antwort hat mir geholfen zu verstehen, wie es funktioniert, danke.
Ein fairer Spieler
@a fair player Einige der Informationen befinden sich in developer.android.com und ich habe einige Tests mit den standortbasierten Diensten in Android durchgeführt.
Verkäufer
9
Mit welcher API können Sie eine Genauigkeit von 100 Metern festlegen? Ich sehe Kriterien von ACCURACY_COARSE, ACCURACY_FINE, ACCURACY_HIGH, ACCURACY_LOW, ACCURACY_MEDIUM, aber nicht 100 Meter.
Cris
Worauf basiert diese Antwort?
AlikElzin-Kilaka
18

Die Dokumentation zu getAccuracy besagt, dass die Genauigkeit in Metern zurückgegeben wird. Ich würde vermuten, dass dies bedeutet, dass Sie sich irgendwo in einem Kreis mit einem Radius von 60 Metern um die angegebene Position befinden, wenn Sie einen Rückgabewert von 60 erhalten.

Janusz
quelle
1
Wenn ich auf meine Google Maps und meine aktuelle Position schaue, hast du Recht ... in den meisten Fällen. Es kam auch vor, dass mein Telefon meine Position ungefähr 2 oder 3 Kilometer von meiner tatsächlichen Position entfernt
anzeigte
1
Vielen Dank. Ich bin damit einverstanden, dass der von getAccuracy zurückgegebene Wert in Metern angegeben wird und dass es sich um den Radius eines Kreises handeln muss (oder möglicherweise um eine Kugel, wenn die Höhe auch in der Standortschätzung angegeben ist). Es sollte aber auch eine Wahrscheinlichkeit damit verbunden sein, und es ist seltsam, dass in der Dokumentation nicht angegeben ist, wie hoch diese Wahrscheinlichkeit ist oder wie sie ermittelt wird. Ich habe einen Online-Beitrag gesehen, in dem jemand vorgeschlagen hat, dass es sich um CEP handeln könnte, aber das schien nur eine Vermutung zu sein, daher würde ich wirklich gerne einen Weg finden, um zu bestätigen, ob es sich um einen 95% -Konfidenzkreis oder etwas anderes handelt.
John RB Palmer
1
Hier sind einige Links, die zum Verständnis der Frage hilfreich sind (die sie jedoch nicht lösen): users.erols.com/dlwilson/gpsacc.htm groups.google.com/group/android-developers/browse_thread/thread/…
John RB Palmer
12

Soweit ich auf einen Blick auf den Android-Quellcode sehen kann, hängt dies von der Hardware des Geräts und dem Wert ab, den es für die Rückgabe auswählt.

Die GpsLocationProvider.javaDatei verfügt über eine reportLocationMethode, die vom nativen Code aufgerufen wird und deren Genauigkeit als Wert übergeben wird. Somit scheint zumindest im Rahmen keine Berechnung zu erfolgen.

Das GPS-Git-Repo von qcom (von dem ich glaube, dass es das Qualcomm ist) übergibt den hor_unc_circularParameter für die Genauigkeit, was zu implizieren scheint, dass zumindest diese Implementierung CER verwendet.

Paracycle
quelle
4

Wenn es sich, wie in den Dokumenten angegeben, um eine Genauigkeit handelt, befindet sich die tatsächliche Position des Benutzers irgendwo innerhalb von QUOTED_LOCATION +/- ACCURACY. Die Genauigkeit definiert also einen Radius, in dem Sie den Benutzer erwarten können. Was die Dokumente nicht sagen, ist, wie sicher Sie sein können, dass sich der Benutzer innerhalb des Radius befindet - der Standard ist 95%, also denke ich das.

Joseph Earl
quelle
1
Ich bin mehr an dem Vertrauen interessiert, wie die Frage zeigt. Könnte eine von vielen Messungen sein gpsinformation.net/main/errors.htm
Samuel
1

Ich verstehe, dass Sie nach einer eindeutigen Antwort in Bezug auf die Wahrscheinlichkeit fragen, aber ich denke, dass hier zwei Dinge zu beachten sind.

Zunächst muss der Anbieter entscheiden, was er in diesen Wert einfügen möchte. Je nach Anbieter ist dies möglicherweise nur eine schlechte Vermutung.

Zweitens kann es hilfreich sein, dies als potenzielles Rundungsproblem zu betrachten. Wenn ich versuche, Ihren Standort anhand einer Anzahl von Eingaben zu berechnen und einige dieser Eingaben nur für eine bestimmte Anzahl von signifikanten Stellen verfügbar sind, ist es nur möglich, einen Standort mit einer bestimmten Anzahl von signifikanten Stellen zu berechnen.

Stellen Sie es sich so vor - was ist "über" eins plus "über" einhundert? Wahrscheinlich ungefähr einhundert, weil die Genauigkeit von einhundert wahrscheinlich kleiner als die Größe von 1 ist. Wenn ich plötzlich sage, dass die Antwort ungefähr 101 ist, kann dies bedeuten, dass ich ein Maß an Genauigkeit impliziere, das nicht vorhanden war. Wenn ich jedoch tatsächlich die Genauigkeit spezifiziere, kann ich sagen, dass 100 plus oder minus 10 plus 1 plus oder minus 0,1 101 plus oder minus 10 ist. Ich verstehe, dass sich dies im Allgemeinen auf ein Konfidenzniveau von 95% bezieht ( Standardfehler), aber auch hier wird davon ausgegangen, dass der Anbieter Statistiken versteht und nicht nur rät.

dscheffy
quelle
Danke - das ist sehr hilfreich. Bei der ersten Ausgabe bestand mein Ansatz bei der Standortverfolgung darin, Genauigkeitsschätzungen zu sammeln, aber auch eine "Realitätsprüfung" durchzuführen, indem Entfernungen und Zeiten zwischen aufeinanderfolgenden Punkten berechnet und dann diejenigen verworfen wurden, die unrealistische Geschwindigkeiten erforderlich gemacht hätten (selbst wenn dies manchmal der Fall ist In diesem Fall wird berichtet, dass sie eine genaue Genauigkeit aufweisen. Wenn Sie weitere Vorschläge haben, würde ich sie gerne hören.
John RB Palmer