2013-04-25 59 views
1

我一直在进口是有去从Min. :-69826220Max. :167780500值的ASCII光栅有问题。我遇到的问题是,当我使用栅格函数导入ASCII文件时,每个小于-9999的值报告为NA,最小值为-9458的R - 光栅功能的NA值低于-9999 ASCII文件

这是函数的一个bug,是有解决方法吗?当我导入与数据帧相同的ASCII文件时,一切都很好,我可以得到整个范围的值。 另外我使用相同的程序导入其他ASCII栅格并没有任何问题。

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

这里是会话信息,我万一开了一个新的会话。

sessionInfo() ř版本3.0.0(2013年4月3日) 平台:x86_64的-W64-的mingw32/64(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]统计图形grDevices utils的数据集的方法基础

其他附软件包: [1] raster_2.1-16 sp_1.0-8经由一个命名空间加载

(而不是附后): [1] grid_3.0.0 lattice_0.20-15

任何帮助表示赞赏

+0

而GDAL驱动器之间的区别,如果你运行'minValue(最小值)(X)'和'manValue(X)''那里是x'栅格你怎么弄? – 2013-04-25 10:47:59

+0

我得到相同的结果 [1]不适用 警告消息: 在.local(x,...):最小/最大值未知,请使用setMinMax – 2013-04-25 11:02:34

+0

为什么不给我们'摘要(扫描(“path/to/myraster.asc”,skip = 6))' – 2013-04-25 12:43:33

回答

3

你可以尝试使用setMinMax()您光栅文件,试图制定出的最大值和最小值,并将其储存在返回的栅格*对象。试试吧,像这样:

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

+0

我刚刚试了两次,这就是我得到的> setMinMax(ps0011yme) class:RasterLayer 尺寸:337,720,242640(nrow,ncol,ncell) 分辨率:0.5,0.5(x,y) 但它不工作我有同样的问题 范围:-180,180,-78.5,90(xmin,xmax,ymin,ymax) coord。 REF。 :NA 数据源:C:路径\ ps0011yme.asc 名称:图层 值:-9458.911,167780500(最小,最大) – 2013-04-25 11:42:48

+0

我仍然想知道在什么特定情况下需要rgdal,因为迄今为止我从未遇到任何问题与栅格/ shapefile数据。是否因为这个ASCII码的值太大? – 2013-04-25 14:01:07

+0

@ user4050可能 - 我不能确切地说。我认为尽管在处理空间数据时最好安装'rgdal'。 – 2013-04-25 14:06:06

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文件中有一些损坏。你能发布标题和一小部分数据吗?

+0

+1请求标题数据 – 2013-04-25 12:35:30

0

'光栅'中的内部ascii文件驱动程序假定如果标志值为< 0(并且我不建议在值的中间使用NA标志),那么没有低于NA标志值的有效值。 。显然,这种方法可能会导致像这种情况下的问题。我会改变这一点。你可以看到内部的驱动程序,如果你这样做

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