2013-01-02 10 views
0

我试图用“中断的古德的Homolosine投影二进制格式”成R加载GIS数据的GIS数据,但我不知道该怎么做。阅读与“中断古德的Homolosine投影二进制格式”,使用R

数据例如可以从以下链接获得: ftp://ftp.glcf.umd.edu/glcf/Continuous_Fields_Tree_Cover/Global/gl-goodes-treecover/gl-goodes-deciduous.bin.gz

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

> 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 

有什么建议吗?谢谢〜

+0

我看不出为什么你会期望这个工作,该文件只是原始的二进制文件。据推测,某处有关于文件布局的说明和/或格式化驱动程序可以理解的额外元数据。这里的文件提供了一些线索,可能是:ftp://ftp.glcf.umd.edu/glcf/Continuous_Fields_Tree_Cover/Global/AVHRR_DECIDUOUS_1992_1993/AVHRR_DECIDUOUS_1992_1993.GLOBAL.met – mdsumner

+0

。.glcf文件与.bin.gz位于同一文件夹中文件与所需的元数据。尽管该文件中每行的像素*行数比gunzipped文件大小短163字节,这让我认为.bin确实有某种标题... – Spacedman

+0

我用[0,80]获得了值,没有足够的余地去做其余的事情。 :) d < - readBin(“gl0101bs”,“integer”,size = 1,n = 17347 * 40031) – mdsumner

回答

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) 

普罗蒂普:只要有可用的.tif文件,使用,因为它可能是内置了所有需要的元数据的GeoTIFF 。

我稍微担心NROWS倍Ncolumns比文件更短163个字节,但也许有一个页脚,或也许ImageOffset应该是163,以抵消这一点。

+0

+1拥有正确的PROJ.4!在xml头文件中只有一个问题,你是如何设置rasterXSize =“40031”rasterYSize =“17347”? – agstudy

+0

这就是它的FTP站点文件夹中的文件中说:ftp://ftp.glcf.umd.edu/glcf/Continuous_Fields_Tree_Cover/Global/gl-goodes-treecover/gl-goodes-treecover.glcf在GL节-goodes落叶(所有图像似乎都是一样的) – Spacedman