我知道这个函数可以在另一种情况下工作,但它在这个代码中不起作用。
这里有一个dbf文件和一个shapefile(县),我想将dbf文件链接到shapefile(就像在ArcGIS中加入一样)。这就是county.countypf具有与data.countyfp.相同的值集。这一步是使用map2Sspace alPolygons函数将一个字段(COUNTYFP)设置为主键。
这是我的代码。
county <- readShapeSpatial("county")
data<- read.dbf("data",as.is = FALSE)`
map.county <- map("county", plot = FALSE, fill = TRUE, res=0)
map.IDs <- sapply(county$COUNTYFP, function(x) x[1])
tail(map.IDs)
county <- map2SpatialPolygons(map.county,
IDs = map.IDs,
proj4string = CRS("+proj=longlat +datum=WGS84"))
我将填充设置为T,以便它可以返回多边形,但ID和map的长度也不一样。错误显示
“map2空间多边形(map.county, ID = map.IDs, proj4string = CRS(“ proj=longlat datum=WGS84”)) : map 和 ID 的长度不同”
就像上面说的,“地图和ID的长度不同”ID
应该与“map.country”相关,您首先要将其转换为“SpatialPolygons”。当执行map(“country”,…)
时,这不是指最初创建的变量“county”,而是指地图包附带的美国数据库(请参阅?map
了解更多信息)。我不知道“country”中到底存储了什么,但如果我不得不猜测,我会说它的长度与“map.country”不同。因此,您的代码应该如下所示。
## required packages
library(maps)
library(maptools)
## geographical map of us counties
map.county <- map("county", plot = FALSE, fill = TRUE, res = 0)
## convert 'map' to 'SpatialPolygons'
county <- map2SpatialPolygons(map.county,
IDs = map.county$names,
proj4string = CRS("+proj=longlat +datum=WGS84"))