命令行打開進程,GDAL源碼剖析(五)之Python命令行程序

 2023-10-18 阅读 22 评论 0

摘要:一、?GDAL?Python工具 本文主要介紹的是GDAL工具集中的Python腳本命令,需要的環境必須是有Python環境和GDAL的Python版本。這是必須的,否則這些工具都不能用。對于已經安裝ArcGIS的同學來說,Python都已經安裝好了,可以直接下載GDAL的Python版本&#

一、?GDAL?Python工具

本文主要介紹的是GDAL工具集中的Python腳本命令,需要的環境必須是有Python環境和GDAL的Python版本。這是必須的,否則這些工具都不能用。對于已經安裝ArcGIS的同學來說,Python都已經安裝好了,可以直接下載GDAL的Python版本,然后就可以使用下面這些工具。

1.?rgb2pct.py?轉換24位RGB圖為8位圖

用法:

rgb2pct.py?[-n?colors?|?-pct?palette_file]?[-of?format]?source_file?dest_file

參數說明:

該工具會自動根據指定的RGB圖像計算最合適的假彩色顏色表。然后對結果影像使用該顏色表。簡而言之,就是將RGB彩色圖像轉換為一個單波段的圖像,使用顏色表來表示顏色。

命令行打開進程,-n?colors:

指定生成顏色表的顏色數目,默認是256,其值必須是2到256之間的整數值。

-pct?palette_file:

從調色板文件中提取顏色表而不從圖像中計算。調色板文件必須是GDAL支持的調色板格式。

-of?format:

輸出文件格式,默認為GeoTiff格式,而且輸出格式必須支持顏色表。

gdb where命令,source_file:

輸入的RGB圖像。

dest_file:

輸出的圖像路徑。如果圖像不存在會創建一個。

舉例:

如果希望指定調色板信息,比如簡單的文本格式,如GDAL?VRT格式,在下面的例子中將指定一個使用文本編輯器創建的VRT格式的調色板文件,一共有四個顏色,RGBA值分別是:238/238/238/255,237/237/237/255,36/236/236/255和229/229/229/255。

命令行窗口?%?rgb2pct.py?-pct?palette.vrt?rgb.tif?pseudo-colored.tif

%?more?<?palette.vrt

<VRTDataset?rasterXSize="226"?rasterYSize="271">

??<VRTRasterBand?dataType="Byte"?band="1">

????<ColorInterp>Palette</ColorInterp>

????<ColorTable>

gdal源碼剖析與開發指南pdf。??????<Entry?c1="238"?c2="238"?c3="238"?c4="255"/>

??????<Entry?c1="237"?c2="237"?c3="237"?c4="255"/>

??????<Entry?c1="236"?c2="236"?c3="236"?c4="255"/>

??????<Entry?c1="229"?c2="229"?c3="229"?c4="255"/>

????</ColorTable>

??</VRTRasterBand>

gdb源碼?</VRTDataset>?

2.?pct2rgb.py?轉換8位圖為24位RGB圖

用法:

pct2rgb.py?[-of?format]?[-b?band]?[-rgba]?source_file?dest_file

參數說明:

該工具是將一個帶有顏色表的圖像轉為RGB圖像。

-of?format:

python gdal庫、輸出文件格式,默認為GeoTiff格式。

-b?band:

指定要轉換的波段序號,默認是第一個波段。

-rgba:

生成RGBA文件(默認是生成RGB文件)。

source_file:

netty源碼剖析。輸入文件。

dest_file:

輸出文件。

3.?gdal_merge.py?鑲嵌圖像

用法:

gdal_merge.py?[-o?out_filename]?[-of?out_format]?[-co?NAME=VALUE]*

??????????????[-ps?pixelsize_x?pixelsize_y]?[-tap]?[-separate]?[-v]?[-pct]

命令行輸入、??????????????[-ul_lr?ulx?uly?lrx?lry]?[-n?nodata_value]?[-init?"value?[value...]"]

??????????????[-ot?datatype]?[-createonly]?input_files

參數說明:

該工具會自動鑲嵌指定的圖像。所有的圖像必須具有相同的坐標系統和相同的波段數目;輸入圖像可能是有重疊區或者不同的分辨率。在重疊區部分最后的圖像將會覆蓋之前的圖像值。

-o?out_filename:

輸出文件,如果不存在將會創建一個新圖像。如果該值不指定,將會創建一個叫out.tif的圖像。

命令行,-of?format:

輸出文件格式,默認為GeoTiff格式。

-co?NAME=VALUE:

創建圖像選項,具體參考具體圖像格式說明。

-ot?datatype:

指定輸出數據類型,使用類型名稱,如Byte,Int16等。

gdb退出命令、-ps?pixelsize_x?pixelsize_y:

輸出圖像的象元大小,如果不指定,將以第一個圖像的分辨率為基準。

-tap:

(GDAL?>=?1.8.0)?(target?aligned?pixels)?align?the?coordinates?of?the?extent?of?the?output?file?to?the?values?of?the?-tr,?such?that?the?aligned?extent?includes?the?minimum?extent.

-ul_lr?ulx?uly?lrx?lry:

輸出文件范圍,如果不指定,將會以所有的輸入圖像的范圍并集為輸出文件范圍。

python安裝gdal包、-v:

生成詳細的鑲嵌操作信息,當執行結束的時候。

-separate:

Place?each?input?file?into?a?separate?stacked?band.

-pct:

提取顏色表從第一個輸入圖像,并在結果圖像中使用,按照這種方式鑲嵌圖像的話,后面的圖像的顏色表都會被忽略,以第一個為準。

stl源碼剖析最新版、-n?nodata_value:

指定nodata值,在鑲嵌操作的時候會忽略該值。

-init?"value(s)":

指定輸出文件的初始值,不會在輸出文件中指定nodata值,如果只指定了一個值,那么所有的波段都會使用該值來作為初始值。

-createonly:

輸出文件已經創建好了。但是輸入文件數據沒有寫入。

linux怎么退出命令行。舉例:

創建一個圖像,將所有的波段都指定為255。

%?gdal_merge.py?-init?255?-o?out.tif?in1.tif?in2.tif

創建一個RGB圖像,并將前兩個波段初始化為0,第三個波段為255。

%?gdal_merge.py?-init?"0?0?255"?-o?out.tif?in1.tif?in2.tif

4.?gdal2tiles.py?生成TMS切片

用法:

python3源碼剖析新版?gdal2tiles.py?[-title?"Title"]?[-publishurl?http://yourserver/dir/]

??????????????[-nogooglemaps]?[-noopenlayers]?[-nokml]

??????????????[-googlemapskey?KEY]?[-forcekml]?[-v]

??????????????input_file?[output_dir]

參數說明:

該工具按照OSGeo的切片地圖服務說明書來生成小的切片數據和元數據。基于Google地圖和OpenLayers簡單的網頁地圖瀏覽。

gdb常用命令?GDAL2Tiles?工具創建Google?Earth?(KML?SuperOverlay)必需的元數據文件,按照EPSG:4326投影。同時會創建世界文件(World?file),但是頁可以創建其他的投影的文件。

-title?"Title":

生成元數據,網頁視圖和KML文件。

-publishurl?http://yourserver/dir/:

添加發布的網頁地址,會將結果上傳到該地址。

-nogooglemaps:

python程序?不要生成基于Google地圖的html頁面。

-noopenlayers:

不要生成基于OpenLayers的html頁面。

-nokml:

不要生成Google?Earth的kml文件。

Do?not?generate?KML?files?for?Google?Earth.

-googlemapskey?KEY:

指定生成區域的范圍,使用Google?Maps的API。參考(http://www.google.com/apis/maps/signup.html).

-forcekml

生成kml文件,輸入圖像必需是EPSG:4326的投影!

-v

處理結束后輸出詳細信息。

5.?gdal_retile.py

用法:

gdal_retile.py?[-v]?[-co?NAME=VALUE]*?[-of?out_format]?[-ps?pixelWidth?pixelHeight]

???????????????[-ot??{Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/

??????????????????????CInt16/CInt32/CFloat32/CFloat64}]'

???????????????[?-tileIndex?tileIndexName?[-tileIndexField?tileIndexFieldName]]

???????????????[?-csv?fileName?[-csvDelim?delimiter]]

???????????????[-s_srs?srs_def]??[-pyramidOnly]

???????????????[-r?{near/bilinear/cubic/cubicspline/lanczos}]

???????????????-levels?numberoflevels

???????????????[-useDirForEachRow]???

???????????????-targetDir?TileDirectory?input_files

參數說明:

該工具對輸入圖像創建分塊。所有的輸入圖像必需具有相同的投影和相同的波段數。可以選擇生成金字塔。會生成輸出瓦片的矢量文件。

-targetDir?directory:

輸出瓦片存放的目錄。金字塔文件會存放在子文件夾中,子文件夾的命名從1開始,數字代表金字塔級別。創建的輸出名稱由源文件名稱和一個序號組成。

-of?format:

輸出文件格式,默認為GeoTiff格式。

-co?NAME=VALUE:

創建選項,具體參考具體的格式說明。

-ot?datatype:

指定輸出圖像的數據類型,使用類型名稱,如Byte,Int16,UInt16等。

-ps?pixelsize_x?pixelsize_y:

輸出文件大小,如果不指定,默認是256*256。

-levels?numberOfLevels:

創建的金字塔級數。

-v:

輸出相信的信息。

-pyramidOnly:

不建立瓦片文件,只建立金字塔。

-r?algorithm:

重采樣方式,默認為最鄰近采樣。

-s_srs?srs_def:

源文件的空間參考。坐標系統可以是任何OGRSpatialReference.SetFro函數支持的坐標系統,包括EPSG?PCS和GCSes,PROJ.4聲明或者其他的包含WKT字符串的prf文件。如果不知道,將會從指定輸入圖像中讀取。同時該空間參考用來創建生成的瓦片的矢量文件。

-tileIndex?tileIndexName:

包含結果瓦片索引的shp名稱。

-tileIndexField?tileIndexFieldName:

包含瓦片名稱的屬性表字段名稱。

-csv?csvFileName:

指定包含瓦片地理信息的csv文件名稱。該文件包含五列,分別是:(瓦片名稱,最小x,最大x,最小y,最大y)tilename,minx,maxx,miny,maxy。

-csvDelim?column?delimiter:

CSV文件的列之間分隔符,默認使用分號風格。

-useDirForEachRow:

通常情況下,輸出的瓦片文件存放在-targetDir指定的文件夾中。對于大圖像,在有些文件系統中對于文件夾中的文件數過多可能會有一些問題,從而導致gdal_retile程序不能正常執行完畢。使用該參數可以創建不同的目錄結構。原始的瓦片文件存放在名字為0的子文件夾中,金字塔依次存放在子文件1,2,3...中,數字代表金字塔的級別。

6.?gdal_proximity.py

用法:

gdal_proximity.py?srcfile?dstfile?[-srcband?n]?[-dstband?n]?

??????????????????[-of?format]?[-co?name=value]*

??????????????????[-ot?Byte/Int16/Int32/Float32/etc]

??????????????????[-values?n,n,n]?[-distunits?PIXEL/GEO]

??????????????????[-maxdist?n]?[-nodata?n]?[-fixed-buf-val?n]

參數說明:

gdal_proximity.py腳本用來生成柵格圖像的距離圖,即計算中心點的象元與臨近的象元之間的距離作為結果象元值。

srcfile

輸入的柵格圖像。=

dstfile

輸出影像,可以是一個已經存在的文件,大小和原始圖像一致,如果不存在,將會創建一個新圖像。

-srcband?n

指定用來計算的波段序號,默認為第一個波段。

-dstband?n

指定輸出的波段序號,默認為第一個波段。

-of?format:

輸出圖像格式,默認為GeoTiff格式,使用短格式名稱。

-co?"NAME=VALUE":

創建圖像選項,具體參考對應格式的說明。

-ot?datatype:

輸出文件的數據類型,使用短名稱,如Byte,Int16。

-values?n,n,n:

A?list?of?target?pixel?values?in?the?source?image?to?be?considered?target?pixels.?If?not?specified,?all?non-zero?pixels?will?be?considered?target?pixels.?指定結果象元值在原始影像如果沒有指定,所有的非0象元將被用來計算結果圖。

-distunits?PIXEL/GEO:

指定距離的單位,默認為像素單位,可以為像素單位或者地理坐標單位。

-maxdist?n:

最大距離值,所有超過該值的象元具體將被設置為nodata值或者65535。距離使用像素單位時,如果使用GEO參數的話,不會執行該操作。

-nodata?n:

指定nodata值。

-fixed-buf-val?n:

Specify?a?value?to?be?applied?to?all?pixels?that?are?within?the?-maxdist?of?target?pixels?(including?the?target?pixels)?instead?of?a?distance?value.

7.?gdal_polygonize.py?柵格矢量化工具

用法:

gdalinfo?[--help-general]?[-mm]?[-stats]?[-hist]?[-nogcp]?[-nomd]

?????????[-noct]?[-nofl]?[-checksum]?[-proj4]?[-mdd?domain]*

?[-sd?subdataset]?datasetname

參數說明:

gdalinfo程序輸出gdal支持的柵格格式的一系列信息。

-mm

強制計算柵格每個波段的最大最小值。

-stats

讀取和現實圖像統計信息,如果指定該參數,將強制計算圖像的統計信息,如各個波段的最大值、最小值、均值、標準差等。

舉例:

Generate?polygons?from?raster.

8.?gdal_sieve.py?小斑去除濾波工具

用法:

gdalinfo?[--help-general]?[-mm]?[-stats]?[-hist]?[-nogcp]?[-nomd]

?????????[-noct]?[-nofl]?[-checksum]?[-proj4]?[-mdd?domain]*

?[-sd?subdataset]?datasetname

參數說明:

gdalinfo程序輸出gdal支持的柵格格式的一系列信息。

-mm

強制計算柵格每個波段的最大最小值。

-stats

讀取和現實圖像統計信息,如果指定該參數,將強制計算圖像的統計信息,如各個波段的最大值、最小值、均值、標準差等。

舉例:

Raster?Sieve?filter.

9.?gdal_fillnodata.py?填充NoData區域

用法:

gdalinfo?[--help-general]?[-mm]?[-stats]?[-hist]?[-nogcp]?[-nomd]

?????????[-noct]?[-nofl]?[-checksum]?[-proj4]?[-mdd?domain]*

?[-sd?subdataset]?datasetname

參數說明:

gdalinfo程序輸出gdal支持的柵格格式的一系列信息。

-mm

強制計算柵格每個波段的最大最小值。

-stats

讀取和現實圖像統計信息,如果指定該參數,將強制計算圖像的統計信息,如各個波段的最大值、最小值、均值、標準差等。

二、?其他說明

關于GDAL的Python編譯、安裝和使用方法,網上有很多的博文。由于Python是不用編譯的腳本語言,所以不用編譯就可以運行,語法簡單,受到很多人的喜愛,我也是Python的愛好者。尤其是對于一些簡單的功能,完全沒有必要寫一個C或者C++以及其他的語言程序,還需要編譯后才能使用,總覺得不是那么的方便。如果用Python,寫完后直接可以運行。

關于Python版本的編譯和安裝,參考此系列的博文三:http://blog.csdn.net/liminlu0314/article/details/6945452;此外,對于Python版本GDAL的使用,主要參考李林(lilin)寫的《GDAL庫學習筆記》系列文章(想當年我就是看這七篇文章來學習GDAL的)。鏈接地址為:http://wiki.woodpecker.org.cn/moin/lilin。

轉載于:https://www.cnblogs.com/stardasha/p/3389171.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/147788.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息