根据纬度和经度,是否有人知道R中是否有工具可以找到某个位置海拔高度?
答案 0 :(得分:12)
或者您可以使用从地理名称中查找的包,并从srtm3数字高程模型中获取值:
> require(geonames)
> GNsrtm3(54.481084,-3.220625)
srtm3 lng lat
1 797 -3.220625 54.48108
或gtopo30型号:
> GNgtopo30(54.481084,-3.220625)
gtopo30 lng lat
1 520 -3.220625 54.48108
geonames在CRAN上,所以install.packages(“geonames”)将获得它。
这两种模型之间的区别在于它们只是基于卫星数据的近似值。不要期望从中找到山脉。
答案 1 :(得分:11)
更新:Earthtools不再存在,所以这个答案已经过时了。我推荐@ Spacedman的回答。
正如DWin所说,这有两个部分:使用Web服务找到一个好的数据源,然后用R解析它。这个答案使用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)))
答案 2 :(得分:2)
您可以通过Google Maps Elevation API访问高程数据。在R中,您可以通过我的k
包
要使用Google Maps API,您需要一个API密钥
googleway
答案 3 :(得分:1)
有诸如RCurl的R包允许Web查询。还有网络资源,进一步的specfics将需要......好吧,...更具体。
http://gisdata.usgs.net/xmlwebservices2/elevation_service.asmx?op=getElevation