使用R,使用“Interrupted Goode的Homolosine Projection Binary Format”读取GIS数据

时间:2013-01-02 06:21:47

标签: r gis binaryfiles spatial

我正在尝试将带有“Interrupted Goode的Homolosine Projection Binary Format”的GIS数据加载到R中,但我不知道该怎么做。

数据示例可以来自以下链接: ftp://ftp.glcf.umd.edu/glcf/Continuous_Fields_Tree_Cover/Global/gl-goodes-treecover/gl-goodes-deciduous.bin.gz

我尝试在R包“caTools”中使用“read.ENVI”功能,但它不起作用。

> library(caTools)
Loading required package: bitops
> r <- read.ENVI("gl-goodes-deciduous")
Error in read.ENVI("gl-goodes-deciduous") : 
  read.ENVI: Could not open input header file: gl-goodes-deciduous.hdr

有什么建议吗?感谢〜

1 个答案:

答案 0 :(得分:4)

如果你有一台机器可以读取整个600M +二进制文件而不会窒息那么好。否则,您可能希望利用光栅包在磁盘上使用GDAL图像的技巧。

首先创建一个名为gl-goodes-deciduous.vrt的文件,如下所示:

<VRTDataset rasterXSize="40031" rasterYSize="17347">
<VRTRasterBand dataType="Byte" band="1" subClass="VRTRawRasterBand">
    <SourceFilename relativetoVRT="1">gl-goodes-deciduous.bin</SourceFilename>
    <ImageOffset>0</ImageOffset>
    <PixelOffset>1</PixelOffset>
    <LineOffset>40031</LineOffset>
    <ByteOrder>MSB</ByteOrder>
  </VRTRasterBand>
</VRTDataset>

这为GDAL库提供了足够的信息来读取数据。您可能还想阅读VRT上的文档以获得正确的坐标。然后在R中,打开VRT并绘制一个低分辨率的样本:

> require(raster)
> r = raster("gl-goodes-deciduous.vrt")
> plot(r,maxpixels=100*100)

ProTip:每当有.tif文件可用时,请使用它,因为它可能是内置了所有必需元数据的GeoTIFF。

我有点担心Nrows乘Ncolumns比文件短163个字节,但也许有一个页脚,或者ImageOffset应该是163来抵消这个。

相关问题