【发布时间】:2019-10-25 01:51:30
【问题描述】:
我正在使用遥感(Landsat 5 30 米分辨率图像),并希望使用 Landsat 波段的反射率和植被指数作为 X 预测因子以及一组基于地面的生物量测量作为 Y 输出来估计森林树木生物量。我在 yaImpute 包 (R) 中构建了 kNN 模型,并使用相同的数据 - 包 gbm (R) 中的集成提升模型。
现在我想画一张它的光栅图。函数AsciiGridImpute()(用于yai 对象)和AsciiGridPredict()(用于其他对象,如GBM)必须有所帮助。但是我得到了一个错误。
首先,我有 yai-object 和模型,impute 有观察值和预测值:
test_yai <- yai(x = x_center_raw_imp, y = center_knn_raw_imp$dead, k = 10, method = "randomForest")
test_impute <- impute(test_yai, ancillaryData = center_knn_raw_imp$dead)
yai 对象建立在 10 个变量之上:
Coastal, Blue, Green, Red, NIR, SWIR1, SWIR2, NDVI, IPVI, GRVI
对于AsciiGridImpute() 函数,我需要x 变量列表、输出文件和模型列表。
所以,有了我的卫星图像的光栅对象,我首先制作了 ascii 文件。
names(Oster_GEE_mask) <- c("Coastal", "Blue", "Green", "Red", "NIR", "SWIR1", "SWIR2", "NDVI", "IPVI", "GRVI") # name layers of raster object as variables in yai object, i.e. kNN model
writeRaster(Oster_GEE_mask[[1]], filename = "Coastal.asc", format="ascii")
等等。所以我为所有 10 个变量编写了 ascii 文件。那么
xfiles <- list(Coastal = "Coastal.asc", Blue = "Blue.asc", Green = "Green.asc",
Red = "Red.asc", NIR = "NIR.asc", SWIR1 = "SWIR1.asc",
SWIR2 = "SWIR2.asc", NDVI = "NDVI.asc", IPVI = "IPVI.asc",
GRVI = "GRVI.asc") # list of my variables
outfiles <- list(dead = "dead.asc") # as I predicted "dead" column in my yai object, I named output file in same way
以及创建栅格地图的功能:
AsciiGridImpute(test_yai, xfiles, outfiles)
但这里有一个错误!
Rows per dot: 12 Rows to do: 1281
ToDo: ..........................................................................................................
Done: Error in rownames<-(`*tmp*`, value = saveNames) :
attempt to set 'rownames' on an object with no dimensions
yai 对象的变量集与我的 x 文件中的名称相同。有什么问题?
(使用 gbm 对象我得到了同样的错误,改用 AsciiGridPredict())
【问题讨论】: