【问题标题】:Using SRTM tif file in R在 R 中使用 SRTM tif 文件
【发布时间】:2014-07-16 19:30:55
【问题描述】:

我正在尝试将 SRTM 数据集导入 R。我已将数据下载到 tif 文件中,但是在“R”中读取它时遇到问题。 我试过使用以下代码:

t = readTIFF("srtm_56_06/srtm_56_06.tif", as.is=TRUE)
load('srtm_56_06/srtm_56_06.tif')
read_file<-as.matrix(raster("srtm_56_06/srtm_56_06.tif")

但是我仍然收到错误消息:

load('srtm_56_06/srtm_56_06.tif')
# Error: bad restore file magic number (file may be corrupted) -- no data loaded
# In addition: Warning message:
# file ‘srtm_56_06.tif’ has magic number 'II*'
#   Use of save versions prior to 2 is deprecated 

library(raster)
t = readTIFF("srtm_56_06/srtm_56_06.tif", as.is=TRUE)
# Error: could not find function "readTIFF"

read_file<-as.matrix(raster("srtm_56_06/srtm_56_06.tif") + min(read_file)
# Error: unexpected symbol in:
# "read_file<-as.matrix(raster("srtm_56_06/srtm_56_06.tif")
# min"

谁能帮我输入这些数据的命令。我是“R”的新手,有点迷茫。

【问题讨论】:

  • 那么这是一个tiff 文件,就像图像一样是“标记图像文件格式”吗?如果是这样,则有 tiff 包具有 readTIFF 功能(raster 没有)。但是raster 可以通过raster() 函数打开“GeoTiff”类型的文件。

标签: r import tiff


【解决方案1】:

只需使用 raster 阅读它,但请注意,您还需要安装 rgdal 才能阅读 .tif。

library(raster)
library(rgdal)
r <- raster("srtm_56_06/srtm_56_06.tif")

如果可行,请尝试

plot(r)
r

如果它真的是“TIFF”,那应该没问题,如果它真的是 GeoTIFF,那么你也会有一张合理的地图。 (如果它是 GDAL 可以读取的其他内容,无论如何您可能会得到一个好的结果,请记住文件的扩展名并不是其内容的可靠指标)。

SRTM 线索表明这是来自平铺全球 SRTM 数据集的单波段 DEM 文件。如果它是某种“多波段图像”,那么您可以使用brick 阅读并使用plotRGB 进行绘图(但我真的怀疑这里的情况)。请注意,SRTM 有一种本机二进制格式,raster/rgdal 也可以读取,但他们也分发 .tif 或其他人对其进行了转换。

您的代码中有许多误解:

  • load 用于从 R 创建的特定文件类型(不是这些 .tif)
  • readTIFF 不在包中 raster
  • read_file 将是一个合理的矩阵,如果您安装了 rgdalraster 必须使用它来加载 .tif),但为什么要丢弃空间元数据?

【讨论】:

    猜你喜欢
    • 2020-12-04
    • 2011-10-04
    • 2018-06-05
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多