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格式,⽽且输出格式必须⽀持颜⾊表。
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 pudo-colored.tif
% more < palette.vrt
<VRTDatat rasterXSize="226" rasterYSize="271">
<VRTRasterBand dataType="Byte" band="1">
牛耳学院<ColorInterp>Palette</ColorInterp>
<ColorTable>
<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>
</VRTDatat>
2. pct2rgb.py 转换8位图为24位RGB图
⽤法:
pct2rgb.py [-of format] [-b band] [-rgba] source_file dest_file
参数说明:
该⼯具是将⼀个带有颜⾊表的图像转为RGB图像。
-of format:
输出⽂件格式,默认为GeoTiff格式。
-b band:
指定要转换的波段序号,默认是第⼀个波段。
yakult-rgba:
⽣成RGBA⽂件(默认是⽣成RGB⽂件)。
source_file:
输⼊⽂件。
dest_file:
输出⽂件。
3. gdal_merge.py 镶嵌图像
⽤法:
gdal_merge.py [-o out_filename] [-of out_format] [-co NAME=VALUE]*
[-ps pixelsize_x pixelsize_y] [-tap] [-parate] [-v] [-pct]
[-ul_lr ulx uly lrx lry] [-n nodata_value] [-init "value []"]
[-ot datatype] [-createonly] input_files
参数说明:
该⼯具会⾃动镶嵌指定的图像。所有的图像必须具有相同的坐标系统和相同的波段数⽬;输⼊图像可能是有重叠区或者不同的分辨率。在重叠区部分最后的图像将会覆盖之前的图像值。
-o out_filename:
输出⽂件,如果不存在将会创建⼀个新图像。如果该值不指定,将会创建⼀个叫out.tif的图像。
-of format:
输出⽂件格式,默认为GeoTiff格式。
-co NAME=VALUE:
创建图像选项,具体参考具体图像格式说明。
-ot datatype:
指定输出数据类型,使⽤类型名称,如Byte,Int16等。
-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:
输出⽂件范围,如果不指定,将会以所有的输⼊图像的范围并集为输出⽂件范围。
-v:
⽣成详细的镶嵌操作信息,当执⾏结束的时候。
-parate:
Place each input file into a parate stacked band.
-pct:
studygroup
提取颜⾊表从第⼀个输⼊图像,并在结果图像中使⽤,按照这种⽅式镶嵌图像的话,后⾯的图像的颜⾊表都会被忽略,以第⼀个为准。
-n nodata_value:
指定nodata值,在镶嵌操作的时候会忽略该值。
-init "value(s)":
指定输出⽂件的初始值,不会在输出⽂件中指定nodata值,如果只指定了⼀个值,那么所有的波段都会使⽤该值来作为初始值。
-createonly:
输出⽂件已经创建好了。但是输⼊⽂件数据没有写⼊。
举例:
创建⼀个图像,将所有的波段都指定为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切⽚
⽤法:
gdal2tiles.py [-title "Title"] [-publishurl
[-nogooglemaps] [-noopenlayers] [-nokml]
[-googlemapskey KEY] [-forcekml] [-v]
input_file [output_dir]
参数说明:
该⼯具按照OSGeo的切⽚地图服务说明书来⽣成⼩的切⽚数据和元数据。基于Google地图和OpenLayers简单的⽹页地图浏览。
GDAL2Tiles ⼯具创建Google Earth (KML SuperOverlay)必需的元数据⽂件,按照EPSG:4326投影。同时会创建世界⽂件(World file),但是页可以创建其他的投影的⽂件。学习英语的网站
-title "Title":
⽣成元数据,⽹页视图和KML⽂件。
-publishurl :
添加发布的⽹页地址,会将结果上传到该地址。
-nogooglemaps:
不要⽣成基于Google地图的html页⾯。
-noopenlayers:
不要⽣成基于OpenLayers的html页⾯。
-nokml:
不要⽣成Google Earth的kml⽂件。
Do not generate KML files for Google Earth.
-googlemapskey KEY:
指定⽣成区域的范围,使⽤Google Maps的API。参考().
-forcekml
⽣成kml⽂件,输⼊图像必需是EPSG:4326的投影!
-v
处理结束后输出详细信息。
5. gdal_retile.py
⽤法:
vnd
gdal_retile.py [-v] [-co NAME=VALUE]* [-of out_format] [-ps pixelWidth pixelHeight]
mary kay[-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
[-uDirForEachRow]
-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:
brooke banner输出相信的信息。
-pyramidOnly:
不建⽴⽡⽚⽂件,只建⽴⾦字塔。
-r algorithm:
重采样⽅式,默认为最邻近采样。
-s_srs srs_def:
源⽂件的空间参考。坐标系统可以是任何OGRSpatialReference.SetFro函数⽀持的坐标系统,包括E
PSG PCS和GCSes,PROJ.4声明或者其他的包含WKT字符串的prf⽂件。如果不知道,将会从指定输⼊图像中读取。同时该空间参考⽤来创建⽣成的⽡⽚的⽮量⽂件。
-tileIndex tileIndexName:
包含结果⽡⽚索引的shp名称。misread
-tileIndexField tileIndexFieldName:
包含⽡⽚名称的属性表字段名称。
-csv csvFileName:
指定包含⽡⽚地理信息的csv⽂件名称。该⽂件包含五列,分别是:(⽡⽚名称,最⼩x,最⼤x,最⼩y,最
⼤y)tilename,minx,maxx,miny,maxy。
-csvDelim column delimiter:
CSV⽂件的列之间分隔符,默认使⽤分号风格。
-uDirForEachRow:
通常情况下,输出的⽡⽚⽂件存放在-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
指定输出的波段序号,默认为第⼀个波段。
prevented-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: