主要轉自http://blog.csdn.net/liminlu0314?viewmode=contents
部分GDAL工具功能簡介
gdalinfo.exe 顯示GDAL支持的各種柵格文件的信息。
gdal_translate.exe 在不同的格式間進行轉換。同時,潛在的執行了一些切割、重采樣和使像素比例變化的任務。
gdalwarp.exe 投影轉換和投影綁定。同時也可以進行圖像鑲嵌。這個程序可以重新投影所支持的投影,而且如果圖像("raw" with)控制信息也可以把GCPs 和圖像存儲在一起
gdaltindex.exe 創建柵格索引的SHP 文件。它能為每個柵格數據建立一個記錄:一個包含柵格名稱的屬性,以及這個柵格的外邊界所組成的多邊形。
gdal_contour.exe 從一個柵格DEM生成矢量的等值線。
gdaltransform.exe 與PROJ相似。進行投投影轉換。
nearblack.exe 將柵格中接處黑\白的像元置成黑色或白色。這可以用來修補壓縮丟失信息而造成的不准確,以便於在鑲嵌時將其視為透明。
gdal_grid.exe 從分散的點生成柵格,有插值的意思。
ogrinfo.exe 顯示OGR支持的矢量數據的信息
ogr2ogr.exe 進行不同簡單矢量格式轉換。
gdaladdo - 在文件內建立金字塔,提高文件打開和瀏覽速度.
gdalbuildvrt - Build a VRT from a list of datasets.
gdaldem - DEM分析與可視化工具,可進行坡度、坡向和山影分析,以及高程分色渲染功能.
rgb2pct.py - 將24bit的RGB圖像轉換為8bit顏色表圖像.
pct2rgb.py - 將8bit顏色表圖像轉換為24bit的RGB圖像.
gdal_merge.py - Build a quick mosaic from a set of images.
gdal2tiles.py - 生成 TMS瓦片結構,可用Google Earth(KML)或一般web瀏覽器進行瀏覽.
gdal_rasterize - 將矢量數據柵格化.
gdal_retile.py - Retiles a set of tiles and/orbuild tiled pyramid levels.
gdal_proximity.py - Compute a raster proximity map.
gdal_polygonize.py - Generate polygons from raster.
gdal_sieve.py - Raster Sieve filter.
gdal_fillnodata.py - Interpolate in nodata regions.
gdal-config -Get options required to build software using GDAL.
GDAL工具通用命令
下面的工具主要參考的GDAL官方網站中提供的幫助文檔說明,此外還有我的一些經驗,GDAL官方具體地址為:http://gdal.org/gdal_utilities.html。
在所有的GDAL工具集中都會支持下面的通用命令行參數,其形式一般是以兩個減號(--)開始,下面詳細介紹:
1. –version
輸出GDAL的版本信息,即版本號。
2. --formats
輸出GDAL支持的所有圖像格式說明。包括只讀和讀寫。格式支持描述如下:“ro”是只讀驅動;“rw”是讀寫驅動(比如支持CreateCopy方法);“rw+”是讀寫和更新驅動(比如支持Create方法),支持所有的讀寫更新操作。
3. --format format
輸出GDAL單個格式驅動的細節信息。格式名需要是在--formats 后列出所要輸出的格式名。比如GTiff,HFA,PCISK等。
4. --optfile file
讀取指定名稱的文件並把其中的內容當成參數傳入命令行列表。如果行首以#開頭的行將被忽略。多字組成的參數(即中間有空格隔開的參數)需要用雙引號來保正其為單一的參數。
5. --config key value
設置配置,把指定鍵設置為某個值,從而不必把他們設置為環境變量。一些命令參數鍵是GDAL_CACHEMAX(用於緩存的內存有多少M)以及GDAL_DATA(gdal的數據路徑)。比如在GDAL1.8之后,經常會發現打不開中文路徑的文件,那么可以用這個來設置,具體為“—configGDAL_FILENAME_IS_UTF8NO”。同時對於每一種驅動都會有各自的配置,具體參考各個驅動的說明。更多的配置選項參考該網址:http://trac.osgeo.org/gdal/wiki/ConfigOptions。
6. --debug value
控制調試信息的打印輸出。ON值表示允許調試信息輸出,OFF值表示不要輸出調試信息。
7. --help-general
輸出各個工具的命令行參數幫助信息。不同的命令輸出的內容不同。
下面還有一些通用的命令,是用來創建文件來使用的。創建不同的格式需要的參數都是不相同的,尤其是在特殊的情況下,比如創建的Erdas的img格式需不需要使用壓縮等特殊的需求。這些參數一般使用一個減號(-)開始。下面對這些參數進行一個簡單的說明。
8. -of format
選擇要創建新的文件的格式。這個格式被指定為類似GTiff(GeoTIFF格式)或者HFA(ERDAS格式)。所有的支持格式列表可以用--formats 參數列出來。但是只有格式列表“(rw)”可以被寫入和創建。許多工具如果沒有指定,默認是創建GeoTIFF格式的文件。文件擴展名不會自動添加,如果沒有指定文件名的后綴名,gdal一般不會添加任何擴展名。各個工具的命令行參數幫助信息。不同的命令輸出的內容不同。
9. -co NAME=VALUE
創建文件選項,許多格式會有一個或者更多的創建參數來控制文件創建的細節。比如GeoTIFF或者Erdas的img格式可以用創建參數控制壓縮,或者控制是否用分片還是分帶來進行存儲。
可以使用的創建參數根據格式驅動不同而不同。而一些簡單的格式根本就沒有創建參數。雖然某個格式可以用"--format <format>"參數列出所有可用的參數列表,但是更詳細的信息可以在格式介紹網頁中查到。對於不同的文件格式,請參考對應文件格式說明網頁。
10. -a_srs SRS
指定輸出文件的投影信息(坐標系統)。輸出各個工具的命令行參數幫助信息。不同的命令輸出的內容不同。有幾個工具(如gdal_translate、gdalwarp)可以在命令行中通過類似-a_srs(分配輸出SRS)、-s_srs(源SRS)、-t_srs(目標SRS)來指定坐標系統。這些工具允許以一系列格式定義坐標系統(SRS就是空間參考系統spatialreference system)。SRS通常可以使用下面幾種方式來指定:
NAD27/NAD83/WGS84/WGS72:這些常見的地理坐標系統可以通過名字來直接使用。
EPSG:n:坐標系統(投影或者地理坐標)可以通過EPSG碼來選擇。例如EPSG 27700是英國國家網格。更多的EPSG坐標系統可以在GDAL數據文件gcs.csv和pcs.csv中找到(位於GDAL目錄中的data文件夾中)。
PROJ.4定義:一個PROJ4定義字符串可以用作坐標系統定義。例如“+proj=utm +zone=11 +datum=WGS84”。注意在命令行中要保持Proj4字符串在一起作為一個單獨的參數(一般用雙引號引起來)。
OpenGIS WKT字符串: OpenGIS標准定義了一個文本格式來描述坐標系統作為簡單要素規范的一個部分。這個格式是gdal中使用的坐標系統的內部工作格式。包含wkt坐標系統描述的文件的文件名可以被用來作為坐標系統參數,或者坐標系統元素本身也可以被用來作為命令行參數。
ESRI WKT字符串:ESRI 在他們的ArcGIS產品(ArcGIS中的.prj文件)中使用了一種經過精簡OGC WKT的格式,而且這個格式被用在一個和wkt相似的風格的文件中。但是文件名要被加以ESRI::前綴。比如"ESRI::NAD 1927 StatePlane WyomingWest FIPS 4904.prj"。
空間參考網址URLs:可以使用一個空間參考的網址來指定,如:http://spatialreference.org/ref/user/north-pacific-albers-conic-equal-area/。
文件名:可以使用一個包含WKT、Proj.4的字符串,或者XML/GML格式的坐標系統定義的文件。
部分GDAL工具說明
1. gdalinfo 輸出文件信息
用法:
gdalinfo[--help-general] [-mm] [-stats][-hist] [-nogcp] [-nomd]
[-noct] [-nofl] [-checksum] [-proj4][-mdd domain]*
[-sd subdataset] datasetname
參數說明:
gdalinfo程序輸出gdal支持的柵格格式的一系列信息。
-mm
強制計算柵格每個波段的最大最小值。
-stats
讀取和現實圖像統計信息,如果指定該參數,將強制計算圖像的統計信息,如各個波段的最大值、最小值、均值、標准差等。
-hist
輸出所有波段的直方圖信息。
-nogcp
禁止地面控制點(GCP)列表打印。這可能對大量的GCP的數據集來說是十分有用的。比如L1B AVHRR或者hdf4MODIS數據,這些數據包含了成千上萬的地面控制點。
-nomd
禁止元數據打印,一些數據集可能包含極多的元數據字符串。
-noct
禁止輸出顏色表。
-checksum
強制計算數據集中所有波段的checksum。
-mdd domain
輸出指定區域的元數據信息。
-nofl
僅顯示文件列表中的第一個文件信息。GDAL1.9.0開始支持該參數。
-sd subdataset
如果輸入的數據集包含幾個子數據集,那么將使用指定的數字來替代(從1開始)完整的子數據集名稱。GDAL1.9.0開始支持該參數。
-proj4
輸出文件的坐標系統按照PROJ.4類型的字符串輸出。GDAL1.9.0開始支持該參數。
gdalinfo同時會輸出如下的信息(如果有的話):
當前文件的格式驅動信息
柵格數據大小(行列數)
文件的坐標系統(OGC WKT形式)
圖像關聯到地理的轉換參數(當前不包含旋轉系數)
地理上的邊界坐標,如果可能的話還有基於經緯度的完整的地理轉換參數(如果是GCPs就沒有)
地面控制點(GCPs)
所有的(包括子柵格的元數據)文件元數據
波段數據類型
波段顏色信息(RGB,Gray等)
波段顏色表信息
波段瓦片大小(文件塊大小)
波段描述
波段最大最小值(已經經過計算的)
波段CheckSum值(已經經過計算的)
波段無意義值(NODATA值)
波段可獲得的略縮圖分辨率
波段單位類型(如:波段的高程是米制還是英制)
波段的假顏色列表
舉例:
gdalinfoF:/Work/Data/utm.tif
Driver:GTiff/GeoTIFF
Sizeis 512, 512
CoordinateSystem is:
PROJCS["NAD27/ UTM zone 11N",
GEOGCS["NAD27",
DATUM["North_American_Datum_1927",
SPHEROID["Clarke1866",6378206.4,294.978698213901]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",-117],
PARAMETER["scale_factor",0.9996],
PARAMETER["false_easting",500000],
PARAMETER["false_northing",0],
UNIT["metre",1]]
Origin= (440720.000000,3751320.000000)
PixelSize = (60.000000,-60.000000)
CornerCoordinates:
UpperLeft ( 440720.000, 3751320.000) (117d38'28.21"W, 33d54'8.47"N)
LowerLeft ( 440720.000, 3720600.000) (117d38'20.79"W, 33d37'31.04"N)
UpperRight ( 471440.000, 3751320.000)(117d18'32.07"W,33d54'13.08"N)
LowerRight ( 471440.000, 3720600.000)(117d18'28.50"W,33d37'35.61"N)
Center ( 456080.000, 3735960.000) (117d28'27.39"W, 33d45'52.46"N)
Band1 Block=512x16 Type=Byte,ColorInterp=Gray
2. gdal_translate 格式轉換
用法:
gdal_translate[--help-general]
[-ot{Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/
CInt16/CInt32/CFloat32/CFloat64}][-strict]
[-of format] [-b band] [-mask band][-expand {gray|rgb|rgba}]
[-outsize xsize[%] ysize[%]]
[-unscale] [-scale [src_min src_max[dst_min dst_max]]]
[-srcwin xoff yoff xsize ysize][-projwin ulx uly lrx lry]
[-a_srs srs_def] [-a_ullr ulx uly lrxlry] [-a_nodata value]
[-gcp pixel line easting northing[elevation]]*
[-mo "META-TAG=VALUE"]* [-q][-sds]
[-co "NAME=VALUE"]* [-stats]
src_dataset dst_dataset
參數說明:
gdal_translate工具可以用來在不同格式間轉換柵格數據。同時還可以做一些諸如提取子柵格、重采樣和數據類型轉換等操作。
-ot: type
指定輸出波段的數據類型。
-strict:
對於這轉換過程中出現丟失數據等錯誤直接報錯,不進行忽略處理。之前的參數叫-not_strict,表示對其進行寬大處理,不報錯。
-of format:
選擇輸出格式。默認是GeoTiff(GTiff)。注意,指定的時候用格式簡稱。
-b band:
選擇一個波段來輸出。波段號從1開始編號。多個 -b 參數可以用於選擇輸出某幾個波段或者重新對波段進行排序。從GDAL1.8.0開始,波段可以設置為“mask,1”(或者直接mask)來講輸入數據集的第一個波段作為一個mask波段來使用。
-mask band:
(從GDAL1.8.0開始)(GDAL >= 1.8.0)選擇一個輸入波段來作為創建輸出數據的掩碼波段。波段數是從1開始,band可以設置為none,用來避免復制整個輸入數據集作為掩碼,否則在默認情況下(“auto”),除非掩碼是一個alpha通道,或者使用參數-b mask來進行輸出,參數band也可以設置為“mask,1”(或者直接mask)來講輸入數據集的第一個波段作為一個mask波段來使用。
-expand gray|rgb|rgba:
(從GDAL1.6.0開始)將帶有顏色表信息的單波段文件展開為RGB三波段文件或者RGBA四波段文件。對於輸出格式為JPEG,JPEG2000,MrSID,ECW等不支持顏色表的數據來說很有用。灰度值(從GDAL1.7.0開始)也可以使用顏色表展開為一個數據集,但輸出文件中僅僅包含灰度級別的一個索引。
-outsize xsize[%] ysize[%]:
設置輸出文件的大小。大小以象元為單位,除非用“%”來標記,這時,表示的是輸出為輸入圖層大小的百分比。
-scale [src_min src_max [dst_mindst_max]]:
重新組織輸入象元的值。將它們從src_min~src_max范圍內縮放到dst_min ~ dst_max范圍內。如果省略,輸出范圍將為0~255。輸入范圍將由源數據自動計算。
-unscale:
大概意思是,不對波段中的數據進行縮放轉換,在使用-ot設置輸出文件類型時這個參數往往是很有用的。(這個參數的英文有點繞口,不好翻譯,有知道的同學麻煩告訴我一下)。
-srcwin xoff yoff xsize ysize:
選擇一個取值窗口,通過該窗口在原圖像中的行列位置來拷貝數值。
-projwin ulx uly lrx lry:
選擇一個取值窗口,通過該窗口在原圖像中地理坐標范圍來拷貝數據(類似srcwin)。參數中的四個值,使用的投影坐標。
-a_srs srs_def:
給輸出文件投影強制指定坐標系。srs_def可以是任何常用的GDAL/OGR格式的投影信息,如:WKT、Proj4、EPSG:n 或者一個包含着wkt的文件的文件名。
-a_ullr ulx uly lrx lry:
強制指定輸出文件的空間轉換邊界范圍(圖像的四至范圍)。而將原圖像的四至范圍忽略掉。
-a_nodata value:
指定一個無意義值到輸出波段。從GDAl1.8.0開始,可以設置為none來使用原文件中的nodata值作為輸出文件的nodata值。
-mo "META-TAG=VALUE":
如果可以,給輸出數據設置一個元數據的鍵和其對應的值。
-co "NAME=VALUE":
通過一個創建參數來指定輸出格式特殊創建要求。多個-co參數可以組合起來使用。創建參數可以參考各個數據格式本身說明。
-gcp pixel line easting northingelevation:
添加指定地面控制點到輸出數據集。這個選項可以被多次使用,以提供一系列的地面控制點GCPs 。GCP格式為:列號 行號 橫坐標 縱坐標 高程值。
-q:
安靜模式,不輸出進度信息以及其他非錯誤信息。
-sds:
拷貝文件中所有子數據集到各自的輸出文件中。通常這個參數用在HDF或者OGDI這樣有子數據集的格式中。
-stats:
強制計算(重新計算)數據的統計信息。自GDAL1.8.0開始支持該參數。
src_dataset:
輸入數據集名稱,可以是文件名,或者是一個多數據集文件中的一個子數據集的URL地址(比如HDF數據集中的一個子數據集)。
dst_dataset:
輸出文件名。
舉例:
將utm.tif轉換為一個以分塊存儲的GeoTiff文件。
gdal_translate -of GTiff-co"TILED=YES" utm.tif utm_tiled.tif
創建一個JPEG壓縮的Tiff圖像,同時使用內部掩碼從一個RGBA數據集中。
gdal_translate rgba.tifwithmask.tif -b 1 -b2 -b 3 -mask 4 -co COMPRESS=JPEG -co PHOTOMETRIC=YCBCR--configGDAL_TIFF_INTERNAL_MASK YES
創建一個RGBA圖像從一個RGB數據中使用一個掩碼。
gdal_translatewithmask.tif rgba.tif -b 1 -b2 -b 3 -b mask
3. gdaladdo 建立金字塔
用法:
gdaladdo[-r{nearest,average,gauss,cubic,average_mp,average_magphase,mode}]
[-ro] [-clean] [--help-general]filename levels
參數說明:
gdaladdo工具可以用於為大多數支持的格式建立或者重建金字塔。可以使用下面幾種重采樣算法中的一種來進行縮小重采樣操作。
-r{nearest(default),average,gauss,cubic,average_mp,average_magphase,mode}:
指定重采樣方法,分別是最鄰近(默認),均值,高斯,立方卷積等。
-ro:
(從GDAL1.6.0開始有效),以只讀的方式打開數據,來創建外部金字塔(特別對於GeoTIFF來說)。
-clean:
刪除所有的金字塔。(從GDAL1.7.0開始有效)。
filename:
要建立金字塔的文件名。
levels:
要建立略縮圖的層號的列表。 如果使用-clean選項是將被忽略。
模式,(從GDAL1.6.0開始有效)選擇最常用的重采樣方式。average_mp 是不適合使用的, Average_magphase用於復數數據空間的圖像。Nearest 和 average 用於普通的圖像。Nearest 使用最鄰近采樣(簡單采樣),它計算所有的有效值的均值來進行計算。Cubic 采樣(從GDAL1.7.0開始有效)使用一個4x4的近似立方卷積內核。 Gauss 采樣(從GDAL1.6.0開始有效)使用高斯內核計算。這種對於高對比度和圖案邊界比較明顯的圖像效果比較好。一般建議的采樣比值是2,4,8,…,使用3x3重采樣作為高斯采樣的計算窗口。
gdaladdo將遵守正確NODATA_VALUES元組(特殊的數據集元數據),因此,只有一個給定的的RGB三元組(在一個RGB圖像的情況下)作為NODATA值,而不是每個波段有獨立的NODATA值。
選擇一個縮放級別值如2表示略縮圖縮放程度是源圖像每個維上分辨率的1/2。如果文件在所選縮放級別上已經存在略縮圖,那么這個縮放級別上的縮略圖將被重新計算並覆蓋寫入。
一些格式根本不支持金字塔。所以許多格式在文件以外以擴展名.ovr存儲金字塔,TIFF就是如此。GeoTIFF格式直接把金字塔存儲到原有的文件中。除非使用-ro標記來指定。在TIFF中創建金字塔可以通過用COMPRESS_OVERVIEW配置參數進行壓縮。所有GeoTIFF支持的壓縮方法,可以在這里獲得(如:--config COMPRESS_OVERVIEWDEFLATE)。
大多數驅動也支持一個備用的略縮圖格式(使用的是Erdas圖像格式)。要使用這個備用格式使用USE_RRD=YES 來設置參數。這樣做會把GDAL程序創建的金字塔放到一個輔助的.aux文件中使得可以該金字塔可以直接在Erdas中使用或者也可以在ArcGIS中使用。關於如何使用GDAL創建Erdas格式的金字塔,請參考我的博文:http://blog.csdn.net/liminlu0314/article/details/6127755。
舉例:
在所指定的TIFF文件內部創建金字塔:
gdaladdo -r average abc.tif 2 4 8 16
從一個ERDAS.IMG文件中創建一個外部的壓縮的金字塔文件:
gdaladdo --config COMPRESS_OVERVIEWDEFLATEerdas.img 2 4 8 16
為給定JPEG文件創建一個Erdas Imagine 格式金字塔:
gdaladdo --config USE_RRD YES airphoto.jpg39 27 81