我使用R编程从SNAP下载了BrightKite数据以进行数据挖掘,数据集的每条记录都采用以下形式:
user time lat long locID
0 2010-10-17T01:48:53Z 39.747652 -104.99251 88c46bf20db295831bd2d1718ad7e6f5
我的问题是我想知道每个位置ID对应的位置,是不是有任何方法可以将位置ID解析为地名?
答案 0 :(得分:1)
geonames API可以获得此功能。使用devtools从github安装最新版本(如果你还没有安装,请先从CRAN安装devtools)并从http://www.geonames.org/获取一个geonames用户名:
> devtools::install_github("ropensci/geonames")
> require(geonames)
> options(geonamesUsername="sarashaker") # create a user at geonames.org
然后对于lat / long的某个地方:
> place
lat long
1 39.74765 -104.9925
使用小半径参数调用GNfindNearby
:
> res = GNfindNearby(lat=place$lat, lng=place$long,radius=0.1)
Warning message:
In GNfindNearby(lat = place$lat, lng = place$long, radius = 0.1) :
Not documented properly yet by geonames
忽略警告 - 当我编写此软件包时,我认为答案没有得到充分记录。无论如何,最接近的匹配是第一个元素的第一个元素:
> closest = res[[1]][[1]]
> closest$name
[1] "Residence Inn by Marriott Denver City Center"
> closest$distance
[1] "0.01083"
下一个最接近的地方是第一个元素的第二个元素:
> res[[1]][[2]]$name
[1] "Hotel Monaco Denver - a Kimpton Hotel"
> res[[1]][[2]]$dist
[1] "0.01933"