将ASC文件读入R语言

26

我目前正在尝试从各种“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
如果您没有提供软件包名称或代码,您不能指望我们知道发生了什么错误。 - IRTFM
3
请包含原始文件的内容。就我个人而言,我不知道 .asc 文件是什么或者是什么样子。 - Thomas
4个回答

32
更新:现在可以使用“raster”包中的“raster”函数直接读取.asc文件(也称为ESRI ASCII Raster文件)。帮助文档如下:
如果x是一个文件名,则会识别以下附加变量:
native: 逻辑值。默认值为FALSE,除非缺少rgdal软件包。如果为TRUE,则使用本机(raster package)驱动程序而不是通过rgdal来读取和写入... 和Arc ASCII文件。
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 包adehabitat中的import.asc函数(参见第92页)。

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

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

@Stophface,已更新答案。感谢您的反馈。 - Andre Silva

2

SDMTools 包中有名为 read.asc 的函数,适用于 R 3.2.4。但是,在我的情况下,使用所有默认值的 read.table 函数直接可行。


2

使用Laf包,它的速度非常快。


0

我使用了命令x =read.csv("C:\\...\\Dropbox/MVZ//aet2009sep.asc", sep=";")

环境窗口的导入按钮手动导入后,我发现了这个命令。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接