osmar::get_osm() 下载 OSM 数据失败:SYSTEM 或 PUBLIC,URI 丢失

Error in osmar::get_osm() downloading OSM data fails: SYSTEM or PUBLIC, the URI is missing

我正在关注 tutorial 如何使用 osmar 包在 R 中下载 OSM 数据,所以代码是:

library(osmar)
src <- osmsource_api()
bb <- center_bbox(174.76778, -36.85056, 700, 700)
ua <- get_osm(bb, source = src)

当我运行这最后一行时,出现这个错误:

Space required after the Public Identifier
SystemLiteral " or ' expected
SYSTEM or PUBLIC, the URI is missing
Opening and ending tag mismatch: hr line 7 and body
Opening and ending tag mismatch: body line 4 and html
Premature end of data in tag html line 2
Error: 1: Space required after the Public Identifier
2: SystemLiteral " or ' expected
3: SYSTEM or PUBLIC, the URI is missing
4: Opening and ending tag mismatch: hr line 7 and body
5: Opening and ending tag mismatch: body line 4 and html
6: Premature end of data in tag html line 2

我不确定这是什么意思。当我 google 这个错误时,我只能看到与 Bioconductor 和 biomaRt 相关的东西,这与我的工作无关。但是,我认为这与 R 与 OSM 网站的连接有关(?)。所以我想知道是否有人知道如何修复它的一些技巧。谢谢!

您看到的错误消息是指来自服务器的以下响应。这基本上意味着 osmar 包试图通过 HTTP 下载,但服务器将您重定向到 HTTPS 位置。出于某种原因,osmar 没有遵循此重定向并失败。您可能应该将此问题报告给包所有者以修复它。

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://www.openstreetmap.org/api/0.6/map/?bbox=174.763855598139,-36.8537138679267,174.771704401861,-36.8474061320733">here</a>.</p>
<hr>
<address>Apache/2.4.18 (Ubuntu) Server at api.openstreetmap.org Port 80</address>
</body></html>

一个简单的解决方法是使用 HTTPS 提供正确的 URL:

src <- osmsource_api(url = "https://api.openstreetmap.org/api/0.6/")

旁注:OSM API(即您正在使用的端点) 用于编辑地图。所以毕竟这可能违反了该服务的使用条款。最好使用一些基于 OSM 镜像或 Overpass API.

的替代方案