2013-01-02 14 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