map2SpatialPolygons中的ID长度

时间:2015-03-11 23:35:24

标签: r dictionary geospatial

我知道这个函数可以在另一个案例中起作用,但它在这段代码中不起作用。

所以这里是dbf文件和shapefile(县),我想将dbf文件链接到shapefile(就像在ArcGIS中加入一样)。这就是county.countypf与data.countyfp具有相同的值集。此步骤是使用map2SpatialPolygons函数将一个字段(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和地图的长度也不一样。 错误显示

  

“map2SpatialPolygons中的错误(map.county,IDs = map.IDs,proj4string = CRS(”+ proj = longlat + datum = WGS84“)):地图和ID的长度不同”

1 个答案:

答案 0 :(得分:1)

就像它说的那样,“地图和身份证的长度不同”。 IDs应该与'map.county'相关,您首先要将其转换为'SpatialPolygons'。执行map("county", ...)时,这不是指最初创建的变量'county',而是指地图包附带的USA数据库(有关详细信息,请参阅?map) 。我不知道究竟是什么存储在'县',但如果我不得不猜测,我会说它的长度与'map.county'不同。因此,您的代码应该是如下所示。

## 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"))