gpt4 book ai didi

r - 使用 R 从网站提取澳大利亚纬度/经度点的高程

转载 作者:行者123 更新时间:2023-12-04 10:14:10 25 4
gpt4 key购买 nike

G'day 大家,

我正在尝试为我拥有的大约 700 个点获取一些高程数据。我想我可能会使用为同一问题提供的代码( Conversion for latitude/longitude to altitude in R ),不幸的是我在使用 geonames 包时出错,并且最佳答案提供的网站没有可用的澳大利亚海拔数据(错误提供如下仅供引用)。

我找到了另一个网站,它提供了非常准确的澳大利亚海拔数据,但我不知道如何从网页中提取信息。我认为它正在使用谷歌海拔 API,但我不知道如何访问它。

当我将“纬度,经度”坐标放入“搜索位置”框中时,它会提供 map 下方的高程数据。但是,我似乎无法在源页面中找到它。网址是http://www.daftlogic.com/sandbox-google-maps-find-altitude.htm .

一些有效的 lon lat 值示例:

-36.0736, 146.9442

-36.0491, 146.4622

我想知道是否有人可以帮我从 R 查询这个站点,并提取高程数据?还是看起来很麻烦?我意识到网站上有一个批处理功能(最多 100 个位置),但是能够从 R 执行此操作会很酷。

谢谢大家,对不起,如果这非常明显。

干杯,
亚当

错误

使用地理名称时:

elevation <- GNgtopo30(adult$lat, adult$lon)
Error in getJson("gtopo30JSON", list(lat = lat, lng = lng)) :
error code 10 from server: Please add a username to each call in order for geonames to be able to identify the calling application and count the credits usage.
In addition: Warning message:
In readLines(u) :
incomplete final line found on 'http://ws.geonames.org/gtopo30JSON? lat=-36.0736&lng=146.9442'

使用查询代码时:
library(RCurl)
library(XML)
url <- paste("http://earthtools.org/height", adult$lat, adult$lon, sep = '/')
page <- getURL(url)
ans <- xmlTreeParse(page, useInternalNodes = TRUE)
Space required after the Public Identifier
SystemLiteral " or ' expected
SYSTEM or PUBLIC, the URI is missing
Extra content at the end of the document
Error: 1: Space required after the Public Identifier
2: SystemLiteral " or ' expected
3: SYSTEM or PUBLIC, the URI is missing
4: Extra content at the end of the document

最佳答案

有一个 Elevation API由 Google 提供,它返回 JSON 或 XML 响应。这是一个使用 JSON 响应的示例,由 fromJSON 解析在 RJSONIO包裹。

googEl <- function(locs)  {
require(RJSONIO)
locstring <- paste(do.call(paste, list(locs[, 2], locs[, 1], sep=',')),
collapse='|')
u <- sprintf('http://maps.googleapis.com/maps/api/elevation/json?locations=%s&sensor=false',
locstring)
res <- fromJSON(u)
out <- t(sapply(res[[1]], function(x) {
c(x[['location']]['lat'], x[['location']]['lng'],
x['elevation'], x['resolution'])
}))
rownames(out) <- rownames(locs)
return(out)
}

m <- matrix(c(146.9442, 146.4622, -36.0736, -36.0491), nc=2)

googEl(m)

lat lng elevation resolution
[1,] -36.0736 146.9442 163 152.7032
[2,] -36.0491 146.4622 171.7301 152.7032
googEl函数需要一个 matrixdata.frame坐标,第一列是经度,第二列是纬度。

关于r - 使用 R 从网站提取澳大利亚纬度/经度点的高程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21593868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com