在 QGIS 中开启 BIL、BIP 或 BSQ 格式档案

在处理遥测和科学资料时,常会遇到像是 BIL, BIP or **BSQ**类型的格式。QGIS 用来读取影像资料的 The GDAL library - 有支援此类格式,但它没有办法直接开启这些档案。这里我们要展示如果从此格式建立相关的支援档案,让它们可以在 QGIS 中读取。

波段依行交错排列 (Band interleaved by line,BIL)、波段依像素交错排列 (Band interleaved by pixel,BIP),与波段序排列 (Band sequential,BSQ) 是三种常用于多波段影像储存的格式。(Read more about these formats)

一般来说,这些档案都会附有一个``.hdr`` 档。如果你的资料集之中有 .hdr 档,请务必确认 .bil、.bsq 或 .bip 的主档名与 .hdr 档相同,而且他们必须在同一个资料夹之中。举例来说,如果有个档案名称为``image.bil``,伴随的档案应为``image.hdr`` ,而且会与``image.bil`` 位在相同资料夹。如此一来,当你选择 Layer ‣ Add Raster Layer ,然后开启 image.bil 时,就不会出现任何问题。

有些时候,这些档案偏偏就是没有 .hdr 档。这种情况下,你需要利用本教学的方法自己创造一个才行。

取得资料

我们要使用`Global Land Cover Facility <http://glcf.umd.edu/>`_ 提供的 AVHRR Global Land Cover Classification data 作为示例。

此资料集以 BSQ 档发布。下载`1 Degree pixel resolution <ftp://ftp.glcf.umd.edu/glcf/Global_Land_Cover/Global/1deg/gl-latlong-1deg-landcover.bsq.gz>`_。

为了方便起见,你也可以直接用下面的连结下载:

gl-latlong-1deg-landcover.bsq.gz

资料来源 [GLCF]

操作流程

1.解压缩并取出 .bsq 档:如使用 Windows,可以使用`7-Zip utility <http://www.7-zip.org/>`_ t读取和解压缩 .gz 档。你会看到压缩档中只有一个叫``gl-latlong-1deg-landcover.bsq``的 .bsq 档,没有 hdr 档。

../_images/1101.png
  1. 如果你尝试在 QGIS 中开启``gl-latlong-1deg-landcover.bsq`` 的话,会有错误讯息显示。
../_images/239.png
  1. 如要克服此错误,我们得自己创造一个副档名为``.hdr`` 的档案。hdr 意味着档头(header),内含着资料集的结构以及各种资讯。这些资讯通常可以在资料集的诠释资料(Metadata)中找到,如果你连诠释资料都没有,找看看资料来源的网站或文件说明有没有提供。有些资讯就算你不知道,也可以用猜的。在本例中,资料的下载页面有提供连结至`metadata <ftp://ftp.glcf.umd.edu/glcf/Global_Land_Cover/Global/1deg/gl-latlong-1deg-landcover.glcf>`_,把它下载下来然后开启它。
../_images/326.png
  1. .hdr 档必须要是纯文字档案,并且编排为以下的格式才行。我们已经找到某些参数了,但其他的还需要花点心力。Learn more about the format
ncols <number of columns or width of the raster>
nrows <number of rows or height of the raster>
cellsize <pixel size or resolution>
xllcorner <X coordinate of lower-left corner of the raster>
yllcorner <Y coordinate of the lower-left corner of the raster>
nodata_value <pixel value to be ignored>
nbits <number of bits per pixel>
pixeltype <type of values stored in a pixel, typically float or integer>
byteorder <byte order in which image pixel values are stored, msb or lsb>
  1. 打开文字编辑器,然后依照前一个步骤的注明的格式输入,再把档案另存为``gl-latlong-1deg-landcover.hdr``。务必确认你的档名结尾不是``.txt``。在文字档中的某些值很容易理解:ncols 和**nrows** 是影像的行数和每行的像素数目,可以从诠释资料找到;cellsize**是像素解析度,诠释资料中为 1。左下角的 X 与 Y 座标(xllcorner 和 yllcorner)要靠我们决定,由于影像覆蓋全球,又使用经纬度编排,**xllcorneryllcorner 可以分别设为 -180 和 -90。无资料值(nodata_value)的资讯也找不到,用猜的话 -9999 是个较保险的数值。从诠释资料中,我们还可找到像素格式(Pixel Format)是 Byte,所以**nbits** 然后 pixeltype 则为**byte_unsigned**(无号位元组)。我们也没有位元组顺序(byteorder)的资讯,所以来试试看 msbfirst(最高有效位)。你也可以从`here <../../downloads/gl-latlong-1deg-landcover.hdr>`_下载正确格式的 hdr 档。
../_images/519.png
  1. 现在我们有档头档案了,把它移到与``gl-latlong-1deg-landcover.bsq``相同的目录下,然后再 QGIS 中选择:menuselection:Layer –> Add Raster Layer,选择``gl-latlong-1deg-landcover.bsq`` 作为输入档案然后按下:guilabel:Open
../_images/618.png
  1. 接下来的视窗会要你选择 CRS。由于档案是以经纬度编排,这边的 CRS 要选**WGS84 EPSG:4326**。最后,你就可以看到 QGIS 已经载入本资料了。
../_images/717.png