天天看點

GDAL工具使用示例(一)

GDAL提供的工具都是非常的實用,後續打算寫一系列的博文來對GDAL提供的工具進行簡單的說明,并結合實際的例子進行示範,希望對資料處理的同學有用。

首先說明一下需要準備的資料,我這裡使用的是SRTM的DEM資料,至于下載下傳方式可以找我之前的部落格。資料截圖如下,下載下傳的原始資料都是ZIP檔案。也就是下圖中的10個zip檔案。

GDAL工具使用示例(一)

今天首先對gdalinfo和gdalbuildvrt這兩個工具做個說明。gdalinfo顧名思義,就是用來檢視圖像資訊,這些圖像資訊基本上包括圖像中的所有資訊,目前除了不能檢視圖像的灰階值之外(檢視圖像的灰階值有另外一個工具,後續介紹),其他的資訊都可以通過這個工具來進行檢視。

首先來檢視其中一個zip檔案中圖像的資訊(當然你也可以把zip解壓後再進行處理)。這裡不對zip檔案進行解壓是為了示範GDAL中比較牛的一個地方,可以直接通路zip壓縮包中的資料。文法為:

gdalinfo.exe /vsizip/E:/newzealand/srtm_70_21.zip/srtm_70_21.tif
      

關于GDAL通路zip壓縮封包件中的資料路徑拼寫可以參考我之前的部落格[3]。上面的指令輸出資訊如下:

GDAL工具使用示例(一)

從上圖可以看出,GDAL輸出了zip壓縮包中圖像的大小,肆角坐标,資料類型,NoData值,此外還有檔案的關聯檔案。除此之外,gdalinfo還可以使用-mm指令來統計圖像的最大最小值,-stats指令來統計圖像的極值,均值、方差等統計資訊,-hist來統計圖像的直方圖等資訊。此外還有一些選項用來控制輸出資訊是否顯示等,具體參考官方文檔[1]。

gdalinfo工具使用至此告一段落,下面我們要把上面下載下傳的SRTM的dem資料來進行拼接,形成一個大的檔案。這裡我們使用一個比較“進階”的工具——gdalbuildvrt來完成這項工作。其實和我們經常用的鑲嵌作用非常的類似,這裡也差不多。下面說說操作方式。

接下來需要把這些所有的zip中的tif檔案根據地理坐标拼接成一個大圖像,這裡使用GDAL的VRT檔案格式,一種虛拟的檔案格式,使用起來非常友善。對于生成VRT檔案,可以分為兩種方式,一種是将所有的zip資料解壓後進行處理;另一種是不解壓,直接進行處理。

首先看解壓的處理方式,其實很簡單,首先将上面所有的zip解壓,得到裡面的tif檔案存放在一個檔案夾中,比如我這裡就是E:\newzealand。具體做法如下:把上面所有的tif檔案的路徑存放在一個txt檔案中,檔案名叫vrt_input_tif.txt。如下所示:

E:/newzealand/srtm_70_21.tif
E:/newzealand/srtm_70_22.tif
E:/newzealand/srtm_70_23.tif
E:/newzealand/srtm_71_19.tif
E:/newzealand/srtm_71_20.tif
E:/newzealand/srtm_71_21.tif
E:/newzealand/srtm_71_22.tif
E:/newzealand/srtm_72_20.tif
E:/newzealand/srtm_72_21.tif
E:/newzealand/srtm_72_22.tif
      

對于不解壓處理,可以直接使用GDAL提供的虛拟通路機制中的zip通路方式,直接讀取zip壓縮包中的資料。具體作法與上面類似,把上面所有的zip檔案的路徑存放在一個txt檔案中,檔案名叫vrt_input_zip.txt。如下所示:

/vsizip/E:/newzealand/srtm_70_21.zip/srtm_70_21.tif
/vsizip/E:/newzealand/srtm_70_22.zip/srtm_70_22.tif
/vsizip/E:/newzealand/srtm_70_23.zip/srtm_70_23.tif
/vsizip/E:/newzealand/srtm_71_19.zip/srtm_71_19.tif
/vsizip/E:/newzealand/srtm_71_20.zip/srtm_71_20.tif
/vsizip/E:/newzealand/srtm_71_21.zip/srtm_71_21.tif
/vsizip/E:/newzealand/srtm_71_22.zip/srtm_71_22.tif
/vsizip/E:/newzealand/srtm_72_20.zip/srtm_72_20.tif
/vsizip/E:/newzealand/srtm_72_21.zip/srtm_72_21.tif
/vsizip/E:/newzealand/srtm_72_22.zip/srtm_72_22.tif
      

接下來打開cmd,切換到GDAL的工具目錄,然後輸入下面的内容就可以得到一個NZL_zip.vrt的檔案,可以用ArcMap10打開,看到圖像整個拼接成一整塊了。

gdalbuildvrt.exe -input_file_list E:\newzealand\vrt_input_tif.txt E:\newzealand\NZL_tif.vrt
gdalbuildvrt.exe -input_file_list E:\newzealand\vrt_input_zip.txt E:\newzealand\NZL_zip.vrt
      
GDAL工具使用示例(一)

我們再次使用gdalinfo工具檢視拼接好的vrt檔案資訊,可以看到圖像的大小已經變大了,而且檔案相關的檔案也包含了所有的zip檔案。直接用ArcMap10打開上面的VRT檔案,發現所有的資料均已經拼接成一個大檔案。VRT檔案的大小僅僅6kb,基本上不占用磁盤空間即可管理大資料。有點象ArcMap10的鑲嵌資料集的功能。

GDAL工具使用示例(一)

注意:必須使用ArcMap10以上版本才能打開,10版本以下的不支援GDAL的VRT資料集。或者使用QGIS打開。

參考資料: