An optimized workflow to determine the altitude of an observation

I often calculate the altitude of an observation before I make an identification. This is useful for determining the reasonableness of observation data, and in some cases the altitude can provide direct evidence for (or against) the species in question.

I asked about the altitude of observations before but let me say up front that inspecting the contour lines of the google map is not an option. It just doesn’t work. I don’t know if that’s a bug or user error.

Here’s the workflow I’m using to determine the altitude based on the given GPS coordinates:

  1. Highlight the string “35.587842Lon: -83.363864” on the Details menu
  2. Copy the string to the clipboard
  3. Launch an external web app
  4. Paste the string into the user interface of the web app
  5. Edit the string so that it looks like: “35.587842,-83.363864”
  6. Copy the corresponding altitude from the web app to the clipboard
  7. Paste the altitude into an iNat comment

FWIW, the external web app is If you have any suggestions for optimizing this cumbersome workflow, I’d love to hear them.

you could always use an API like USGS’s elevation query service (which should cover the USA, see for more info). for example:

alternatively, if you just want to get a rough idea of altitude on a map, you could always make your own map that has your own choice of elevation contours and your observation set of interest. (see for some info on creating such a map in ArcGIS Online, which also should have lots of contour maps available in its publicly available layers collection.)

UPDATE: here’s a quick and dirty map that i made that can give you iNat observations on top of the USGS National Topo Map, and when you click on a particular observation marker, it can return some information about the observation, including elevation, according to USGS. (since this uses USGS as the source, it will provide elevation only for USA locations.)

usage example (gets observations for trscavo in the USA, with elevations):


theoretically it would be possible to programmatically take a set of your US observations, ping USGS for elevation, and then write those elevations back to the observations in iNat, perhaps in an observation field. it shouldn’t be super difficult to do that for someone who is willing to do a little coding, but i’m not going to do it (at least not today).

if you’re not comfortable with coding, you can still take advantage of the USGS API via, say, Excel. suppose you had a list of coordinates with Lat in column A and Long in column B (and no header row). then you could create the following formulas:

  • in C1: =WEBSERVICE(""&A1&"&x="&B1&"&units=Feet&output=xml")
  • in D1: =MID($C1,FIND("<Elevation>",$C1)+11,FIND("</Elevation>",$C1)-FIND("<Elevation>",$C1)-11)
  • in E1: =MID($C1,FIND("<Units>",$C1)+7,FIND("</Units>",$C1)-FIND("<Units>",$C1)-7)

then if you fill down columns C to E, you would get something like this:

as far as i can tell, the USGS elevation query service has no limits and is pretty fast. so although i haven’t tried, you should be able to do this for hundreds or maybe even thousands of records without issue.

This may not be as optimized as you are wishing for, but I have successfully used the tools linked at

These are especially handy for bulk lookup of elevations for large sets of coordinates, but there are also forms for looking up a single coordinate pair. Coverage is world-wide, with expected differences in attainable precision for different parts of the world.

Or, if I happen to be looking at a location in Google Earth, it’s easy to hover and read the elevation directly from the status bar. You just have to have the Terrain layer turned on.

Thanks for the links and the sample code. If I had a batch of altitudes to compute, this would probably be the way to go.

Thanks. The “quick single-point DEM database lookup” at the bottom of that page is much easier than what I’m doing now.

Most of the external tools I’ve worked with (the USGS elevation query service being a notable exception) require a comma-separated lat-long datum (as shown in step 5 of the original workflow). If the iNat web app had a feature to copy the GPS coordinates directly to the clipboard, my problem would be solved:

  1. Copy the comma-separated GPS coordinates to the clipboard
  2. Switch browser windows and paste the coordinates into a form
  3. Submit the form
  4. Copy the altitude from the web app to the clipboard
  5. Paste the altitude into an iNat comment

One-click access to the comma-separated GPS coordinates…would others find that useful?

Plugging in the coordinates somewhere else can sometimes just be faster, but looking at the terrain maps can tell you more useful info sometimes too, like the aspect the plant is growing on or how steep the slope is. Are the contour lines not showing up at all? They’re still working for me on Chrome, in the US. I wonder if you are zoomed in too far? A screenshot would help. :)


1 Like

The contour lines appear if I zoom in just the right amount. However, given the size of my screen and my marginal eyesight, it’s just not feasible for me to determine the altitude from that. It’s a usability issue.

That’s true in my case.