我目前正在尝试将各种“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
答案 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 ;;")