R:将Brightkite位置ID转换为地名

时间:2016-11-22 18:00:01

标签: r location social

我使用R编程从SNAP下载了BrightKite数据以进行数据挖掘,数据集的每条记录都采用以下形式:

user    time                 lat           long                 locID
0   2010-10-17T01:48:53Z    39.747652   -104.99251 88c46bf20db295831bd2d1718ad7e6f5

我的问题是我想知道每个位置ID对应的位置,是不是有任何方法可以将位置ID解析为地名?

1 个答案:

答案 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"