2014-10-22 107 views
0

我想从数据框列表中创建空间多边形数据框列表。空间多边形列表被称为list_sp_Tanzania,数据帧列表被称为list_df_Tanzania_Modis500。每个列表包含61个对象,每个对象包含多个多边形。从数据框列表创建空间多边形数据框列表

str(list_df_Tanzania_Modis500) 
$ :'data.frame': 30 obs. of 11 variables: 
    ..$ ID  : int [1:30] 296 298 321 323 324 330 331 361 419 453 ... 
    ..$ LU_1990 : int [1:30] 11 11 11 11 11 11 11 11 11 11 ... 
    ..$ LU_2000 : num [1:30] 12 12 12 12 12 12 12 12 12 12 ... 
    ..$ CHLU_90_00: chr [1:30] "1112" "1112" "1112" "1112" ... 
    ..$ LU_2005 : num [1:30] 12 12 12 12 12 12 12 12 12 15 ... 
    ..$ CHLU_00_05: chr [1:30] "1212" "1212" "1212" "1212" ... 
    ..$ Tile  : Factor w/ 1 level "S11_E039": 1 1 1 1 1 1 1 1 1 1 ... 
    ..$ UNIQ_ID : Factor w/ 30 levels "S11_E039_296",..: 1 2 3 4 5 6 7 8 9 10 ... 
    ..$ AREA  : num [1:30] 219337 347133 393961 181875 105137 ... 
    ..$ Sour_90_00: chr [1:30] "Modis500_2000" "Modis500_2000" "Modis500_2000" "Modis500_2000" ... 
    ..$ Sour_00_05: chr [1:30] "Modis500_2005" "Modis500_2005" "Modis500_2005" "Modis500_2005" ... 

str(list_sp_Tanzania) 
[[61]] 
class  : SpatialPolygons 
features : 30 
extent  : 38.95413, 39.04577, -11.04522, -10.95469 (xmin, xmax, ymin, ymax) 
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 

不幸的是,我不能提供dput的数据,因为他们是s4 objects,我找不到类似的例子。希望有人能以某种方式帮助我。

+0

我看不到你的两个列表是如何关联,但基本上以30行的data.frame和30个功能SpatialPolygons你做SpatialPolygons(DF,PS)任选参数控件ID匹配。如果“list_df_Tanzania_Modis500”是列表,则需要df < - list_df_Tanzania_Modis500 [[1]]。对于list_sp_Tanzania也是如此,但我没有得到[[61]]部分? – mdsumner 2014-10-22 11:06:00

+0

[[61]]部分是列表中的第61个空间多边形对象。它表示30个特征,这意味着第61个空间多边形对象中有30个多边形。 – 2014-10-22 11:12:55

回答

2

这是解决方案。

fun <- function(x, y) { 
    SpatialPolygonsDataFrame(x, y, match.ID = F) 
} 

list_Spdf_Tanzania_Modis500 <- mapply(FUN = fun, 
             x = list_sp_Tanzania, 
             y = list_df_Tanzania_Modis500)