gdal工具(一)矢量柵格化工具 gdal_rasterize

gdal工具(一)矢量柵格化工具 gdal_rasterize

gdal_rasterize 可執行程序

  gdal_rasterize 是gdal提供的矢量柵格化工具,它能夠用於將矢量文件(包括點、線、面等矢量圖形)轉換爲柵格影像文件。支持的矢量文件包括shapefile、gml等。默認輸出爲Float64位的柵格影像。

用法

gdal_rasterize [-b band]* [-i] [-at]
{[-burn value]* | [-a attribute_name] | [-3d]} [-add]
[-l layername]* [-where expression] [-sql select_statement]
[-dialect dialect] [-of format] [-a_srs srs_def]
[-co "NAME=VALUE"]* [-a_nodata value] [-init value]*
[-te xmin ymin xmax ymax] [-tr xres yres] [-tap] [-ts width height]
[-ot {Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/
     CInt16/CInt32/CFloat32/CFloat64}] [-q]
<src_datasource> <dst_filename>

參數

  • -b :要寫入值的波段。多個-b參數可用於寫入成一個波段列表。默認情況下是寫入到波段1。當創建新柵格數據該參數不使用。
  • -i: 反向柵格化。將固定的值或者與第一個特徵圖形相關值寫入到影像中指定的多邊形之外的部分。
  • -at: 啓用all_touch柵格化選項,這樣被線條或多邊形接觸的所有像素都將被更新,而不僅僅是線條呈現路徑上的像素,或者其中心點位於多邊形內的像素。默認爲禁用正常呈現規則。
  • -burn : 爲所有對象寫入到一個波段的數值。可以提供多個-burn選項,每一個波段寫入一個值。
  • -a <attribute_name>:指定特徵圖形中一個屬性域(值)用來作爲寫入的值。這個值會被寫入到所有輸出的波段。
  • -3d:將矢量數據中的Z座標值設置爲柵格圖像的像元值。
  • -add: 增加新的數值到已有的柵格影像中,而不是寫入新值。適用於熱度圖。
  • -l : 指示將用於輸入特性的來自數據源的圖層。可以多次指定,但必須指定至少一個圖層名稱或-sql選項。
  • -where : 一個可選的SQL,其中樣式查詢表達式用於選擇要從輸入層寫入的特性。
  • -sql <select_statement>: 針對數據源計算的SQL語句,以生成要寫入的特性的虛擬層。
  • -dialect : SQL方言。在某些情況下,可以通過傳遞OGRSQL來使用(未經優化的)OGRSQL,而不是RDBMS的原生SQL。“SQLITE”方言也可以用於任何數據源。
  • -of : 選擇輸出格式。從GDAL 2.3開始,如果沒有指定,則從擴展名猜測格式(以前是GTiff)。使用短格式名稱。
  • -a_nodata : 爲輸出波段指定nodata值。
  • -init : 用這些值重新初始化輸出圖像帶。但是,輸出文件中沒有將其標記爲nodata值。如果只給出一個值,則在所有波段使用相同的值。
  • -a_srs <srs_def>: 覆蓋輸出文件的投影。如果沒有指定,將使用輸入矢量文件的投影(如果可用)。使用此選項時,不會將輸入矢量的SRS的特徵重新投影到輸出柵格的指定SRS,因此只使用此選項來糾正無效的源SRS。<srs_def>可以是任何常見的GDAL/OGR表單,包括完整的WKT、PROJ.4、EPSG:n或包含WKT的文件。當矢量文件沒有或者投影不正確時可用。
  • -to NAME=VALUE:設置一個適合傳遞給GDALCreateGenImgProjTransformer2()的轉換選項(放射變換數組)。當要將地理座標轉換爲目標柵格像元座標時用到。例如,這可以用來指定RPC相關的轉換選項。
  • -co <NAME=VALUE>: 格式控制參數,該參數可以控制輸出格式的選項,比如是否壓縮等等。許多格式都有一個或多個可選創建選項,可用於控制所創建文件的詳細信息。例如,GeoTIFF驅動程序支持創建選項來控制壓縮(COMPRESSED=YES),以及是否應該平鋪文件。可用的創建選項因格式驅動程序而異,一些簡單的格式根本沒有創建選項。格式支持的選項列表可以使用-formats命令行選項列出,但是格式文檔是關於驅動程序創建選項的最終信息來源。有關每種格式的合法創建選項,可參閱柵格影像驅動器格式化特定文檔。
  • -te : 設置輸出圖像地理座標四至範圍。這些值必須用地理單位表示。如果沒有指定,輸出文件的範圍將是矢量圖層的範圍。
  • -tr : 設置圖像分辨率。這些值必須用地理單位表示。 兩者都必須是正值。不能同時與-ts使用。
  • -tap: 設置像元對齊。(目標對齊的像素)將輸出文件的範圍座標對齊到-tr的值,以便對齊的範圍包含最小範圍。
  • -ts : 設置以像素和行爲單位的輸出文件大小。注意-ts不能與-tr一起使用
  • -ot :強制輸出波段爲指定的數據類型。若無該參數,則默認輸出數據類型爲Float64
  • -q:設置安靜狀態,該狀態下不輸出其他非錯誤信息和進度信息。
  • <src_datasource>:任何OGR都支持可讀數據源。
  • <dst_filename>:GDAL支持輸出文件。必須支持更新模式訪問。該文件將被創建(如果已經存在,則被覆蓋):option:-of、-a_nodata、-init、-a_srs、-co、-te、-tr、-tap、-ts或-ot選項。

示例:

  1. 下面代碼將會將mask.shp文件中的所有多邊形寫入到RGB TIFF文件work.tif中,並標記爲紅色(RGB = 255,0,0)。
    gdal_rasterize -b 1 -b 2 -b 3 -burn 255 -burn 0 -burn 0 -l mask mask.shp work.tif
  1. 下面代碼將通過從footprints.shp矢量文件中ROOF_H屬性中提取頂部高度,把所有類別爲A的建築物寫入到輸出的高程文件city_dem.tif中。
    gdal_rasterize -a ROOF_H -where 'class="A"' -l footprints footprints.shp city_dem.tif
  1. 下面的代碼將把footprints.shp文件中的所有多邊形寫入到一個新的1000x1000的顏色設置爲紅色的rgb TIFF影像。注意-b選項沒有使用;-burn選項的順序決定了輸出柵格的波段。
    gdal_rasterize -burn 255 -burn 0 -burn 0 -ot Byte -ts 1000 1000 -l footprints footprints.shp mask.tif
  1. 下面的代碼將Sentinel2 L1C級產品中的雲掩膜數據(gml文件)轉換成與可見光影像四至範圍、分辨率(10m)和投影方式相同的雲掩膜柵格影像。該柵格影像的像元值100表示雲,無效值爲0。注意,-te選項中的四個值並不是圖像的像素座標範圍,而是地理座標範圍。
    gdal_rasterize -burn 100 -tr 10 10 -te 499980. 4890240. 609780. 5000040. -a_nodata 0 -of GTiff -ot Byte -q MSK_CLOUDS_B00.gml cloud_mask_byte_3.tif

gml矢量柵格化會生成一個後綴名爲gfs的文件,該文件記錄了投影座標系統、四至範圍等信息。但有時原本帶有投影信息的gml經過柵格化後得到的圖像並沒有投影信息,這時候可以將對應的gfs刪掉,重新運行一次試試。如果gml文件中有投影信息,而柵格化後的影像沒有投影信息,有可能是gml文件被xml.dom等xml解析器佔用了,解決的方法是及時關閉被解析的gml文件,刪掉gfs文件。
gfs文件內容示例

官方文檔鏈接:
  https://gdal.org/programs/gdal_rasterize.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章