Why can’t I get as accurate GPS position with ODK Collect as I can get with other apps?

Hi there,

I am wondering why I can’t get as accurate GPS position with ODK Collect as I can get with other apps.

As you can see on the picture below, I did some tests offline with :

  • Samsung J7 smartphone (Android 9) + ODK (blue on below pic)
  • Crosscall COREX3 smartphone (Android 8.1) + ODK (yellow on below pic)
  • CAT S31 smartphone (Android 8.1.0) + ODK (green on below pic)

For each test, I compared the accuracy of the GPS location taken by ODK Collect and (i) Mapit GIS (red on pic below) (ii) Google Maps (iii) Garmin 60 GPS device
I use ODK collect 1.23.3

These tests show that ODK collect was not able to pick up a GPS position as accurately as Mapit GIS or Garmin 60 GPS device or Google Maps, despite a 5m accuracy threshold in ODK. They also show that the issue is not the phone itself, as other apps on the same device are able to provide an accurate position.

Does anyone have an explanation for why ODK collect is less accurate than the other apps ?

Has anyone else encountered the same issue ? Does anyone know why this happens ?

Thanks in advance,


Just wondering, how have you measured the accuracy of the GPS location. From my experience, GPS locations of Google maps are not same all the time, it varies time to time. If you use GPS locator devise, that should be more accurate than a mobile phone. GPS location will always vary if you use google maps on mobile phone or use ODK collect. Users of ODK are using the application considering this minor variation. However, ODK is open source and the source code is available to public for customization if needed.

Hope this answers your question.

Welcome to the ODK forum, @IED! We're glad you're here. When you get a chance, please Introduce yourself here!. I'd also encourage you to add a real picture as your avatar because it helps build community!


1 Like

Hi @IED,

It an Interesting observation, just wondering, did you capture the locations using the different device at the same time, or you had to revisit the location?

Can you elaborate more on how actually you did this simple experiment?


Hi Irman, Hi dicksonsamwel

Thank you for your prompt answers.

@ Irman : I agree : a GPS locator device is more accurate that a mobile phone.

To measure accuracy, I import latitude and longitude recoreded by the GPS device and the ones recoreded by the mobile being tested into a GIS software (Manifold).
This enables me to measure the distance between (i) the point taken by the GPS device (I trust the GPS device provides the right position +/- GPS device accuracy) and (ii) the point taken by the mobile being tested.

@ dicksonsamwel
I did several tests, both :

  • Several devices at the same time (not exactly the same time as I had to press on the button on each device successively)
  • Revisiting the location (same devices and same settings - Offline mode and 5m GPS accuracy threshold- on different days)

...and I got similar results :

The average distance between GPS location taken by ODK Collect and by a GPS device is 10-15meters

Please let me know if you need further details on how I did this simple experiment

Thanks for doing this, @IED. I've been wanting to do some more quantification of the current location-related ODK Collect implementations because there are differences between the various question types and basemaps. More specifically, they use different location providers which means different sensors or combinations of sensors (GPS, wifi, etc) may be used. I think we should make these consistent but it's not entirely clear to me which is the best approach for most users, especially in light of a past problem with the Google Play Services-based provider (see https://github.com/opendatakit/collect/issues/2717 for details).

This kind of analysis is very helpful.

Looking quickly qualitatively at the map, it's not immediately clear to me that Collect does much worse.
Could you please share your raw data including the reported accuracies? Could you also please confirm that you were using the geopoint question type with no map? What Android-level location settings do your devices have? Was wifi available at all locations? Cell service?

Did you also keep track of your actual physical location? For example, there are two red points labeled 10. Do you know where you actually were in that case?

Do note that Android defines accuracy in the documentation as "the radius of 68% confidence. In other words, if you draw a circle centered at this location's latitude and longitude, and with a radius equal to the accuracy, then there is a 68% probability that the true location is inside the circle." That itself is an educated guess that Android is making.


This was one of my question, which I really missed. I think this is an important point. In case if you try to conduct another test, you may try to submit from next to a reference point, for example some lamppost or just corner of a road so that you can determine your physical location.


1 Like

Thanks @LN @A.N.M_AL-IMRAN for your answers !

I recorded the position of the public streelights that are located in the parking lot close to my office. There are 12 streetlights .I did several tests : sometimes in "flight mode", sometimes using the "Only GPS" android location settings. I guess both options should lead to the same GPS position calcultation e.g. using only GPS signals (no Wifi, no Cell). For the test posted on August the 27th, i was in flight mode.
I confirm that I was using the geopoint question with no map.

Yes, I tracked my physical location as I wrote down in my questionnaire the streetlight number. The second 10 is a mistake when writing down this number : it should be number 9. Sorry for this

I will do another test this morning and provide you with the raw data showing the accuracy.

Thanks for the explaination. I did several tests (recoreding the position of the same 12 streetlights) and my subjective impression is that ODK Collect seems less accurate than other app...But I am not able quantify it in terms of probability !

I will conduct another test this morning.
One the image posted on August the 27th, one can see the some of the streetlight I am recording. This image is a Sattelite View from Google that I have imported in the GIS software I was using. But I never use a Google Satelletite View as means to estimate accuracy because (i) I do not fully undertstand how the Google Sattelite view is imported into the GIS software and (ii) from my experience, if you compared GPS point taken by a GPS device and their actual position on the coresponding Google Satelitte View you can have a gap.




Please find below an additional test with the following settings :

  • Offline (mobiles in flight mode)
  • ODK collect 1.23.3
  • GPS position taken by geopint question type with no map
  • 5m accuracy threshold .

I have recorded 12 GPS points (corresponding to the position of 12 streetlights in a parking-lot) with 3 devices at the same time (not exactly the same time as I had to press successively on the "start geopoint" button to lauch the measure)

  • a GPS device (Garmin 60) measuring lat/long with +/-5m accuracy ( grey points on below pic)
  • a Samsung J7 (Android 9) + ODK collect (bue points on below pic)
  • a Crosscall Core X3 (Android 8.1) + ODK collect (yellow points on below pic)

I have imported all GPS location into a GIS software (Manifold) and I have added a satellite image in the background (for ease of reading only - I never use a satellite view to evaluate GPS location accuracy). I have drawn a 5-m raduis circle around each GPS location (because of 5m accuracy threshold).


  • Test on Samsung J7 (see blue points) : 6 geopoints locations (out of 12) seem not consistent with GPS device measurement
  • Test on Crosscall Core X3 (see yellow points) : 9 geopoints locations (out of 12) seem not consistent with GPS device measurement

For ease of reading I did not put on the same map the measurment made through another app (I only use ODK) but from my experience the accuracy can be better with other app

I hope this reply to your questions, and thanks again for your remarks ! I would be glad to understand why there are such gaps between ODK Collect geopoints and the same locations recorded by a GPS device...having a 5m accuracy threshold in ODK Collect


1 Like

Thanks for doing another trial and for describing your scenario in detail!

Unfortunately, airplane mode means different things for different manufacturers so it's not entirely clear what location information other apps might have access to, even in airplane mode. Geopoint with no appearance only accesses the GPS chip.

This looks to me like both devices struggle to get a position when the sky is obscured. That is, points 5, 6 and 7 look like they're partially obscured by trees and are also close to a building. I would expect those to be more difficult conditions for acquiring position.

With such a small sample size, it's hard to draw strong conclusions. My guess is that other apps you've used access other location information even in airplane mode.

Another trial you could do is to use the maps appearance on geopoint to display a map of your current position when the point is captured. If you leave the basemap source selection as Google (see documentation), all available location information will be used. I would expect this to get similar results to other location capture applications.

1 Like