使用R打开ASCII文件

时间:2017-02-06 10:00:54

标签: r raster

我正在尝试在R.中打开一个ASCII文件。此文件是从热像仪的软件导出的。它具有作物的温度值。我使用以下代码:

library(raster)
r = raster("AA092800_1.asc") 
plot(r)

但每次我都会遇到错误 “未被识别为受支持的文件格式 .rasterObjectFromFile中的错误(x,band = band,objecttype =“RasterLayer”,:   无法从此文件创建RasterLayer对象。“

在检查文件时,我发现有逗号而不是小数点,我用小数替换了所有逗号,但仍然存在相同的问题。

请帮帮我。

此处附有ASCII文件。original ascii file

相同的文件逗号替换为小数点文本文件。 comma replaced with decimal point text file

1 个答案:

答案 0 :(得分:2)

df1 <- read.table("AA092800_1.asc", skip = 11, header = FALSE, sep = "\t")

head(df1, 2)
#      V1    V2    V3    V4    V5    V6    V7    V8    V9   V10   V11   V12   V13   V14   V15   V16   V17   V18   V19   V20   V21   V22   V23   V24   V25   V26   V27   V28 ...
# 1 36,46 36,33 36,40 36,37 36,10 36,27 36,50 36,49 36,54 36,52 36,51 36,63 36,91 36,97 36,81 36,89 37,12 36,70 37,24 37,29 37,65 37,33 37,13 37,26 37,41 37,14 38,01 37,84 ...
# 2 36,68 36,38 36,39 36,41 36,32 36,42 36,50 36,53 36,39 36,49 36,53 36,54 36,62 36,84 37,06 37,16 37,48 37,60 37,35 37,32 37,39 37,12 37,06 37,33 37,46 37,99 37,87 38,15  ...

这次使用dec = ","表示,为十进制值

df1 <- read.table("AA092800_1.asc", skip = 11, header = FALSE, sep = "\t", dec = ",")

head(df1, 2)
#      V1    V2    V3    V4    V5    V6   V7    V8    V9   V10   V11   V12   V13   V14   V15   V16   V17  V18   V19   V20   V21   V22   V23   V24   V25   V26   V27   V28  ...
# 1 36.46 36.33 36.40 36.37 36.10 36.27 36.5 36.49 36.54 36.52 36.51 36.63 36.91 36.97 36.81 36.89 37.12 36.7 37.24 37.29 37.65 37.33 37.13 37.26 37.41 37.14 38.01 37.84  ...
# 2 36.68 36.38 36.39 36.41 36.32 36.42 36.5 36.53 36.39 36.49 36.53 36.54 36.62 36.84 37.06 37.16 37.48 37.6 37.35 37.32 37.39 37.12 37.06 37.33 37.46 37.99 37.87 38.15  ...

对于另一个文件,找到数据开始的行号,并将该号码输入skip参数。

栅格数据需要以,

分隔的数据
df1 <- read.table("AA092800_1.asc", skip = 11, header = FALSE, sep = "\t")

library('raster')
df2 <- as.raster(as.matrix(df1))

head(df2)
# "36,46" "36,68" "36,82" "36,75" "36,67" "36,94"
class(df2)
# [1] "raster"