Does anyone know if there is a tool in R to find the height above sea level of a location, given the latitude and longitude ?
Altitude cannot be calculated from coordinates directly. However, NASA's satellites scoured the Earth's surface with radars and more or less accurately modeled the elevation of each point on the globe.
Or you can use the package that looks up from geonames, and get the value from the srtm3 digital elevation model:
First get a geonames username by registering at geonames.org
. Then set it:
> options(geonamesUsername="myusernamehere")
then:
> require(geonames)
> GNsrtm3(54.481084,-3.220625)
srtm3 lng lat
1 797 -3.220625 54.48108
or the gtopo30 model:
> GNgtopo30(54.481084,-3.220625)
gtopo30 lng lat
1 520 -3.220625 54.48108
geonames is on CRAN so install.packages("geonames") will get it.
The difference between these two models is because they are only approximations based on satellite data. Don't go expecting to pinpoint mountains from this.
Update: Earthtools no longer exists, so this answer is obsolete. I recommend @Spacedman's answer instead.
As DWin said, there are two parts to this: find a good source of data with a web service, then parse it in R. This answer uses the earthtools.org
service.
library(RCurl)
library(XML)
latitude <- 52.4822
longitude <- -1.8946
url <- paste(
"http://www.earthtools.org/height",
latitude,
longitude,
sep = "/"
)
page <- getURL(url)
ans <- xmlTreeParse(page, useInternalNodes = TRUE)
heightNode <- xpathApply(ans, "//meters")[[1]]
(height <- as.numeric(xmlValue(heightNode)))
You can access elevation data through Google Maps Elevation API. And in R you can use this through my googleway
package
To use Google Maps API you need an API key
library(googleway)
api_key <- "your_api_key"
df_locations <- data.frame(lat = c(54.481084), lon = c(-3.220625))
google_elevation(df_locations = df_locations, key = api_key)
# $results
# elevation location.lat location.lng resolution
# 1 813.9291 54.48108 -3.220625 610.8129
#
# $status
# [1] "OK"
There are R packages such as RCurl that allow web queries. There are also web resources, Further specfics will require .... well, ... more specifics.
http://gisdata.usgs.net/xmlwebservices2/elevation_service.asmx?op=getElevation
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With