r - R:如何正确地为 ggmap 地理编码/谷歌地理编码 API 准备一个国际地址?
问题描述
我发现
loc <- "Dradenaustraße 33, 21129 Hamburg"
library(ggmap)
geocode(loc, source = "google", force = TRUE, messaging = TRUE, output = "more")
返回 NA,“400,错误请求”错误,或者如果尝试准备如下所示的地址,它甚至会返回堪萨斯州某处的纬度/经度。
我发现,
loc <- "Dradenaustraße 33, 21129 Hamburg"
Encoding(loc) <- "UTF-8"
loc <- URLencode(loc, reserved = TRUE)
返回
Warning message:
In strsplit(URL, "") : input string 1 is invalid UTF-8
并且 loc 之后将是 NA 。
顺便提一句。以下适用于地理编码,即它返回正确的地址和纬度/经度:
loc <- "Dradenaustrasse 33, 21129 Hamburg" #manually reformatted
loc <- "Dradenaustraee 33, 21129 Hamburg" #misspelled
以下拼写错误的地址与最初的正常拼写有相同的问题:
loc <- "Dradenaustraée 33, 21129 Hamburg" #misspelled
我正在调用具有数千个类似上述地址的地址的地理编码 api,并且不想重新格式化它们(即用“ss”替换“ß”,除非这是绝对必要的。在这种情况下,我将不得不做出假设关于许多其他包含重音符号(`、´ 等)的国际地址。
有任何想法吗?
非常感谢!:)
编辑指出我正在寻找一种可任意适用于国际地址的解决方案,并且不需要特定于域的已知知识和手动重新格式化地址。
解决方案
您不必担心以某种方式将您的输入发送到 API。
对我来说,您输入的所有变体都适用于 Geocode.xyz:
https://geocode.xyz/Dradenaustra%C3%9Fe%2033,%2021129%20Hamburg(带ß)
- 德国 x,yz: 53.52480,9.90007 |
- 33 DRADENAUSTRASSE,德国汉堡 置信度:0.90
https://geocode.xyz/Dradenaustrasse%2033,%2021129%20Hamburg(不含ß)
- 德国 x,yz: 53.52480,9.90007 |
- 33 DRADENAUSTRASSE,德国汉堡 置信度:0.90
https://geocode.xyz/Dradenaustra%2033,%2021129%20Hamburg(拼写错误)
- 德国 x,yz: 53.5248,9.90007 |
- 33 DRADENAUSTRAßE,德国汉堡 置信度:0.5
拼写错误的唯一作用是更改置信度分数。
推荐阅读
- python - 很抱歉这种问题,但我必须问。如何在SQLITE中创建表问我叫什么表
- linux - Ansible 复制 with_items 添加额外的目录
- jmeter - JMeter SMTP 采样器未在失败时触发
- html - 如何禁用按钮,直到所有字段都填写在文本字段中
- javascript - 如何阻止客户两次单击 Ajax 表单按钮?
- installation - 如何安装和使用 apache daffodil?
- python - 如何在 c# 中调用 python 脚本?
- c# - ASP.NET CORE 使用 MemoryCache 或类似的发送缓存副本
- r - 确定句子结尾之前连续多少个问号的有效方法
- spring-boot - Springfox 包装响应模型