【问题标题】:R geocode query error when address has hash地址具有哈希时的R地理编码查询错误
【发布时间】:2018-10-22 10:58:03
【问题描述】:

包含“#”(例如公寓号码)的地址经常会给出不正确的位置结果,无论是使用 ggmap::geocode 还是使用谷歌地图,所以这不是严格意义上的 R 问题。在此示例中,在街道地址后添加“#3”会将位置结果从伊利诺伊州更改为加利福尼亚州:

> test <- geocode('1200 Davis St, Evanston, IL 60202', source='google', output='more')
> test[, c('lon', 'lat', 'administrative_area_level_1')]
        lon      lat administrative_area_level_1
1 -87.68978 42.04627                    Illinois

> testhash <- geocode('1200 Davis St #3, Evanston, IL 60202', source='google', output='more')
> testhash[, c('lon', 'lat', 'administrative_area_level_1')]     
        lon      lat administrative_area_level_1
1 -122.1692 37.72169                  California

如果您直接使用 google 地图进行试验,有时将哈希添加到地址中似乎会混淆查找,从而生成各种地理上分散的结果。这并不总是发生,但根据我的经验,经常发生。它很容易修复(地理编码时不需要公寓号码),但我想知道为什么会发生这种情况,以及在输入地址时是否有其他注意事项。

【问题讨论】:

  • # 是 R 中的注释标记。也许geocode 函数也这样对待它。你从geocode('1200 Davis St', source='google', output='more') 得到相同的结果吗?
  • @user2554330 很好的建议,是的,这似乎给出了同样的错误结果。刚才的实验我发现如果您在 Google 地图中键入“1200 Davis St #3”,则将自动完成切换从本地结果映射到邮政编码以整数开头的结果,在本例中为“3”。但是加利福尼亚地址 zip 以“9”开头。因此,您可能是对的,地理编码和地图中的行为是由于不同的机制造成的。我认为必须探索地理编码功能才能确定它。
  • 你能从你正在查找的字符串中去掉#字符吗?不确定这是否是您可以控制的数据
  • @camille 谢谢,是的,我就是这么做的。然而,我对为什么有必要感到困惑。

标签: r google-maps ggmap geocode


【解决方案1】:

Google 对 Geocoding API 中的地址格式提出了建议。特别是他们建议不要在请求中指定其他元素,例如公寓号或楼层号。

您可以在 Google 地图常见问题解答中查看完整的建议列表:

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

相关部分是

请勿指定其他地址元素,例如相关国家邮政服务定义的地址中未包含的公司名称、单元号、楼层号或套房号。这样做可能会导致响应为 ZERO_RESULTS。

我希望这会有所帮助!

【讨论】:

  • 谢谢。这个链接很有帮助!虽然这并没有具体解释哈希的作用,但它确实澄清了 Google 的 API 并非旨在处理公寓号码等内容,因此哈希可能会弄乱结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多