导入光栅文件时出错

Posted

技术标签:

【中文标题】导入光栅文件时出错【英文标题】:Error when importing raster file 【发布时间】:2015-09-30 04:09:34 【问题描述】:

我使用 rasterize R 函数将 shapefile 转换为栅格文件,并使用 writeRaster 函数(.bil 和 .asc)保存了该栅格。 现在,我无法导入新文件,返回此错误:

Error in .local(.Object, ...) : 
  EHdr driver does not support 64 NBITS value.

Erro em .rasterObjectFromFile(x, band = band, objecttype = "RasterLayer",  : 
  Cannot create a RasterLayer object from this file.

我的脚本:

library(maptools)
library(raster)
# shapefile from Natural Earth website 
a <- readShapeSpatial('ne_10m_roads.shp') 
e <- extent( -180, 180, -60, 90 ) 
r <- raster(e, nrow=3600, ncol=8640) 
s2r <- rasterize(a,r)

我使用的是带有 Ubuntu 14.10 - 64 位、4Gb RAM、RStudio 软件和 R 版本 3.1.1 的笔记本:

R version 3.1.1 (2014-07-10) 
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

*格式化我的电脑后,新文件只有在通过终端安装rgdal的依赖之前才能正确打开。

** 正确选择所有目录,并在目录中找到文件。

【问题讨论】:

您是如何将栅格写入磁盘的?你用writeRaster的默认参数了吗? 是的,前两个参数。 (x, 文件名 = ) 【参考方案1】:

您为什么使用这些格式? BIL 已过时,ASCII 效率低下。最好使用 GeoTIFF 或(如果您在 R/raster 领域内工作)GRD(默认格式)。

我想这个错误发生在“BIL”文件中,而不是 ascii 文件中。在编写“BIL”文件时,您可能需要指定 writeRaster 参数 datatype='INT2S'datatype='FLT4S' 或任何其他非 64 位数据类型(“FLT8S”)。您通常不需要那么高的精度(除非您想精确存储非常大的整数)。您可以通过以下方式读取文件:

raster('file.bil', native=TRUE)

【讨论】:

谢谢!使用 args (native=TRUE) 我的一个栅格被加载,另一个没有。我是数据分析领域的新手,这是我第一次使用栅格图层,所以我缺乏关于文件(.bil 和 .asc)的规范知识如果你能在这些规范上留下一些参考资料,我将非常感激. * 更改数据类型栅格的后果是什么? (例如:从 FLT8S 到 FLT4S)

以上是关于导入光栅文件时出错的主要内容,如果未能解决你的问题,请参考以下文章

Excel插入图片时总是显示:导入此文件时出错,怎么回事【图片】

QGis:如何将svg或光栅图像导入Quantum GIS?

mongodb导入csv文件时出错

导入光栅失败。原因:找不到图片

将文件 sql 导入 phpmyadmin 时出错超时?

从 phpMyAdmin 使用导出/导入 SQL 文件时出错