【问题标题】:street address to geolocation lat/long街道地址到地理位置纬度/经度
【发布时间】:2015-12-06 22:01:36
【问题描述】:

我正在考虑 rChart/LeafLet 为我所在县的房屋销售创建一个闪亮的应用程序。在任何特定时间都有数百套房屋出售。想要将所有人的街道地址映射到地理位置(纬度/经度)并将它们显示在地图上。因此,我正在寻找可以将街道地址映射到地理位置的 r 包、服务或数据库。

【问题讨论】:

标签: r geolocation leaflet rcharts


【解决方案1】:

这是一个基于 Harvey 建议的函数。它将查找地址并给出第一个结果的坐标。看看函数中x的结构,看看你能得到的其他信息。

geocodeAdddress <- function(address) {
  require(RJSONIO)
  url <- "http://maps.google.com/maps/api/geocode/json?address="
  url <- URLencode(paste(url, address, "&sensor=false", sep = ""))
  x <- fromJSON(url, simplify = FALSE)
  if (x$status == "OK") {
    out <- c(x$results[[1]]$geometry$location$lng,
             x$results[[1]]$geometry$location$lat)
  } else {
    out <- NA
  }
  Sys.sleep(0.2)  # API only allows 5 requests per second
  out
}

例如:

R> geocodeAdddress("Time Square, New York City")
[1] -73.98722  40.7575

【讨论】:

  • 为什么我们要构建功能完全相同的功能包?
  • @hrbrmstr 我不知道那个包,谢谢提醒。
  • 能分享一下包名choff吗?
  • 这是对问题的评论中提到的一个 hrbrmstr,nominatim。
  • 感谢@choff 提供的功能!
【解决方案2】:

我使用过 Google Geolocation,这在几乎任何项目上都易于设置和实施:

https://developers.google.com/maps/documentation/geocoding/intro

【讨论】:

  • 为了将来参考,这属于评论,但我猜你没有足够的代表这样做,所以好吧。
  • 谢谢哈维。 goole 地图将请求数量限制为 10/秒或每天 2500 个。这很好。有没有办法提出批量请求。假设我发送 100 个街道地址并返回 100 经度/纬度?
  • 对不起,我应该提到有一个限制。但对于小型应用程序,它并不需要担心。通过简单地循环请求,我设法在 iOS 应用程序中执行多个操作。尽管由于多个连接太快,您可能不得不限制此速度,但可能会将您拒之门外。抱歉,我不知道 R 的细节!
【解决方案3】:

根据 API 要求修改答案:

api_key <- c("YOUR_API_KEY")

geocodeAdddress <- function(address) {
  require(RJSONIO)
  url <- "https://maps.googleapis.com/maps/api/geocode/json?address="
  url <- URLencode(paste(url, address, sep = ""))
  url <- URLencode(paste(url, "&key=", api_key, sep = ""))
  x <- fromJSON(url, simplify = FALSE)
  print(x$status)
  if (x$status == "OK") {
    out <- c(x$results[[1]]$geometry$location$lng,
             x$results[[1]]$geometry$location$lat)
  } else {
    out <- NA
  }
  Sys.sleep(0.2)  # API only allows 5 requests per second
  out
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多