maps.where识别错误的县

时间:2017-05-31 20:44:01

标签: r maps

当我跑步时:

maps::map.where('county', y = 40.49069996,   x = -94.40780005)
# prints "missouri,webster"

即使通过这些GPS坐标是Worth County密苏里州的一个点,而不是Webster County

2 个答案:

答案 0 :(得分:3)

我无法准确说明原因,但如果您先将县分配到密苏里州并添加填充和绘图参数,则应返回Worth结果。我刚刚在地图包中的map.where的帮助中跟随了最后一个例子

p <- map('county','Missouri',fill = TRUE, plot = FALSE)
map.where(p, -94.40780005, 40.49069996)
[1] "missouri, worth"

答案 1 :(得分:1)

这是地图包中的错误。它将在即将发布的版本3.2中修复。正如mweber解释的那样,有一种快速的方法可以避免这种错误。你甚至可以将它缩短为

map.where(map("county",fill=TRUE,plot=FALSE), -94.40780005, 40.49069996)

这个bug可能已存在很长时间了,并且仅针对&#34;县&#34;密苏里州的数据库,在圣路易斯之后按字母顺序排列。

对于技术头脑: 实际上,您可以通过编辑maps / mapdata / counties来手动修复已安装的软件包(或者更确切地说:阻止bug影响县数据)。 在该文件中,您将看到第1545-1564行周围的行号与多边形数字不对应,因为有人移动了一行。如果你移回那一行,一切都会再次运作。 R代码中的实际错误是对于地图数据库map.where()假设多边形数等于.N文件中的行号,这几乎总是正常,但在这种情况下失败。