将 ASC 文件读入 R
Posted
技术标签:
【中文标题】将 ASC 文件读入 R【英文标题】:Reading an ASC file into R 【发布时间】:2013-12-09 06:21:11 【问题描述】:我目前正在尝试将各种“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
【问题讨论】:
如果您不提供包名称或代码,您不能指望我们知道发生了什么样的错误。 您应该包含原始文件的内容。一方面,我不知道 .asc 文件是什么或看起来像什么。 【参考方案1】:更新:可以直接从 'raster' 包中使用 raster
函数读取 .asc 文件(又名 ESRI ASCII Raster 文件)。帮助说:
如果 x 是文件名,则识别以下附加变量:
本机:合乎逻辑。默认为 FALSE,除非包 rgdal 缺失。如果为 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 包 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,更新了答案。感谢您的反馈。【参考方案2】:包SDMTools
有函数read.asc
,在R 3.2.4 下工作。但是,至少在我的情况下,使用 read.table
和所有默认值都是开箱即用的。
【讨论】:
【参考方案3】:使用 Laf 包,速度非常快。
【讨论】:
【参考方案4】:我使用了命令 x =read.csv
("C:\...\Dropbox/MVZ//aet2009sep.asc", sep=";")
我在使用 the import button in the Environment window. 手动导入后发现了这个
【讨论】:
以上是关于将 ASC 文件读入 R的主要内容,如果未能解决你的问题,请参考以下文章
基于流式输入输出 使用Java借助GSON库 实现对大型asc文件的读入解析 并输出为JSON文件