我正在尝试在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
答案 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"