Is the iNat app on Android too trusting of GPS stored in a photo?

Platform: Android 15
App version number: the current one in May 2025.

There may be an issue with some iNat records created from a photo. It seems to me that iNat uses the GPS Lat-Lon provided by the phone, as stored in the EXIF data of the photo, without question. It should have an associated geographical uncertainty (radius) but I cannot find this in the EXIF.

A while ago I used iNat to record a butterfly from a photo image. The photo was taken first and then given to the iNat app. This observation is https://uk.inaturalist.org/observations/288425441 and my colleague, who was at the same field meeting, noticed (once the record reached iRecord) that it is out by about 5 km NE of the actual site at BNG TQ02843536.

Perhaps the GPS information was inaccurate because the phone was activated only a few seconds before the photo was taken, but this is only a guess.

I have extracted some of the EXIF fields (as shown by IrfanView) from the original photo and added some markup. Feel free to ask me for any relevant named fields that I’ve overlooked.

  • Model - moto g54 5G
  • GPS-IFD-Offset - 3904
  • ExifVersion - 0220
  • DateTimeOriginal - 2025:05:13 11:45:38 < BST
  • GPS information: -
  • GPSVersionID - 2.2.0.0
  • GPSLatitudeRef - N
  • GPSLatitude - 51 9 22.5958 (51.156277)
  • GPSLongitudeRef - W < this makes the decimal Lon value negative
  • GPSLongitude - 0 30 44.881199 (0.512467) < so the full lat-lon is 51°09’22.6"N 0°30’44.9"W = 51.156277, -0.512467
  • GPSAltitudeRef - Above Sea Level
  • GPSAltitude - 0 m
  • GPSTimeStamp - 10 45 36 < (?always) 1 hour behind. Is this always GMT? Most likely the difference is a Daylight Saving effect relative to the ‘DateTimeOriginal’ value (above) which is local time BST.
  • GPSDateStamp - 2025:05:13

My ‘Camera’ app on the phone has always had ‘Use precise location’ enabled.

If this is a known issue then I apologise. Otherwise I think it should be addressed because 5 km is a significant distance.

My phone is relatively new so should it provide an uncertainty to the Camera app? Should the correct uncertainty be available to iNat? Should iNat warn the user of a large uncertainty radius? Should I have used the iNat app differently?

Please see also the rather long and inconclusive discussion from 2023 here > https://forum.inaturalist.org/t/missing-location-accuracy-data/38360

In my experience, most Android devices - even newer ones - don’t record GPS uncertainty/accuracy data in the standard camera app. (iPhones have been doing it since iOS 11 or so, I think.). There isn’t much iNat can do about it aside from maybe giving people a reminder or something to check their locations when importing photos.

6 Likes

More interesting is how you can prevent that it is so inaccurate is. Before march 2025 the location was within 5 meter but now it is less accure. I wonder what setting I changed, or is it related to an Android version update?

1 Like

When I’m in the desert or in the redwoods and away from any cell towers or wifi and quickly snap a photo with my iPhone’s camera, it will sometimes record accuracy radii of 5 km or more as it hasn’t had time to get an accurate location reading.

2 Likes

Yes, this is a source of problems, at least on iPhone. With that in mind, I consider the first photo a throw-away photo and always take multiple photos. Actually, that’s how I learned how my iPhone performs…by routinely taking multiple photos and comparing GPS coordinates in the web uploader upon upload. Caveat: the web uploader is not optimized for this process. It takes numerous gestures to determine the GPS coordinates of a photo, and additional gestures to transfer the GPS coordinates from one photo to the other. (Remember, the GPS coordinates of the first photo automatically become the GPS coordinates of the observation.)

I’ve also discovered I get better results in airplane mode. Most of my field trips are to areas with poor or no cell reception (let alone WI-FI), so dropping into airplane mode at the trailhead has become a standard part of my routine. Of course YMMV, so you probably need to experiment given your particular equipment and usage.

3 Likes

With my current (few years old Motorolo G52) Android phone I have to open the map app before taking the photo, otherwise I am virtually guaranteed to get the coordinates determined only from the cell stations and often several km off.

What I do on longer trips is to have some app logging my way, that makes it polling the GPS for the coordinates every few seconds. Alas, even that is not 100% error free and some photos still get the cell coordinates instead.

I am not sure how common that is but phone-reported coordinates must sometimes be taken with a large grain of salt.

2 Likes

Phones have kinda been notorious for this for a long time.

I also follow the “take many pictures of the subject to make sure the phone app has time to pull GPS coords” method, but I also visually verify the location on the map when it marks the observation location. My weather app also very frequently requests my location. I’m not sure if that also helps or not.

IME, the more recent your phone is, the less this is a problem. It would be nice if Android devices stored an uncertainty radius in the photo, though.

Yes, this is exactly the situation we need to be aware of. I was in woodland in this example.
Your comment and those of @trscavo and @vladimir_fuka (with a very similar phone) show what a minefield this is. Could the iNat app warn if the GPS reading hasn’t settled? Or does it only ever read the GPS from the image(s)?
What I don’t understand is how G Maps seems to get my initial position right almost instantly.

if you use the iNat app itself to calculate coordinates, it will try to obtain a reasonably accurate location before recording the coordinates, and it will record a calculated accuracy measurement, even if you stop the app’s coordinate calculation before it has had a chance to get a reasonably accurate measurement.

but if the location comes from a photo which you took using some other app, the iNat app has no way to know how that other app got that measurement. so there’s not really a great way for the app to say whether the coordinates stored in any particular image are reasonable or not. even if you tried to implement some sort of check to make sure that the location of the photo isn’t far from the current location of the device, it might not work reliably if, say, you’re in a fast-moving vehicle or if a long time has passed since you took the photo originally vs the time you’re uploading it.

the only other option is to provide users some onboarding, with best practices, etc., but that can be a heavy lift for an app that has many different workflows, operates on many different kinds of devices, and whose users speak many languages.

but to go back to your original reason for this post, i don’t think what you’re describing here is a bug. it’s just a function of imperfect practices and conditions.

4 Likes

I agree this isn’t a bug, I moved the discussion to General.

The camera has no time to wait for a fix and uses whatever is available? But I agree, the problem seems to be limited to the location in photo’s.

I have an Android phone too and the accuracy of the GPS is high, even naming the street the photo was taken. When I import it to iNat, the location stays the same. Nonetheless, I always walk with my phone on Airplane mode which seems to give me better results when I have less signal.

Google maps is probably pinging location in the background so it already has a broad idea of where you are and can probably use more ways to get your location than your camera app.

When I use an external map application to view usgs maps or the like, it takes a few second to load my position then a few more to narrow it down to a meter