将ASC文件读入R

时间:2013-11-24 17:31:44

标签: r import raster

我目前正在尝试将各种“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

4 个答案:

答案 0 :(得分:20)

更新:可以直接从'raster'包中使用raster函数读取.asc文件(又名ESRI ASCII Raster文件)。帮助说:

  

如果x是文件名,则识别以下附加变量:

     

native:逻辑。除非缺少包rgdal,否则默认值为FALSE。如果为TRUE,则读取和写入...,以及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 package adehabitat中的import.asc功能(参见第92页):

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

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

答案 1 :(得分:2)

SDMTools具有函数read.asc,它在R 3.2.4下运行。但是,至少在我的情况下,使用read.table开箱即用的所有默认值。

答案 2 :(得分:2)

使用Laf包,它非常快。

答案 3 :(得分:0)

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

我在使用the import button in the Environment window.

手动导入后找到了这个