use*_*607 1 r geospatial geotiff r-raster r-sp
我正在研究这个bnspatial 例子,我想看看导入数据中的实际内容ConwyData:
source("http://bioconductor.org/biocLite.R")
biocLite("RBGL")
install.packages("bnspatial")
install.packages("raster")
library(raster)
library(bnspatial)
data(ConwyData)
> str(ConwyData)
List of 6
$ ConwyStatus :Formal class 'RasterLayer' [package "raster"] with 12 slots
.. ..@ file :Formal class '.RasterFile' [package "raster"] with 13 slots
.. .. .. ..@ name : chr "E:\\masanda\\Documents\\R\\win-library\\3.4\\bnspatial\\extdata\\ConwyStatus.tif"
Run Code Online (Sandbox Code Playgroud)
因此,我想将 Rater Layer 文件导出为可以导入 ArcGis 或 QGIS 的格式。我已经尝试了以下,但没有一个工作:
writeRaster(ConwyData, "raster_bnspatial", format = "GTiff") (function (classes, fdef, mtable) 中的错误: 无法为签名 '"list", "character"' 找到函数 'writeRaster' 的继承方法
ConwyData <- file("C:/Users/admin/Dropbox/KU_Leuven/Thesis/R-scripts/ConwyData.grd", package="raster") 文件错误("C:/Users/admin/Dropbox/KU_Leuven/ Thesis/R-scripts/ConwyData.grd", : 未使用的参数 (package = "raster")
1:https : //cran.r-project.org/web/packages/bnspatial/vignettes/bnspatial.html
它看起来像是ConwyData一个对象列表,而不是单个栅格。这也是您不能将其作为光栅写入磁盘的原因。
查看示例文档(或在?ConwyData),该列表包含以下元素:
LandUseChange 类grain 的对象。贝叶斯网络,为演示目的而构建。
ConwyLU 类 RasterLayer 的对象。来自康威集水区(英国威尔士)的当前土地利用地图的简化版本。它包括三类:耕地(栅格值 3)、森林(2)、其他(1)。
ConwySlope 类 RasterLayer 的对象。来自分辨率为 50 米的数字高程模型的坡度栅格,单位为度。
ConwyStatus 类 RasterLayer 的对象。土地所有权类型(虚拟数据),分为三个可能的类别:公共(栅格值 4)、私有(3)、受保护(1)。
证据矩阵。从流域中的每个位置(即像元)提取的可用空间数据(见上文)的集合,其中后者由栅格对象 ConwyLU 表示。空间数据中的每个值都通过 dataDiscretize 或 bulkDiscretize 函数进行离散化,然后分配给来自贝叶斯网络 (LandUseChange) 的相应状态。
LUclasses 具有输入空间数据(其对应的状态和值)的分类的列表。该列表根据 bnspatial 函数要求进行格式化,并由函数 importClasses 和 setClasses 返回。
如您所见,其中只有一辆是真正的光栅。这些您可以轻松写入磁盘:
writeRaster(ConwyData$ConwyLU,'/tmp/landuse.tif')
Run Code Online (Sandbox Code Playgroud)
但是如果你只想看一看,你可以跳过写入文件并用 R 将它可视化,例如
base 绘图:
plot(ConwyData$ConwyLU)
Run Code Online (Sandbox Code Playgroud)
或者更通用的rasterVis:
library(rasterVis)
levelplot(ConwyData$ConwySlope,margin=FALSE)
Run Code Online (Sandbox Code Playgroud)