R 使用纬度和经度查找POI(2km以内)

R 使用纬度和经度查找POI(2km以内),r,latitude-longitude,ggmap,geocode,R,Latitude Longitude,Ggmap,Geocode,我有一个数据集,它对应于Zipcode以及lat和log。我想找出距离该纬度和经度2km内的医院/银行列表 怎么做 Long/Lat数据如下所示 store_zip lon lat 410710 73.8248981 18.5154681 410209 73.0907 19.0218215 400034 72.8148177 18.9724162 400001 72.836334 18.9385352 400102 72.8344

我有一个数据集,它对应于Zipcode以及lat和log。我想找出距离该纬度和经度2km内的医院/银行列表

怎么做

Long/Lat数据如下所示

store_zip   lon lat
410710    73.8248981    18.5154681
410209    73.0907       19.0218215
400034    72.8148177    18.9724162
400001    72.836334     18.9385352
400102    72.834424     19.1418961
400066    72.8635299    19.2313448
400078    72.9327444    19.1570343
400078    72.9327444    19.1570343
400007    72.8133825    18.9618411
400050    72.8299518    19.0551695
400062    72.8426858    19.1593396
400083    72.9374227    19.1166191
400603    72.9781047    19.1834148
401107    72.8929       19.2762702
401105    72.8663173    19.3053477
400703    72.9992013    19.0793547
401209          NA          NA
401203    72.7983705    19.4166761
400612    73.0287209    19.1799265
400612    73.0287209    19.1799265
400612    73.0287209    19.1799265

如果你的兴趣点是未知的,你需要找到它们,你可以通过我的谷歌软件包使用谷歌的API,正如你在评论中所建议的那样。您需要一个有效的API密钥才能使其工作

由于API一次只能接受一个请求,因此您需要一次迭代一行数据。为此,您可以使用您最熟悉的任何循环方法

library(googleway) ## using v2.4.0 on CRAN

set_key("your_api_key")

lst <- lapply(1:nrow(df), function(x){

  google_places(search_string = "Hospital", 
                location = c(df[x, 'lat'], df[x, 'lon']),
                radius = 2000)

})
您也可以在地图上查看它们

set_key("map_api_key", api = "map")


## the lat/lon of the returned results are found through `place_location()`
# place_location(lst[[1]])

df_hospitals <- place_location(lst[[1]])
df_hospitals$name <- place_name(lst[[1]])

google_map() %>%
  add_circles(data = df[1, ], radius = 2000) %>%
  add_markers(data = df_hospitals, info_window = "name")
注:

谷歌的API限制为每天每个密钥2500次查询,除非您为高级帐户付费。
如果你的兴趣点是未知的,你需要找到它们,你可以通过我的谷歌软件包使用谷歌的API,正如你在评论中所建议的那样。您需要一个有效的API密钥才能使其工作

由于API一次只能接受一个请求,因此您需要一次迭代一行数据。为此,您可以使用您最熟悉的任何循环方法

library(googleway) ## using v2.4.0 on CRAN

set_key("your_api_key")

lst <- lapply(1:nrow(df), function(x){

  google_places(search_string = "Hospital", 
                location = c(df[x, 'lat'], df[x, 'lon']),
                radius = 2000)

})
您也可以在地图上查看它们

set_key("map_api_key", api = "map")


## the lat/lon of the returned results are found through `place_location()`
# place_location(lst[[1]])

df_hospitals <- place_location(lst[[1]])
df_hospitals$name <- place_name(lst[[1]])

google_map() %>%
  add_circles(data = df[1, ], radius = 2000) %>%
  add_markers(data = df_hospitals, info_window = "name")
注:

谷歌的API限制为每天每个密钥2500次查询,除非您为高级帐户付费。
到目前为止你试过什么吗?这似乎是一个有趣的问题,但如果没有任何代码,它也可能被标记为broad@loki-我对R很陌生…试着找到一些有趣的东西。。。搜索一个特定的地点类型google_placeslocation=c73.8248981,18.5154681,place_type=Hospital,radius=20000,key=key但是如何使用R中的google api定义这个键。我认为他的两个链接非常有用——google_places功能是一个东西吗?如果是的话,它来自哪个软件包?我想软件包名是Googleway。请在问题中添加您尝试过的内容以及错误消息。因此,其他人可以帮助你。到目前为止你试过什么吗?这似乎是一个有趣的问题,但如果没有任何代码,它也可能被标记为broad@loki-我对R很陌生…试着找到一些有趣的东西。。。搜索一个特定的地点类型google_placeslocation=c73.8248981,18.5154681,place_type=Hospital,radius=20000,key=key但是如何使用R中的google api定义这个键。我认为他的两个链接非常有用——google_places功能是一个东西吗?如果是的话,它来自哪个软件包?我想软件包名是Googleway。请在问题中添加您尝试过的内容以及错误消息。因此,其他人能够在这方面帮助你。