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

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

波段依行交错排列 (Band interleaved by line,BIL)、波段依像素交错排列 (Band interleaved by pixel,BIP),与波段序排列 (Band sequential,BSQ) 是三种常用于多波段影像储存的格式。(更多资讯请参考这里)

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

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

取得资料

我们要使用 全球土地复盖设施(Global Land Cover Facility)提供的 AVHRR 全球土地复盖分类资料(Global Land Cover Classification data)作为示例。

此资料集以 BSQ 档发布。下载像素解析度 1 度的资料集

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

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

资料来源 [GLCF]

操作流程

  1. 解压缩并取出 .bsq 档:如使用 Windows,可以使用 7-Zip 读取和解压缩 .gz 档。你会看到压缩档中只有一个叫做 gl-latlong-1deg-landcover.bsq 的 .bsq 档,没有 hdr 档。

../_images/1171.png
  1. 如果你尝试在 QGIS 中开启 gl-latlong-1deg-landcover.bsq 的话,会有错误讯息显示。

../_images/2131.png
  1. 如要克服此错误,我们得自己创造一个副档名为 .hdr 的档案。hdr 意味着档头(header),内含着资料集的结构以及各种资讯。这些资讯通常可以在资料集的诠释资料(Metadata)中找到,如果你连诠释资料都没有,找看看资料来源的网站或文件说明有没有提供。有些资讯就算你不知道,也可以用猜的。在本例中,资料的下载页面有提供连结至诠释资料,把它下载下来然后开启它。

../_images/370.png
  1. .hdr 档必须要是纯文字档案,并且编排为以下的格式才行。我们已经找到某些参数了,但其他的还需要花点心力。格式的细节请参考这里

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。在文字档中的某些值很容易理解:ncolsnrows 是影像的行数和每行的像素数目,可以从诠释资料找到;cellsize 是像素解析度,诠释资料中为 1。左下角的 X 与 Y 座标(xllcorneryllcorner)要靠我们决定,由于影像复盖全球,又使用经纬度编排,xllcorneryllcorner 可以分别设为 -180 和 -90。无资料值(nodata_value)的资讯也找不到,用猜的话 -9999 是个较保险的数值。从诠释资料中,我们还可找到像素格式(Pixel Format)是 Byte,所以 nbits 要填上 8,然后 pixeltype 则为 **byte_unsigned**(无号位元组)。我们也没有位元组顺序(byteorder)的资讯,所以来试试看 msbfirst(最高有效位)。你也可以从这里下载正确格式的 hdr 档。

../_images/550.png
  1. 现在我们有档头档案了,把它移到与 gl-latlong-1deg-landcover.bsq 相同的目录下,然后再 QGIS 中选择 图层 ‣ 加入影像图层,选择 gl-latlong-1deg-landcover.bsq 作为输入档案然后按下 开启

../_images/648.png
  1. 接下来的视窗会要你选择 CRS。由于档案是以经纬度编排,这边的 CRS 要选 WGS84 EPSG:4326。最后,你就可以看到 QGIS 已经载入本资料了。

../_images/747.png