【问题标题】:Opening an ASCII file using R使用 R 打开 ASCII 文件
【发布时间】:2017-02-06 10:00:53
【问题描述】:

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

【问题讨论】:

    标签: r raster


    【解决方案1】:
    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  ...
    

    对于另一个文件,找到 Data 开始的行号并将该数字输入到 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"
    

    【讨论】:

    • 这个命令非常适合读取矩阵。有人可以建议,将此 df1 显示为栅格数据。
    • 15 岁以下的人的支持不会公开显示。我已经投了赞成票。在问题中,我给出了 Plot (r),它表明 ascii 将显示为栅格。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2011-03-04
    • 2013-11-10
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多