An optimized workflow to determine the altitude of an observation

you could always use an API like USGS’s elevation query service (which should cover the USA, see https://nationalmap.gov/epqs/ for more info). for example: https://nationalmap.gov/epqs/pqs.php?y=35.587842&x=-83.363864&output=json&units=Meters

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 https://forum.inaturalist.org/t/looking-for-inaturalist-observation-map-visualisation-suggestions/7322/10 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): https://jumear.github.io/stirfry/iNat_map.html?view=elevation&user_id=trscavo&place_id=1

page: https://jumear.github.io/stirfry/iNat_map.html
code: https://github.com/jumear/stirfry/blob/gh-pages/iNat_map.html

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("https://nationalmap.gov/epqs/pqs.php?y="&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.