2013-11-24 147 views
15

我正在尝试将各种“ASC”文件中的信息提取到R中,以便对数据执行分析。将ASC文件读入R

问题是我不确定如何在文件中读取。我尝试了一个标准的read.table函数,但所有的数字都完全相同(-9999.00)。为了排除数据损坏的可能性,我读了另一个ASC文件并得到了相同的结果。我唯一知道的是,它们之间的文件大小完全一样。

反正有,我可以读这些文件?任何R包我可以看看?

我绑这一点:

x = read.table("Dropbox/MVZ/aet2009sep.asc") 
    y = read.table("Dropbox/MVZ/aet2009oct.asc") 

和我的产出是

> head(x, n =20) 
     V1  V2 
    1   ncols 3486.0 
    2   nrows 4477.0 
    3  xllcorner -374495.8 
    4  yllcorner -616153.3 
    5  cellsize  270.0 
    6 NODATA_value -9999.0 
    7  -9999.00 -9999.0 
    8  -9999.00 -9999.0 
    9  -9999.00 -9999.0 
    10  -9999.00 -9999.0 
    11  -9999.00 -9999.0 
    12  -9999.00 -9999.0 
    13  -9999.00 -9999.0 
    14  -9999.00 -9999.0 
    15  -9999.00 -9999.0 
    16  -9999.00 -9999.0 
    17  -9999.00 -9999.0 
    18  -9999.00 -9999.0 
    19  -9999.00 -9999.0 
    20  -9999.00 -9999.0 

    head(y, n =20) 
     V1  V2 
    1   ncols 3486.0 
    2   nrows 4477.0 
    3  xllcorner -374495.8 
    4  yllcorner -616153.3 
    5  cellsize  270.0 
    6 NODATA_value -9999.0 
    7  -9999.00 -9999.0 
    8  -9999.00 -9999.0 
    9  -9999.00 -9999.0 
    10  -9999.00 -9999.0 
    11  -9999.00 -9999.0 
    12  -9999.00 -9999.0 
    13  -9999.00 -9999.0 
    14  -9999.00 -9999.0 
    15  -9999.00 -9999.0 
    16  -9999.00 -9999.0 
    17  -9999.00 -9999.0 
    18  -9999.00 -9999.0 
    19  -9999.00 -9999.0 
    20  -9999.00 -9999.0 
+3

手动输入你不能指望我们知道发生了什么样的错误,如果你不提供包名称或代码后 –

+3

你应该包括。原始文件的内容。就我个人来说,不知道什么是.ASC文件或样子。 – Thomas

回答

15

更新:可以直接从“读光栅.ASC与raster函数文件(又名ESRI ASCII Raster文件) '包。帮助说:

如果x是一个文件名,下面的其他变量被认可:

本地:逻辑。除了包rgdal丢失时,缺省值为FALSE。如果为真,阅读和写作......,和Arc ASCII文件与本地(光栅包)驱动程序,而不是通过rgdal做....

library(raster) 
r = raster("C:\\...\\Dropbox/MVZ/aet2009sep.asc") 
plot(r) 

编辑2 [过时] :

另一种方法是raster()函数,它具有正确安装的包rgdal

library(rgdal) 
r = raster("C:\\...\\Dropbox/MVZ/aet2009sep.asc") 
plot(r) 

编辑1 [过时]:

封装adehabitat现在已经过时。目前,它在加载时提供警告:

使用它是危险的,因为错误不再被纠正。 现在推荐使用包adehabitatMA,adehabitatLT,adehabitatHR和adehabitatHS。
...

原来的答复[过时]:

使用来自R包adehabitatimport.asc功能(参见第92页):

library(adehabitat) 
asc = import.asc("C:\\...\\Dropbox/MVZ/aet2009sep.asc") 

#plot asc object. 
library(raster) 
r = raster(asc) 
plot(r) 
+1

您可以直接与光栅(阅读本)如果rgdal可用了。 – mdsumner

+1

是'光栅()'函数不再提供 – Stophface

+0

@Stophface,更新的答案。感谢您的反馈意见。 –

1

SDMTools所具有的功能read.asc,这根据R 3.2.4进行工作。但是,至少在我的情况下,使用read.table以及所有默认值都是开箱即用的。