代码之家  ›  专栏  ›  技术社区  ›  Thai

R: geocode返回的结果比我的查询多

  •  1
  • Thai  · 技术社区  · 7 年前

    # Getting records for Promenaea genus for an exemple
    library(dismo)
    promena<-gbif("Promenaea")
    
    #Once I get all records I keep only those that don't have coordinates
    promena<-promena[(is.na(promena$lon)),]
    
    #And then, try to get coordinates for them
    b <- try( geocode(promena$cloc) )
    

    我的计划是用地理编码的结果找到我的长廊物种数据框,然后只删除那些地理编码无法找到坐标的行(这将有NA)。但我的数据帧有259行,geocode返回318行结果。。。所以有些东西不匹配。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Thai    7 年前

    为此,dismo::geocode函数有一个名为oneRecord的参数:

    b <- try( geocode(promena$cloc, oneRecord=TRUE))
    

    但是:

    oneRecord公司 必然的如果为TRUE,则返回x中每个项目的单个记录。如果API返回多个记录,则通过平均坐标并取所有边界框的并集来计算该记录的值(文档中说)

    #Nem attempt of getting coordinates. 
    b <- try( ggmap::geocode(promena$cloc))
    

    但是我只得到了坐标,我想把位置与坐标关联起来,这样我就可以检查地理代码是否返回了一个好结果,所以我使用了这个参数:

    b <- try(ggmap::geocode(promena$cloc, output="more"))
    

    最后,我比较了两种方法的结果,它们几乎相同,因此我认为检查记录非常重要,因为函数可能确实返回平均值