2015-03-11 4 views
0

Я знал, что эта функция может работать в другом случае, но она не работает в этом коде.IDs длина в map2SpatialPolygons

Итак, вот файл dbf и шейп-файл (графство), я хотел бы связать файл dbf с шейп-файлом (так же, как присоединиться к ArcGIS). Это county.countypf имеет тот же набор значений, что и data.countyfp. Этот шаг должен установить одно поле (COUNTYFP) в качестве первичного ключа, используя функцию map2SpatialPolygons.

Вот мой код.

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 так, чтобы он мог вернуться многоугольник, но идентификаторы и карты не имеют одинаковую длину, а также. Ошибка показывает

"Ошибка в map2SpatialPolygons (map.county, идентификаторы = map.IDs, proj4string = СВК (" + Рго = longlat + = датум WGS84 ")): карта и идентификаторы различаются по длине"

+0

Приведите пример данных и напишите, какая именно проблема у вас есть –

ответ

0

Как говорится, «карта и идентификаторы различаются по длине». IDs должно быть связано с 'map.county', которое вы хотели бы преобразовать в 'SpatialPolygons' в первую очередь. При выполнении map("county", ...) это не относится к первоначально созданной переменной 'county', а к базе данных США, которая поставляется с картами (см. ?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"))