R-raster函数在ASCII文件中的NAs值低于-9999

时间:2013-04-25 10:40:32

标签: r import ascii raster

我在导入值为Min. :-69826220Max. :167780500的ASCII栅格时遇到问题。我遇到的问题是,当我使用栅格函数导入ASCII文件时,每个小于-9999的值都报告为NA,最小值为-9458

这是该功能的错误,是否有解决方法?当我导入相同的ASCII文件作为数据框时,一切都很好,我得到了整个范围的值。 此外,我使用相同的过程导入其他ASCII栅格,没有任何问题。

这是ASCII文件https://dl.dropboxusercontent.com/u/24234831/ps0011yme.asc

的链接

以下是会话信息,我打开了一个新会话以防万一。

  

sessionInfo()   R版本3.0.0(2013-04-03)   平台:x86_64-w64-mingw32 / x64(64位)

区域设置: [1] LC_COLLATE = English_United States.1252 [2] LC_CTYPE = English_United States.1252
[3] LC_MONETARY = English_United States.1252 [4] LC_NUMERIC = C
[5] LC_TIME = English_United States.1252

附加基础包: [1] stats graphics grDevices utils数据集方法库

其他附件包: [1] raster_2.1-16 sp_1.0-8

通过命名空间加载(而不是附加): [1] grid_3.0.0 lattice_0.20-15

感谢任何帮助

3 个答案:

答案 0 :(得分:3)

您可以尝试在光栅文件上使用setMinMax()来尝试计算最小值和最大值,并将它们存储在返回的Raster *对象中。试试吧:

r <- setMinMax( raster("path/to/myraster.asc") )

我不确定发生了什么,因为如果我将数据下载并执行:

r1 <- raster( "~/Downloads/test.asc")
summary(values(r1))
     Min.   1st Qu.    Median      Mean   3rd Qu.      Max.      NA's 
-69830000  -4789000    737300  16950000  13880000 167800000     71468

请将sessionInfo() 的输出添加到您的问题中,即不作为评论。

这种情况下的错误是由于没有安装rgdal引起的,它们绑定到地理空间数据抽象库,对于导入/导出栅格和shapefile数据非常重要。

答案 1 :(得分:3)

我无法重现您的错误。这是一个手工构建的.asc文件:

NCOLS 3 
NROWS 3 
XLLCORNER 0 
YLLCORNER 0 
CELLSIZE 0.5 
NODATA_value -9999 
1e-6 0.3 -34567891234
0.2 -1e6 25
3 68492758321934 20

正确加载到raster对象中。你会注意到那里的NODATA_value项目,它解释了你的-9999来自哪里。我敢打赌,你的源.asc文件中有一些损坏的东西。你可以发布标题和一小部分数据吗?

答案 2 :(得分:0)

'raster'中的内部ascii文件驱动程序假定如果标志值为&lt;&lt;标记值,则没有低于NA标志值的有效值。 0(我不建议在值的中间使用NA标志)。显然,这种方法可能会导致像这种情况一样的问题;我会改变这一点。如果你这样做,你可以看到内部驱动程序和gdal驱动程序之间的区别

 library(raster)
 library(rgdal)
 a1 <- raster(filename, native=TRUE)
 a2 <- raster(filename, native=FALSE)