1

Min. :-69826220我在导入值从到 的 ASCII 栅格时遇到问题Max. :167780500。我遇到的问题是,当我使用 raster 函数导入 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-bit)

语言环境:[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 datasets methods base

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

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

任何帮助表示赞赏

4

3 回答 3

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 数据非常重要。

于 2013-04-25T11:04:38.157 回答
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 文件中有些内容已损坏。您可以发布标题和数据的小样本吗?

于 2013-04-25T12:05:09.383 回答
0

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

 library(raster)
 library(rgdal)
 a1 <- raster(filename, native=TRUE)
 a2 <- raster(filename, native=FALSE)
于 2013-04-29T02:22:41.137 回答