Android'de konum doğruluğu nasıl ölçülür?


96

GetAccuracy () tarafından döndürülen doğruluk ölçümlerinin doğru yorumlanmasını bilen var mı? Örneğin, şu şekilde hesaplanırlar:

  • Dairesel Hata Olasılığı (yani, doğru anlarsam% 50 güven çemberinin yarıçapı)?

  • % 95 güven çemberinin yarıçapı?

  • başka bir şey?

Ek olarak, kullanılan gerçek hesaplamalar nelerdir ve bunlara ne kadar güvenebiliriz? Konum tahmininin kaynağına bağlı mı (GPS'e karşı ağ)?

Bana verebileceğin herhangi bir tavsiye için çok teşekkürler.


4
Soru, konumun nasıl elde edildiği değil, konum sınıfındaki getAccuracy'nin dönüş değerinin gerçek tanımıyla ilgilidir.
Janusz

Yanıtlar:


68

Sorunun bir bölümünü yanıtlamak için, sayı, the radius of 68% confidence,gerçek konumun ölçülen noktanın metre cinsinden yarıçapı içinde olma ihtimalinin% 68 olduğu anlamına gelir. Hataların normal olarak dağıldığını varsayarsak (bu, belgelerin dediği gibi, mutlaka doğru değildir), bu, bunun bir standart sapma olduğu anlamına gelir. Örneğin, Location.getAccuracy10 döndürürse, cihazın gerçek konumunun bildirilen koordinatlara 10 metre yakınlık içinde olma ihtimali% 68'dir.

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


Teşekkürler Karl. Şimdi belgeleri güncellediklerini görüyorum, bu çok yardımcı oluyor. Dscheffy'nin noktasının da önemli olduğunu düşünmeme rağmen tam olarak aradığım şey buydu.
John RB Palmer

@paracycle Ayrıca, doğruluğun sağlayıcı tarafından rapor edildiğini ve sonunda istedikleri gibi işlemeye karar verebileceğini de iyi bir noktaya getiriyor. Örneğin, tam bir koordinat girdiğiniz için DDMS kullanmak doğruluk için 0,0 değerini sağlayacaktır.
karl

11
@AidenStrydom, hayır. Doğruluk 1000 değerini döndürürse bu, gerçek konumun sağlanan konumun 1000 metre yakınında olma ihtimalinin% 68 olduğu anlamına gelir.
karl

Doğruluk hava koşullarından etkilenir mi?
Juri Tichomirow

@karl% 32'nin 10 metrenin ötesinde olduğunu mu söylüyorsunuz? (ör. 11 veya 12 veya üstü metre).
david

45

Sınırlı bir pil ömrünüz olduğunda ve binalarda ve birçok büyük bina vb. Alanlarda GPS sinyali olmadığında konum, yapılması zor bir iştir. Ancak Android bunu çok daha kolay hale getirir. Bir konum talep ettiğinizde, sadece hangi doğruluğa ihtiyacınız olduğunu belirtmeniz gerekir.

Bir accuracyörnek istediğinizi belirtirseniz *100 meters*, Android konumu almaya çalışacak ve 70 metre doğruluk için bir konum alabilirse size geri dönecektir, ancak Android 100'den daha yüksek doğrulukta bir konum alabilirse metre, uygulamanız bu doğrulukta bir konum bulunana kadar bekleyecek ve hiçbir şey almayacaktır.

Tipik olarak Android, önce Hücre Kimliğini alacak ve daha sonra bu Hücre Kimliğini eşleyen Google sunucusuna gönderecektir ve sunucu, örnek 1000 metre için düşük bir doğrulukla enlem ve boylamı döndürecektir. Bu zamana kadar Android, bölgedeki tüm WiFi ağlarını görmeye çalışacak ve onlar hakkındaki bilgileri de Google sunucusuna gönderecek ve mümkünse Google sunucusu, örneğin 800 metre için daha yüksek doğrulukta yeni bir konum döndürecektir.

Bu zamana kadar GPS açık olacaktır. GPS cihazının soğuk bir başlangıçtan sonra bir sabitleme alması için en az 30 saniyeye ihtiyacı vardır, bu nedenle bir düzeltme alabilirse, enlem ve boylamı döndürecektir, ancak yine bir doğrulukla, bu örnek 100 metre için mümkün olan en yüksek olacaktır. GPS ne kadar uzun süre çalışırsa, o kadar iyi doğruluk elde edersiniz.

Önemli uyarı: İlk iki yöntem internet bağlantısı gerektirir. Veri bağlantısı yoksa, GPS için beklemeniz gerekecektir, ancak cihaz bir binadaysa, muhtemelen konum bulamayacaksınız.


14
Bu, "100m doğruluk" un ne anlama geldiği sorusunu gerçekten yanıtlamaz.
Tomas

2
@ satıcı, lütfen bu bilgiyi aldığınız referansı belirtin. Cevabınız nasıl çalıştığını anlamama yardımcı oldu, teşekkür ederim.
adil bir oyuncu

@ adil bir oyuncu Bilginin bir kısmı developer.android.com'da ve Android'deki konum tabanlı servislerle bazı testler yaptım.
vendor

9
Hangi API 100 metrelik doğruluğu belirlemenize izin verir? ACCURACY_COARSE, ACCURACY_FINE, ACCURACY_HIGH, ACCURACY_LOW, ACCURACY_MEDIUM Kriterlerini görüyorum, ancak 100 metre değil.
Cris

Bu cevap neye dayanıyor?
AlikElzin-kilaka

18

GetAccuracy üzerindeki dokümantasyon , doğruluğu metre cinsinden verdiğini söylüyor. Sanırım bu, 60 dönüş değeri alırsanız, sağlanan konumun etrafında 60 metre yarıçaplı bir daire içinde bir yerdesiniz demektir.


1
google haritalarımı ve mevcut konumumu izlersem, çoğu durumda haklısınız demektir. Ayrıca, telefonum gerçek
konumumdan

1
Teşekkürler. GetAccuracy tarafından döndürülen değerin metre cinsinden olduğunu ve bir dairenin yarıçapı olması gerektiğini (veya belki de konum tahmininde rakım da verildiğinde bir küre) olması gerektiğini kabul ediyorum. Ancak bununla ilişkili bir olasılık da olmalıdır ve belgelerin bu olasılığın ne olduğunu veya nasıl ulaşıldığını söylememesi tuhaftır. Birinin YSÖP olabileceğini önerdiği bir çevrimiçi gönderi gördüm, ancak bu sadece bir tahmin gibi görünüyordu, bu yüzden gerçekten mi yoksa% 95 güven çemberi mi yoksa başka bir şey mi olduğunu doğrulamanın bir yolunu bulmak istiyorum.
John RB Palmer


12

Android kaynak koduna hızlı bir bakışta görebildiğim kadarıyla bu, cihazın donanımına ve hangi değeri döndürmeyi seçtiğine bağlıdır.

GpsLocationProvider.javaDosya bir sahiptir reportLocationyöntemi , doğal kodu tarafından çağrılan ve bir değer olarak doğruluk aktarılır. Bu nedenle, en azından çerçevede herhangi bir hesaplama yapılmıyor gibi görünüyor.

QCOM (Ben inanıyorum ki Qualcomm) GPS git repo aktarılması uygunhor_unc_circular en azından o uygulama CER kullandığını, ima görünüyor doğruluk için parametre.


4

Dokümanlarda alıntılandığı gibi, bu bir doğruluksa, o zaman kullanıcıların gerçek konumu QUOTED_LOCATION +/- DOĞRULUK içinde bir yerdedir. Dolayısıyla doğruluk, kullanıcının olmasını bekleyebileceğiniz bir yarıçapı tanımlar. Dokümanların söylemediği şey, kullanıcının yarıçap içinde olduğundan ne kadar emin olabileceğinizdir - standart% 95, bu yüzden sanırım öyle.


1
Sorunun da gösterdiği gibi, özgüvenle daha çok ilgileniyorum. GPSinformation.net/main/errors.htm
Samuel

1

Olasılık açısından kesin bir cevap istediğinizi anlıyorum, ancak burada dikkate alınması gereken iki nokta olduğunu düşünüyorum.

Öncelikle, bu değere ne koymak istediklerine karar vermek sağlayıcıya kalmıştır, bu nedenle sağlayıcıya bağlı olarak, bu sadece kötü bir tahmin olabilir.

İkinci olarak, bunu potansiyel bir yuvarlama problemi olarak düşünmek yardımcı olabilir. Konumunuzu bir dizi girdiye göre hesaplamaya çalışıyorsam ve bu girdilerin bazıları yalnızca belirli sayıda önemli basamak için mevcutsa, o zaman yalnızca belirli sayıda önemli basamak içeren bir konumu hesaplamak mümkündür.

Şöyle düşünün - "yaklaşık" bir artı "yaklaşık" yüz. Muhtemelen yaklaşık yüz, çünkü yüzün doğruluğu büyük olasılıkla 1'in büyüklüğünden daha azdır. Aniden cevabın yaklaşık 101 olduğunu söylersem, o zaman orada olmayan bir doğruluk düzeyini ima edebilirim. Bununla birlikte, doğruluğu gerçekten belirtirsem, 100 artı veya eksi 10 artı 1 artı veya eksi .1, 101 artı veya eksi 10'dur diyebilirim. standart hata), ancak yine, tüm bunlar sağlayıcının istatistikleri anladığını ve sadece tahmin yapmadığını varsayar.


Teşekkürler - bu çok yardımcı oldu. İlk sayıda, konum izleme ile ilgili yaklaşımım, doğruluk tahminleri toplamak ama aynı zamanda birbirini izleyen noktalar arasındaki mesafeleri ve süreleri hesaplayarak ve daha sonra gerçekçi olmayan hızlar gerektirecek olanları (bazen olduğu gibi olsa bile) bir "gerçeklik kontrolü" yapmaktı. durumda, kesin doğruluğa sahip oldukları rapor edilir). Başka önerileriniz varsa, duymak isterim.
John RB Palmer
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.