使用R,使用“Generic Flat Binary,Byte Interleave By Line(BIL)”读取GIS数据

时间:2013-01-14 06:57:14

标签: r gis raster

我想把following GIS数据文件读到R:

部分数据规范为here

图像类型:通用平面二进制,字节交错(BIL)

投射:中断Goode Homolosine

我尝试使用R包“raster”,但失败了。

library(raster)
r <- raster(file.choose())

Error in .local(.Object, ...) : 
  `C:\global_forest_cover.img' not recognised as a supported file format.

Error in .rasterObjectFromFile(x, band = band, objecttype = "RasterLayer",  : 
  Cannot create a RasterLayer object from this file.

那么,我应该如何将这个GIS数据加载到R?另外,将投影“Interrupted Goode Homolosine”转换为LongLat?

1 个答案:

答案 0 :(得分:5)

创建一个名为global_forest_cover.hdr的文件,并将标题信息从http://edc2.usgs.gov/glcc/fao/header_file.php添加到其中:

BYTEORDER   M
LAYOUT  BIL
NROWS   15059
NCOLS   36543
NBANDS  1
NBITS   8
BANDROWBYTES    36543
TOTALROWBYTES       36543
ULXMAP  -17359000
ULYMAP  8673000
XDIM    1000
YDIM    1000

然后阅读.img文件:

> forest = raster("global_forest_cover.img")
Geospatial Data Abstraction Library extensions to R successfully loaded
Loaded GDAL runtime: GDAL 1.6.3, released 2009/11/19
Path to GDAL shared files: /usr/share/gdal16
Loaded PROJ.4 runtime: Rel. 4.7.1, 23 September 2009, [PJ_VERSION: 470]
Path to PROJ.4 shared files: (autodetected)
> forest
class       : RasterLayer 
dimensions  : 15059, 36543, 550301037  (nrow, ncol, ncell)
resolution  : 1000, 1000  (x, y)
extent      : -17359500, 19183500, -6385500, 8673500  (xmin, xmax, ymin, ymax)
coord. ref. : NA 
data source : /home/nobackup/rowlings/Downloads/global_forest_cover.img 
names       : global_forest_cover 
values      : 0, 255  (min, max)

GDAL查看.hdr文件并使用它来计算.img文件中15059 * 36543字节的结构。

但是它没有投影信息。但即便如此,将IGH预测扭曲回拉特长度可能会有些问题。如果你看看其他IGH投影地图,你会看到它们涉及拆除海洋以帮助平整地球。要回到lat-long,你需要扭转所有这些平坦和撕裂。它应该是可能的,我认为最新的PROJ4库支持IGH预测,但可能只在一个方向上。但是,除非你使用完全相同的代码来创建你拥有的数据,但反过来你可能无法得到正确的答案。

鉴于.hdr文件未包含在zip中,并且投影对于进一步分析来说并不是一个好的投影,我会去寻找另一个数据来源。此数据显然仅用于显示目的。而且它也很差,因为它似乎没有丢失IGH投影分裂地球的数据值 - 比较http://edc2.usgs.gov/glcc/fao/index.php页面上的图片与其他IGH投影http://en.wikipedia.org/wiki/Goode_homolosine_projection

我认为这里的数据可能更合适:http://www.fao.org/forestry/32203/en/

> r=raster("./fceurope/europe/w001001.adf")
> r
class       : RasterLayer 
dimensions  : 20000, 40000, 8e+08  (nrow, ncol, ncell)
resolution  : 0.009, 0.009  (x, y)
extent      : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +ellps=clrk66 +no_defs 
data source : /home/nobackup/rowlings/Downloads/fceurope/europe/w001001.adf 
names       : w001001 
values      : 1, 6  (min, max)
Raster Attribute Table
     fields : ID   COUNT
        min :  1  129626
        max :  6 4963775

但我在名称和全球范围内的'欧洲'之间略有混淆。它也是一个非常大的光栅。啊,它让欧洲处于不利地位。请注意,投影现在是拉长的。在将网格放在一起之前,您可能希望将网格细化,以便从那里给出的所有文件创建全局栅格。