当我运行:maps.where识别错那县
maps::map.where('county', y = 40.49069996, x = -94.40780005)
# prints "missouri,webster"
即使通过这些GPS坐标是在Worth County,密苏里州,而不是在Webster County点:
当我运行:maps.where识别错那县
maps::map.where('county', y = 40.49069996, x = -94.40780005)
# prints "missouri,webster"
即使通过这些GPS坐标是在Worth County,密苏里州,而不是在Webster County点:
这是maps包中的一个bug。它将在即将发布的3.2版中得到修复。正如mweber解释的那样,有一个快速的方法来避免这个错误。你甚至可以缩短到
map.where(map("county",fill=TRUE,plot=FALSE), -94.40780005, 40.49069996)
的错误可能已行之有年,并且只显示了“县”的数据库,为圣路易斯后跟随的字母顺序密苏里州的国家。
对于技术头脑: 事实上,你可以手动修复安装包(或者更确切地说:从影响各县数据停止错误)通过编辑地图/属于MapData/counties.N 在该文件中,你会看到在行1545-1564附近,行号不对应于多边形数字,因为有人移动了一条线。如果你移回单行,所有事情都会重新开始。 R代码中的实际错误是地图数据库map.where()假定多边形编号等于.N文件中的行号,这几乎总是OK,但在这种情况下失败。
我不能准确地说明原因,但如果您先将各县划分到密苏里州并添加填充和绘图参数,则会按照原样返回值。我只是沿着最后一个例子来帮助map.where在地图包
p <- map('county','Missouri',fill = TRUE, plot = FALSE)
map.where(p, -94.40780005, 40.49069996)
[1] "missouri, worth"