【问题标题】:Geocoding addresses with googleway: incoherent results使用 googleway 对地址进行地理编码:结果不一致
【发布时间】:2023-03-10 05:01:02
【问题描述】:

我正在尝试使用 R 中 googleway 包中的 google_geocode 函数对 Google 地图上的地址进行地理编码。我正在使用从 Google 获得的密钥,该密钥允许我超过 2500/天的限制(并为此收费)。我有不同类型的问题,主要是由于我使用的地址的编写方式,但是我想在这里问一个问题:我有时用googe_geocode查询没有结果怎么可能,但是如果我输入http://www.google.com/maps/ 上的相同地址字符串是否返回结果?

我的例子:

address="AVENDAÑO, 30-32 VITORIA-GASTEIZ 01008, ES"
# the address I want to geocode. Its format is "street, number, city postcode, country" in a single string.
google_geocode(address=address,key=mykey) # I write the right key as mykey.
# I get no results:
$results
list()
$status
[1] "ZERO_RESULTS"

但是,如果在 Google 地图中搜索完全相同的地址字符串,我会得到正确的位置(表明这是西班牙维多利亚的 Abendaño Kalea):

https://www.google.com/maps/place/Abenda%C3%B1o+Kalea,+30,+01008+Vitoria-Gasteiz,+Araba/@42.8451894,-2.6855022,17z/data=!3m1!4b1!4m5!3m4!1s0xd4fc213d775d83d:0xc2a5f2ffa8721c2a!8m2!3d42.8451855!4d-2.6833135

谁能解释一下可能发生了什么?也许谷歌地图或谷歌地理编码 API 的一些工作人员可能会有所帮助? 非常感谢,

【问题讨论】:

  • 我有同样的经历,但也不知道为什么会这样。
  • 你试过places api吗? google_places(search_string = address, key = <your_key>)。谷歌地图背后的数据和他们通过 API 发布的数据并不总是相同的。我不知道为什么。
  • 对于我的目的而言,地点不够详细,但您是对的(正如下面 xomena 所建议的那样),问题是由于地图和 API 未使用相同的数据。谢谢。

标签: r google-maps geocoding google-geocoding-api googleway


【解决方案1】:

请注意,Google 将这条街道称为“ABENDAÑO, 30-32 VITORIA-GASTEIZ 01008, ES”,因此 B 和 V 字母很重要。我知道在西班牙语中这是相同的声音,但谷歌可能希望完全匹配。

根据文档:

根据相关国家邮政服务使用的格式指定地址。

来源:https://developers.google.com/maps/faq#geocoder_queryformat

Correos.es我可以看到官方街道名称是ABENDAÑO,如下图所示

所以只需使用以下请求即可获得结果:

https://maps.googleapis.com/maps/api/geocode/json?address=ABENDA%C3%91O%2C%2030-32%20VITORIA-GASTEIZ%2001008%2C%20ES&key=YOUR_API_KEY

或地理编码器工具中的相同内容:

https://google-developers.appspot.com/maps/documentation/utils/geocoder/#q%3DABENDA%25D1O%252C%252030-32%2520VITORIA-GASTEIZ%252001008%252C%2520ES

我希望这会有所帮助!

【讨论】:

  • 感谢您的回复,但我认为它可能没有抓住重点。当然,如果我能以标准化的方式编写地理编码所需的所有地址,Google 会妥善处理它们。但我所经历的是,在某些情况下(Avendaño/Abendaño 只是一个示例),虽然 Google 地图正确地重新解释了不准确的地址并提供了答案,但 API 没有并返回“ZERO_RESULTS”。
  • 您应该明白,Google Maps 网站和 Google Maps API 是由 Google 不同团队管理的不同产品。无法保证它们的工作方式完全相同。
  • 是的,似乎是这样。我不知道它们之间的区别。非常感谢。
【解决方案2】:

我认为这很可能是由于编码问题。我在尝试使用“Ñ”对地址进行地理定位时发生过这种情况。这样做对我有用:

string <- "AVENDAÑO, 30-32 VITORIA-GASTEIZ 01008, ES"
Encoding(string) <- "UTF-8"
google_geocode(string, key = key)

由于谷歌现在改变了他们的定价方案,你需要一个 API 密钥。

【讨论】:

    猜你喜欢
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 2012-11-06
    • 2016-11-07
    • 1970-01-01
    相关资源
    最近更新 更多