我在导入值为Min. :-69826220
到Max. :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
感谢任何帮助
答案 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)