ความแม่นยำของตำแหน่งใน Android วัดได้อย่างไร


96

ไม่มีใครทราบการตีความที่เหมาะสมของการวัดความแม่นยำที่ส่งคืนโดย getAccuracy ()? ตัวอย่างเช่นพวกเขาคำนวณเป็น:

  • Circular Error Probability (หมายถึงถ้าฉันเข้าใจถูกต้องรัศมีของวงกลมความเชื่อมั่น 50%)?

  • รัศมีความเชื่อมั่น 95% วงกลม?

  • อื่น ๆ อีก?

นอกจากนี้การคำนวณจริงที่ใช้คืออะไรและเราสามารถพึ่งพาได้มากแค่ไหน? ขึ้นอยู่กับแหล่งที่มาของการประมาณตำแหน่ง (GPS เทียบกับเครือข่าย) หรือไม่

ขอบคุณมากสำหรับคำแนะนำใด ๆ ที่คุณสามารถให้ฉันได้


4
คำถามไม่ได้อยู่ที่วิธีการรับตำแหน่งมันเกี่ยวกับนิยามที่แท้จริงของค่าส่งคืนของ getAccuracy ในคลาสสถานที่ตั้ง
Janusz

คำตอบ:


68

เพื่อตอบคำถามส่วนหนึ่งตัวเลขนี้the radius of 68% confidence,หมายความว่ามีโอกาส 68% ที่ตำแหน่งที่แท้จริงจะอยู่ในรัศมีของจุดที่วัดเป็นเมตร สมมติว่ามีการกระจายข้อผิดพลาดตามปกติ (ซึ่งตามที่เอกสารบอกว่าไม่จำเป็นต้องเป็นจริง) นั่นหมายความว่านี่เป็นค่าเบี่ยงเบนมาตรฐาน ตัวอย่างเช่นหากLocation.getAccuracyส่งกลับ 10 แสดงว่ามีโอกาส 68% ที่ตำแหน่งที่แท้จริงของอุปกรณ์จะอยู่ภายใน 10 เมตรจากพิกัดที่รายงาน

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


ขอบคุณ Karl ฉันเห็นว่าตอนนี้พวกเขาได้อัปเดตเอกสารซึ่งมีประโยชน์มาก นี่คือสิ่งที่ฉันกำลังมองหาแม้ว่าฉันคิดว่าประเด็นของ dscheffy ก็สำคัญเช่นกัน
John RB Palmer

@paracycle ยังเป็นจุดที่ดีที่ผู้ให้บริการรายงานความถูกต้องซึ่งท้ายที่สุดแล้วสามารถตัดสินใจที่จะจัดการได้ตามที่พวกเขาต้องการ ตัวอย่างเช่นการใช้ DDMS จะให้ค่าความถูกต้อง 0.0 เนื่องจากคุณกำลังกำหนดพิกัดที่แน่นอน
karl

11
@AidenStrydom ไม่นะ หากความแม่นยำส่งกลับ 1000 หมายความว่ามีโอกาส 68% ที่ตำแหน่งจริงจะอยู่ในระยะ 1,000 เมตรจากตำแหน่งที่ระบุ
karl

ความแม่นยำได้รับผลกระทบจากสภาพอากาศหรือไม่?
Juri Tichomirow

@karl คุณหมายความว่า 32% เกิน 10 เมตรหรือเปล่า? (เช่น 11 หรือ 12 หรือสูงกว่าเมตร)
david

45

สถานที่ตั้งเป็นงานที่ยุ่งยากเมื่อคุณมีแบตเตอรี่ที่ จำกัด และเมื่อไม่มีสัญญาณ GPS ในอาคารและในพื้นที่ที่มีอาคารขนาดใหญ่จำนวนมากและอื่น ๆ แต่ Android ช่วยให้ง่ายขึ้นมาก เมื่อคุณขอตำแหน่งคุณต้องระบุความแม่นยำที่คุณต้องการ

หากคุณระบุว่าต้องการaccuracyตัวอย่างเช่น*100 meters*Android จะพยายามรับตำแหน่งและหากได้ตำแหน่งที่มีความแม่นยำ 70 เมตรระบบจะคืนตำแหน่งให้คุณ แต่ถ้า Android สามารถรับตำแหน่งที่มีความแม่นยำสูงกว่า 100 เมตรแอปพลิเคชันของคุณจะรอและจะไม่ได้รับอะไรเลยจนกว่าจะมีตำแหน่งที่แม่นยำดังกล่าว

โดยปกติ Android จะได้รับ Cell ID ก่อนจากนั้นจะส่งไปยังเซิร์ฟเวอร์ของ Google ซึ่งจะจับคู่รหัสเซลล์ดังกล่าวและเซิร์ฟเวอร์จะส่งคืนละติจูดและลองจิจูดด้วยความแม่นยำซึ่งต่ำสำหรับตัวอย่าง 1,000 เมตร ในเวลานี้ Android จะพยายามดูเครือข่าย WiFi ทั้งหมดในพื้นที่และจะส่งข้อมูลเกี่ยวกับเครือข่ายเหล่านี้ไปยังเซิร์ฟเวอร์ของ Google ด้วยและหากเป็นไปได้เซิร์ฟเวอร์ของ Google จะส่งคืนตำแหน่งใหม่ที่มีความแม่นยำสูงกว่าตัวอย่างเช่น 800 เมตร

เมื่อถึงเวลานี้ GPS จะเปิดขึ้น อุปกรณ์ GPS ต้องใช้เวลาอย่างน้อย 30 วินาทีจากการเริ่มเย็นเพื่อรับการแก้ไขดังนั้นหากสามารถแก้ไขได้จะส่งคืนละติจูดและลองจิจูด แต่มีความแม่นยำอีกครั้งซึ่งจะสูงที่สุดเท่าที่จะเป็นไปได้สำหรับตัวอย่าง 100 เมตร ยิ่ง GPS ทำงานได้นานเท่าใดคุณก็จะได้รับความแม่นยำมากขึ้นเท่านั้น

ประกาศสำคัญ:สองวิธีแรกต้องใช้การเชื่อมต่ออินเทอร์เน็ต หากไม่มีการเชื่อมต่อข้อมูลคุณจะต้องรอ GPS แต่ถ้าอุปกรณ์อยู่ในอาคารคุณอาจไม่ได้รับตำแหน่ง


14
นั่นไม่ได้เป็นการตอบคำถามว่า "ความแม่นยำ 100 ม." หมายถึงอะไร
Tomas

2
@vendor โปรดระบุข้อมูลอ้างอิงที่คุณได้รับข้อมูลนี้ คำตอบของคุณช่วยให้ฉันเข้าใจว่ามันทำงานอย่างไรขอบคุณ
ผู้เล่นที่ยุติธรรม

@ ผู้เล่นที่ยุติธรรมข้อมูลบางส่วนอยู่ใน developer.android.com และฉันได้ทำการทดสอบบางอย่างกับบริการตามตำแหน่งใน Android
ผู้ขาย

9
API ใดช่วยให้คุณระบุความแม่นยำได้ 100 เมตร ฉันเห็นเกณฑ์ ACCURACY_COARSE, ACCURACY_FINE, ACCURACY_HIGH, ACCURACY_LOW, ACCURACY_MEDIUM แต่ไม่ใช่ 100 เมตร
Cris

คำตอบนี้ขึ้นอยู่กับอะไร?
AlikElzin-kilaka

18

เอกสารเกี่ยวกับgetAccuracyบอกว่าส่งคืนความแม่นยำเป็นเมตร ฉันเดาว่านี่หมายความว่าถ้าคุณได้รับค่าตอบแทนเป็น 60 คุณจะอยู่ที่ไหนสักแห่งในวงกลมที่มีรัศมี 60 เมตรรอบ ๆ ตำแหน่งที่ให้มา


1
ถ้าฉันดูแผนที่ Google ของฉันและตำแหน่งปัจจุบันของฉันคุณถูก ... ในกรณีส่วนใหญ่ มันเกิดขึ้นเช่นกันที่โทรศัพท์ของฉันแสดงตำแหน่งของฉันห่างจากตำแหน่งจริงของฉันประมาณ 2 หรือ 3 กิโลเมตร ... ฉันสนใจปัญหานี้ด้วย
poeschlorn

1
ขอบคุณ. ฉันยอมรับว่าค่าที่ส่งคืนโดย getAccuracy เป็นเมตรและต้องเป็นรัศมีของวงกลม (หรืออาจเป็นทรงกลมเมื่อกำหนดระดับความสูงในการประมาณตำแหน่งด้วย) แต่ก็ควรมีความน่าจะเป็นที่เกี่ยวข้องด้วยและเป็นเรื่องแปลกที่เอกสารไม่ได้บอกว่าความน่าจะเป็นนั้นคืออะไรหรือมาถึงอย่างไร ฉันเคยเห็นโพสต์ออนไลน์ที่มีคนแนะนำว่าอาจเป็น CEP แต่ดูเหมือนว่าจะเป็นเพียงการคาดเดาดังนั้นฉันจึงอยากหาวิธียืนยันว่าเป็นแบบนั้นหรือเป็นวงกลมความเชื่อมั่น 95% หรืออย่างอื่น
John RB Palmer

1
ต่อไปนี้เป็นลิงก์บางส่วนที่มีประโยชน์ในการทำความเข้าใจคำถาม (แต่ไม่สามารถแก้ไขได้): users.erols.com/dlwilson/gpsacc.htm groups.google.com/group/android-developers/browse_thread/thread/…
John RB Palmer

12

เท่าที่ฉันเห็นได้จากการดูซอร์สโค้ด Android อย่างรวดเร็วสิ่งนี้ขึ้นอยู่กับฮาร์ดแวร์ของอุปกรณ์และค่าที่เลือกคืน

GpsLocationProvider.javaไฟล์มีreportLocationวิธีการที่ได้รับการเรียกโดยรหัสพื้นเมืองและได้รับผ่านความถูกต้องเป็นค่า ดังนั้นจึงไม่มีการคำนวณใด ๆ เกิดขึ้นในกรอบอย่างน้อยที่สุด

QCOM (ซึ่งผมเชื่อว่าเป็น Qualcomm) GPS repo คอมไพล์จะผ่านhor_unc_circularพารามิเตอร์เพื่อความถูกต้องซึ่งดูเหมือนว่าจะบ่งบอกว่าอย่างน้อยการใช้งานที่ใช้ CER


4

ถ้าตามที่ยกมาในเอกสารเป็นความถูกต้องตำแหน่งที่แท้จริงของผู้ใช้จะอยู่ที่ไหนสักแห่งภายใน QUOTED_LOCATION +/- ACCURACY ดังนั้นความแม่นยำจึงกำหนดรัศมีที่คุณคาดหวังว่าผู้ใช้จะอยู่ สิ่งที่เอกสารไม่ได้บอกคือคุณแน่ใจได้อย่างไรว่าผู้ใช้อยู่ในรัศมี - มาตรฐานคือ 95% ดังนั้นฉันเดาว่านี่


1
ฉันสนใจในความมั่นใจมากขึ้นตามที่คำถามระบุ อาจเป็นหนึ่งในหลาย ๆ การวัดgpsinformation.net/main/errors.htm
ซามูเอล

1

ฉันเข้าใจว่าคุณกำลังขอคำตอบที่ชัดเจนในแง่ของความน่าจะเป็น แต่ฉันคิดว่ามีสองสิ่งที่ต้องพิจารณาที่นี่

ก่อนอื่นมันขึ้นอยู่กับผู้ให้บริการที่จะตัดสินใจว่าพวกเขาต้องการใส่ค่านี้อย่างไรดังนั้นอาจเป็นการเดาที่ไม่ถูกต้องทั้งนี้ขึ้นอยู่กับผู้ให้บริการ

ประการที่สองอาจช่วยให้คิดว่านี่เป็นปัญหาในการปัดเศษที่อาจเกิดขึ้น หากฉันกำลังพยายามคำนวณตำแหน่งของคุณตามจำนวนอินพุตและอินพุตเหล่านั้นบางส่วนมีให้สำหรับเลขนัยสำคัญจำนวนหนึ่งเท่านั้นจึงเป็นไปได้ที่จะคำนวณสถานที่ด้วยตัวเลขที่มีนัยสำคัญที่กำหนดเท่านั้น

คิดอย่างนี้ - "หนึ่งบวก" เกี่ยวกับ "หนึ่งร้อยคืออะไร อาจจะประมาณหนึ่งร้อยเพราะความแม่นยำของหนึ่งในร้อยนั้นน่าจะน้อยกว่าขนาด 1 ถ้าจู่ๆฉันบอกว่าคำตอบคือประมาณ 101 ฉันอาจจะลงเอยด้วยระดับความแม่นยำที่ไม่มี อย่างไรก็ตามหากฉันระบุความถูกต้องจริงฉันสามารถพูดได้ว่า 100 บวกหรือลบ 10 บวก 1 บวกหรือลบ 1 คือ 101 บวกหรือลบ 10 ฉันเข้าใจว่าโดยทั่วไปแล้วนี่หมายถึงระดับความเชื่อมั่น 95% ( ข้อผิดพลาดมาตรฐาน) แต่อีกครั้งถือว่าผู้ให้บริการเข้าใจสถิติและไม่ใช่แค่การคาดเดา


ขอบคุณ - สิ่งนี้มีประโยชน์มาก ในประเด็นแรกแนวทางของฉันในการติดตามตำแหน่งคือการรวบรวมค่าประมาณความแม่นยำ แต่ยังทำการ "ตรวจสอบความเป็นจริง" โดยการคำนวณระยะทางและเวลาระหว่างจุดต่อเนื่องแล้วทิ้งสิ่งที่ต้องใช้ความเร็วที่ไม่สมจริง (แม้ว่าในบางครั้ง กรณีมีรายงานว่ามีความถูกต้องแม่นยำ) หากคุณมีข้อเสนอแนะอื่น ๆ ฉันชอบที่จะได้ยินพวกเขา
John RB Palmer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.