如何在不使用辅助文件的情况下将栅格数据写入磁盘?

8
我将使用R语言中的Raster包将数据集写入ERMapper格式(.ers)文件,但我在生成的.aux.xml辅助文件方面遇到了问题(实际上我并不关心它)。
简单的例子:
rst <- raster(ncols=15000,nrows=10000)
rst[] <- 1.234
writeRaster(rst, filename='_test.ers', overwrite=TRUE)
writeRaster() 方法执行起来需要一定时间,因为数据文件相当大,在磁盘上有1.2GB。
在执行 writeRaster() 时查看发生了什么,我发现 .ers 文件(头文件 + 相关数据文件)通常会在约20秒内生成。然后,writeRaster() 又花费20-25秒的时间生成 .aux.xml 文件,其中仅包含统计信息,如最小值、最大值、平均值和标准偏差(这可能解释了为什么计算时间这么长)。
由于我不关心 .aux.xml 文件,我希望 writeRaster() 完全不要处理它,并节省我20-25秒的执行时间(因为我需要将许多这些数据集写入磁盘,所以这样能使我的代码加速50%左右)。
有人知道如何告诉 writeRaster() 不要创建 .aux.xml 文件吗?我怀疑这是一个 GDAL 相关问题,但经过大量研究后仍然没有找到答案...
非常感谢任何帮助!

使用你的代码,我在我的电脑上(win7)运行了10秒钟,获得了3个文件:_test.ers 606B,_test 1.11GB 和 _test.ers.aux 288B。 - HubertL
谢谢@HubertL。我实际上是将文件写入远程目录,因此大部分时间都花在通过网络发送数据上。这实际上很好,因为它向我展示了writeRaster()首先将数据传输到数据文件中,然后从保存的数据集中重新读取数据以计算辅助文件中的统计信息(!!)。无论如何,对我来说重要的是函数计算.aux.xml文件所需的时间,与编写实际数据所需的时间相比。在你的情况下,它也大约需要一半的时间吗? - dsp542
如果您提供参数 format="raster",则不会写入 .aux 文件。 - HubertL
是的,这样可以将数据保存为“本地”栅格包格式(.grd),而不是 ERMapper 格式(.ers)。然后我需要重命名数据文件(假设原始数据以相同方式保存),并从 .grd 文件重新创建 .ers 头文件……虽然这可能是可行的(但不理想)选项。 - dsp542
1个回答

10

可以使用(不太容易找到的)rgdal::setCPLConfigOption函数来设置与GDAL文件格式驱动程序相关的选项。

在您的情况下,

rgdal::setCPLConfigOption("GDAL_PAM_ENABLED", "FALSE")
应该禁用xml文件的创建。
希望这会有所帮助。

确实是这样的!谢谢 @LoBu,我可能永远都找不到这个! - dsp542

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接