【问题标题】:Find out POI (within 2km) using latitude and longitude使用纬度和经度找出POI(2公里内)
【发布时间】:2018-02-12 06:19:34
【问题描述】:

我有一个对应于 Zipcode 以及 lat 和 log 的数据集。我想从该纬度和经度中找出医院/银行(2 公里内)的列表。

怎么做?

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

【问题讨论】:

  • 到目前为止你有没有尝试过?这似乎是一个有趣的问题,但如果没有任何代码,它可能会被标记为 too broad
  • @lok​​i - 我对 R 很陌生......尝试找到一些有趣的东西...... ## 搜索特定的地点类型 google_places(location = c(73.8248981,18.5154681), place_type = "Hospital", radius = 20000, key = key) 但是如何在 R 中使用 google api 定义这个“key”。我认为他的两个链接非常有帮助 - rdocumentation.org/packages/googleway/versions/2.2.0/topics/… rpubs.com/praisons/datahoppersdcassignment2
  • google_places 函数是一个东西吗?如果是这样,它来自哪个包?
  • 我认为包名是“googleway”
  • 请通过editing它在问题中添加您尝试过的内容以及错误消息。因此,其他人可以帮助您。

标签: r latitude-longitude ggmap geocode


【解决方案1】:

如果您的兴趣点未知并且您需要找到它们,您可以通过我的googleway 包使用 Google 的 API(正如您在 cmets 中所建议的那样)。您将需要一个有效的 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)

})

lst 现在是一个包含查询结果的列表。例如,它为您的数据的第一行返回的医院名称是

place_name(lst[[1]])

# [1] "Jadhav Hospital"                                                
# [2] "Poona Hospital Medical Store"                                   
# [3] "Sanjeevan Hospital"                                             
# [4] "Suyash Hospital"                                                
# [5] "Mehta Hospital"                                                 
# [6] "Deenanath Mangeshkar Hospital"                                  
# [7] "Sushrut Hospital"                                               
# [8] "Deenanath Mangeshkar Hospital and Research Centre"              
# [9] "MMF Ratna Memorial Hospital"                                    
# [10] "Maharashtra Medical Foundation's Joshi Multispeciality Hospital"
# [11] "Sahyadri Hospitals"                                             
# [12] "Deendayal Memorial Hospital"                                    
# [13] "Jehangir Specialty Hospital"                                    
# [14] "Global Hospital And Research Institute"                         
# [15] "Prayag Hospital"                                                
# [16] "Apex Superspeciality Hospital"                                  
# [17] "Deoyani Multi Speciality Hospital"                              
# [18] "Shashwat Hospital"                                              
# [19] "Deccan Multispeciality Hardikar Hospital"                       
# [20] "City Hospital" 

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

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")

注意:

  • Google 的 API 限制为每个密钥每天 2,500 次查询,除非您为高级帐户付费。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 2012-03-16
    • 2010-11-18
    • 1970-01-01
    相关资源
    最近更新 更多