GDAL源码剖析(四)之命令行程序说明二


接博客GDAL源码剖析(四)之命令行程序说明一http://blog.csdn.net/liminlu0314/article/details/6978589

其中有个nearblack,gdalbuildvrt工具,没有做说明,以后加上,里面可能有很多不足,望大家批评指正,谢谢。


1.gdalwarp图像纠正

用法:

gdalwarp[--help-general][--formats]

[-s_srssrs_def][-t_srssrs_def][-to"NAME=VALUE"]

[-ordern|-tps|-rpc|-geoloc][-eterr_threshold]

[-refine_gcpstolerance[minimum_gcps]]

[-texminyminxmaxymax][-trxresyres][-tap][-tswidthheight]

[-wo"NAME=VALUE"][-otByte/Int16/...][-wtByte/Int16]

[-srcnodata"value[value...]"][-dstnodata"value[value...]"]-dstalpha

[-rresampling_method][-wmmemory_in_mb][-multi][-q]

[-cutlinedatasource][-cllayer][-cwhereexpression]

[-csqlstatement][-cblenddist_in_pixels][-crop_to_cutline]

[-offormat][-co"NAME=VALUE"]*[-overwrite]

srcfile*dstfile

参数说明:

gdalwarp工具是一个图像镶嵌、重投影、和纠正的工具。程序可以重投影到任何支持的投影。

-s_srssrsdef:

设置原始空间参考,坐标系统是可以使用函数OGRSpatialReference.SetFromUserInput()调用的就行,包括EPSGPCSPROJ4或者后缀名为.prfwkt文本文件。

-t_srssrs_def:

设置目标空间参考,坐标系统是可以使用函数OGRSpatialReference.SetFromUserInput()调用的就行,包括EPSGPCSPROJ4或者后缀名为.prfwkt文本文件。

-toNAME=VALUE:

设置转换参数选项,具体选项参考函数GDALCreateGenImgProjTransformer2()支持的选项。

-ordern:

多项式纠正次数(13),默认的多项式次数根据输入的GCP点个数自动计算。

-tps:

强制使用TPSthinplatespline)纠正方法来纠正图像。

-rpc:

强制使用RPC参数纠正。

-geoloc:

强制使用Geolocation数组。(这个没用过,不太清楚)

-eterr_threshold:

指定变换的近似误差阈值,默认为0.125个像元大小(使用像元为单位)。

-refine_gcpstoleranceminimum_gcps:

(GDAL>=1.9.0)refinestheGCPsbyautomaticallyeliminatingoutliers.Outlierswillbeeliminateduntilminimum_gcpsareleftorwhennooutlierscanbedetected.ThetoleranceispassedtoadjustwhenaGCPwillbeeliminated.NotthatGCPrefinementonlyworkswithpolynomialinterpolation.Thetoleranceisinpixelunitsifnoprojectionisavailable,otherwiseitisinSRSunits.Ifminimum_gcpsisnotprovided,theminimumGCPsaccordingtothepolynomialmodelisused.(这个参数不太清楚,没用过)

-texminyminxmaxymax:

设置输出文件的地理范围(在目标空间参考中)。

-trxresyres:

设置输出图像的分辨率。

-tap:

(GDAL>=1.8.0)(targetalignedpixels)alignthecoordinatesoftheextentoftheoutputfiletothevaluesofthe-tr,suchthatthealignedextentincludestheminimumextent.

-tswidthheight:

设置输出文件的宽高。如果宽或者高有一个为0那么将自动计算一个值,注意-ts-tr不能同时使用。

-wo"NAME=VALUE":

设置纠正选项。具体参考GDALWarpOptions::papszWarpOptions的帮助文档。

-ottype:

指定输出波段的数据类型。

-wttype:

计算的数据类型。

-rresampling_method:

重采样方式,主要有下面几种方式:

near:

最邻近采样方法(默认值,算法较快,但是质量较差)。

bilinear:

双线性内插采样。

cubic:

立方卷积采样。

cubicspline:

立方样条采样。

lanczos:

Lanczos窗口辛克采样。

-srcnodatavalue[value...]:

设置输入波段的Nodata值,可以为不同的波段指定不同的值。。如果有多个值,就需要把他们用双引号括起来,以保持在命令参数中作为单一参数输入。掩膜值不会在内插中处理。

-dstnodatavalue[value...]:

设置输出波段的Nodata值。

-dstalpha:

创建一个Alpha波段在输出文件中。

-wmmemory_in_mb:

设置纠正API使用的内存大小,以MB为单位。

-multi:

是否使用多线程纠正图像,多线程用来分块处理,同时在读取和写入图像均使用多线程技术。

-q:

不在控制台输出提示信息。

-offormat:

输出文件格式,默认为GeoTiff

-co"NAME=VALUE":

指定创建图像选项,具体参考不同的格式说明。

-cutlinedatasource:

使用使用OGR支持的矢量数据进行裁切图像。

-cllayername:

指定裁切矢量的图层名称。

-cwhereexpression:

从裁切矢量中根据属性表查询指定的要素来裁切图像。

-csqlquery:

使用SQL语句来从裁切矢量的属性表中查询要素来裁切图像。

-cblenddistance:

Setablenddistancetousetoblendovercutlines(inpixels).(这个参数不太清楚,没用过)

-crop_to_cutline:

(GDAL>=1.8.0)使用矢量边界的外接矩形大小作为输出影像的范围。

-overwrite:

(GDAL>=1.8.0)如果结果数据存在,那么覆盖结果数据。

srcfile:

输入数据文件名(可以为多个,使用空格隔开)。

dstfile:

输出数据文件名。

如果输出文件已经存在,那么镶嵌到这个文件是可以的。但是数据的空间范围等信息不会被修改,如果要修改为新的数据的空间信息,那么需要使用-overwrite选项来覆盖原文件。

举例:

在此不再列举例子,后面会对gdalwarp做一个比较详细的介绍。

2.gdaltindex创建一个栅格文件块索引Shp文件

用法:

gdaltindex[-tileindexfield_name][-write_absolute_path][-skip_different_projection]index_file[gdal_file]*

参数说明:

这个程序创建一个shape文件,里面记录每一个输入的栅格文件的文件路径,以及栅格数据的落图文件。这个输出文件主要是为MapServer来使用的。应该是创建栅格图像的四至范围矢量文件。

·如果shape文件不存在会自己创建,如果存在,将被追加到存在的文件中。

·默认的索引字段为location

·默认填写的是栅格文件名,如果指定了-write_absolute_path选项,那么写入的是栅格文件的绝对路径。

·如果指定-skip_different_projection参数,只用相同的投影的栅格文件会被插入到tileindex文件中。

·生成一个简单的矩形多边形,其坐标系统和栅格的坐标系统相同。

举例:

gdaltindexdoq_index.shpdoq/*.tif

3.gdalbuildvrt创建VRT数据

用法:

gdalbuildvrt[-tileindexfield_name][-resolution{highest|lowest|average|user}]

[-trxresyres][-tap][-separate][-allow_projection_difference][-q]

[-texminyminxmaxymax][-addalpha][-hidenodata]

[-srcnodata"value[value...]"][-vrtnodata"value[value...]"]

[-input_file_listmy_liste.txt][-overwrite]output.vrt[gdalfile]*

参数说明:

从指定的输入栅格文件中创建一个VRT数据。从gdal1.6开始支持。

该工具没有进行说明。

4.gdal_contourDEM生成等高线

用法:

gdal_contour[-b<band>][-a<attribute_name>][-3d][-inodata]

[-snodatan][-f<formatname>][-i<interval>]

[-off<offset>][-fl<level><level>...]

[-nln<outlayername>]

<src_filename><dst_filename>

参数说明:

使用DEM生成等高线矢量数据。

-bband:

指定要处理的波段序号,默认为第一个波段。

-aname:

指定一个属性表的字段名称用于保存高程值,如果不指定则不会在属性表中填写。

-3d:

强制使用3D定点而不是2D,即高程值将被写入等高线矢量中。

-inodata:

忽略任何nodata值。

-snodatavalue:

设置输入文件的nodata值。

-fformat:

创建输出矢量的格式,默认为ESRIshape文件。

-iinterval:

等高线间距。

-offoffset:

设置高程相对系数。

-fllevel:

Nameoneormore"fixedlevels"toextract.

-nlnoutlayername:

指定输出矢量文件的图层名称,默认为“contour”

举例:

使用dem.tif生成一个等高距为10米的等高线矢量文件contour.shp。

gdal_contour-aelevdem.tifcontour.shp-i10.0

5.gdaldemDEM算法

用法:

-TogenerateashadedreliefmapfromanyGDAL-supportedelevationraster:

gdaldemhillshadeinput_demoutput_hillshade

[-zZFactor(default=1)][-sscale*(default=1)]"

[-azAzimuth(default=315)][-altAltitude(default=45)]

[-algZevenbergenThorne]

[-compute_edges][-bBand(default=1)][-offormat][-co"NAME=VALUE"]*[-q]

-TogenerateaslopemapfromanyGDAL-supportedelevationraster:

gdaldemslopeinput_demoutput_slope_map"

[-pusepercentslope(default=degrees)][-sscale*(default=1)]

[-algZevenbergenThorne]

[-compute_edges][-bBand(default=1)][-offormat][-co"NAME=VALUE"]*[-q]

-TogenerateanaspectmapfromanyGDAL-supportedelevationraster

Outputsa32-bitfloatrasterwithpixelvaluesfrom0-360indicatingazimuth:

gdaldemaspectinput_demoutput_aspect_map"

[-trigonometric][-zero_for_flat]

[-algZevenbergenThorne]

[-compute_edges][-bBand(default=1)][-offormat][-co"NAME=VALUE"]*[-q]

-TogenerateacolorreliefmapfromanyGDAL-supportedelevationraster

gdaldemcolor-reliefinput_demcolor_text_fileoutput_color_relief_map

[-alpha][-exact_color_entry|-nearest_color_entry]

[-bBand(default=1)][-offormat][-co"NAME=VALUE"]*[-q]

wherecolor_text_filecontainslinesoftheformat"elevation_valueredgreenblue"

-TogenerateaTerrainRuggednessIndex(TRI)mapfromanyGDAL-supportedelevationraster:

gdaldemTRIinput_demoutput_TRI_map

[-compute_edges][-bBand(default=1)][-offormat][-q]

-TogenerateaTopographicPositionIndex(TPI)mapfromanyGDAL-supportedelevationraster:

gdaldemTPIinput_demoutput_TPI_map

[-compute_edges][-bBand(default=1)][-offormat][-q]

-TogeneratearoughnessmapfromanyGDAL-supportedelevationraster:

gdaldemroughnessinput_demoutput_roughness_map

[-compute_edges][-bBand(default=1)][-offormat][-q]

参数说明:

该工具提供了7个模块。分别如下:

hillshade(山地阴影)

用来生成山地阴影图像。

slope

用来生成坡度图像。

aspect

用来生成坡向图像。

color-relief

用来生成一个颜色渲染地图。

TRI

用来生成地表耐用指数(TRI)图像。

TPI

用来生成地形位置指数(TPI)图像。

roughness

用来生成粗糙度图像。

下面这些选项是通用选项:

input_dem:

输入DEM数据。

output_xxx_map:

输出处理的结果数据。

-offormat:

输出文件格式,默认为GeoTiff

-compute_edges:

(GDAL>=1.8.0)处理栅格边界数据和nodata附近的数据。

-algZevenbergenThorne:

(GDAL>=1.8.0)使用Zevenbergen&Thorne规则代替Horn规则计算坡度坡向。研究表明Zevenbergen&Thorne用于平缓的地形,而Horn在处理比较粗糙的地形比较好。

-bband:

选择要处理的波段序号,默认为1.

-co"NAME=VALUE":

创建输出文件选项,根据创建的文件格式不同而不同。

-q:

安静模式,不输出进度信息。

在所有的算法中,除了颜色渲染,其他的算法全部是基于一个3x3的窗口运算,如果在这个窗口中有一个值为nodata,那么结果值就是nodata,在GDAL1.8之后,如果指定了-compute_edges那么会在遇到nodata值时,会使用插值方式来确定nodata值,然后再进行处理。

算法模块

山地阴影

这个模块输出是一个8位栅格图,他在地形可视化中非常有用。您可以指定太阳高度角和太阳方位角海拔高度,垂直夸张因子和比例因子来改变结果。0作为输出的nodata值,具体的其他参数如下:

-zzFactor:

垂直夸张系数。

-sscale:

垂直系数的单位,如果水平单位是度,比如WGS84投影下的经纬度,可以将该参数设置为111120那么垂直单位是米,如果设置为370400,那么垂直单位为英尺。

-azazimuth:

光线方位角,度单位,0为正上方,90度为东边(右边)以此类推,默认值为315度。

-altaltitude:

光线的高度角,度单位,90度为DEM的正上方,0度为水平。

坡度

此模块将DEM栅格计算输出坡度值是32位浮数的栅格图像。你必须指定你想要的坡度值类型的选项:度或百分比坡度。同时也可以提供一个比例因子。-9999的值是用来作为输出NODATA值。以下具体的选项可供选择:

-p:

如果指定该选项,将使用坡度百分比计算,其他情况下使用度单位计算。

-sscale:

垂直系数的单位,如果水平单位是度,比如WGS84投影下的经纬度,可以将该参数设置为111120那么垂直单位是米,如果设置为370400,那么垂直单位为英尺。

坡向

该模块输出为一个32位浮点数的栅格数据,其值范围为0度到360度之间的坡向图,表示坡向超正北方,90°坡向朝向正东方,180°坡向朝向正南方,270°坡向朝向正西方。-9999表示无效值包括平地即坡度等于0的地方,详细的参数说明如下:

-trigonometric:

返回三角角度而不是方位,0°是指北,90°东,180°西,270°南。

-zero_for_flat:

返回0表示平地,而不是-9999

如果使用这两个选项,使用gdaldem工具生成的坡度坡向结果同GRASS中的r.slope.aspect工具生成的结果一致。否则结果和MatthewPerry的aspect.cpp工具计算的结果一致。

color-relief

该功能是使用DEM数据和一个文本存储的颜色配置文件计算输出一个三波段(RGB)或者四波段(RGBA)的栅格图像。颜色配置文件中存储的是高程值和其对应的颜色值。默认情况下,给定的两个高程值之间的颜色使用该高程值对应的颜色插值来进行计算。参数-exact_color_entry或者参数-nearest_color_entry可以避免使用线性插值来确定从配置文件中没有找到对应的颜色值。

同时还有下面的选项可以使用:

color_text_file:

基于文本的颜色配置文件

-alpha:

在输出文件中添加Alpha通道

-exact_color_entry:

使用严格的匹配,在配置文件中搜索对应的高程值,如果没有找到匹配的颜色,使用“0,0,0,0”来进行填充。

-nearest_color_entry:

在颜色配置文件中使用与RGBA颜色相近的颜色进行填充

color-relief是支持输出VRT格式的,在这种情形下,会将颜色配置文件转换为一个LUTLookuptable颜色查找表)。值得注意的是,使用百分比指定的高程值会被转换为绝对高程值。

基于文本格式的颜色配置文件一般每行都有四列,分别是:高程值,红,绿,蓝(0-255之间)。高程值可以是任何浮点数,或者使用nv来表示无效值。高程值统一可以使用百分比来表示,0%表示DEM中的最小值,100%表示DEM数据中的最大值。

此外还有一列是可选的就是Alpha部分,如果没有指定,默认值为255,表示不透明。同时每列之间的分隔符可以是:逗号(,),制表符(tab键),空格(),冒号(:),以上符合均为英文输入法下的符号。通常使用的颜色单词也可以用来替换RGB值,包括:white白色,black黑色,red红色,green绿色,blue蓝色,yellow黄色,magenta品红,cyan青色,aqua浅绿,grey/gray灰色,orange橙色,brown棕色,purple/violet紫色和indigo靛蓝色。

GDAL1.8.0开始,GMT.cpt调色板文件页可以支持(仅在COLOR_MODEL=RGB时可用)。

注意:颜色配置文件的句法同GRASS中的r.colors工具一致,ESRI的HDR颜色表文件(.clr)也是这种格式,Alpha部分的支持是GDAL的一个特殊扩展。

颜色配置文件示例:

3500white

2500235:220:175

50%190185135

700240250150

05018050

nv0000

TRI

该工具生成一个单波段的栅格图像,TRI是地形粗糙指数(TerrainRuggednessIndex)的缩写,代表的是中心点象元与周围8个象元点的高程差的绝对值的平均值。(参考Wilsonetal2007,MarineGeodesy30:3-35)。

输出文件中的-9999代表无效值。该功能没有其他选项。

TPI

该工具生成一个单波段的栅格图像,TPI地形方位指数(TopographicPositionIndex)的缩写,代表的是中心点象元高程与周围8个象元点的高程平均值的差值。(参考Wilsonetal2007,MarineGeodesy30:3-35)。

输出文件中的-9999代表无效值。该功能没有其他选项。

roughness

该工具使用DEM数据计算一个单波段的栅格图像,粗糙度是指当前窗口中的最大值和最小值的差值。(参考Wilsonetal2007,MarineGeodesy30:3-35)。

输出文件中的-9999代表无效值。该功能没有其他选项。

6.gdal_rasterize矢量栅格化

用法:

gdal_rasterize[-bband]*[-i][-at]

[-burnvalue]*|[-aattribute_name][-3d]

[-llayername]*[-whereexpression][-sqlselect_statement]

[-offormat][-a_srssrs_def][-co"NAME=VALUE"]*

[-a_nodatavalue][-initvalue]*

[-texminyminxmaxymax][-trxresyres][-tap][-tswidthheight]

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

CInt16/CInt32/CFloat32/CFloat64}][-q]

<src_datasource><dst_filename>

参数说明:

该程序将矢量几何图形(点,线,面)栅格化到栅格波段中。矢量必须是OGR库支持的矢量格式。注意的是矢量数据和栅格数据必须具有相同的坐标系统,不支持动态重投影功能。从GDAL1.8.0开始,支持创建结果图像,必须使用-tr或者-ts选项才行。

-bband:

要写入的栅格波段,可以使用-b参数来进行多选,默认是写入第一个波段中。

-i:

栅格反转,.Burnthefixedburnvalue,ortheburnvalueassociatedwiththefirstfeatureintoallpartsoftheimagenotinsidetheprovidedapolygon.

-at:

EnablestheALL_TOUCHEDrasterizationoptionsothatallpixelstouchedbylinesorpolygonswillbeupdatednotjustthoseonethelinerenderpath,orwhosecenterpointiswithinthepolygon.Defaultstodisabledfornormalrenderingrules.

-burnvalue:

栅格象元值,将所有的对象都用该值写入波段中,可以使用一个列表,来指定每个波段写入的象元值。

-aattribute_name:

指定属性字段中的字段值作为栅格值写入栅格文件中。

-3d:

将坐标点的Z值写入栅格中,假如参数-burn-aattribute_name被指定,那么该参数将会无效,目前仅仅支持3D的点和线数据。

-llayername:

指定矢量文件中的图层名作为输入要素,可以指定多次,但是至少有一个图层名或者-sql必须被指定。

-whereexpression:

SQLWHERE格式的查询语句,从指定的图层中选择特殊的要素。

-sqlselect_statement:

使用SQL语句来指定矢量数据中那些要素将要被栅格化。

-offormat:

(GDAL>=1.8.0)输出文件格式,默认为GeoTiff格式,使用短格式名称。

-a_nodatavalue:

(GDAL>=1.8.0)指定输出文件的无效值。

-initvalue:

(GDAL>=1.8.0)指定初始化栅格波段中的象元值,但是该值不能作为输出文件的无效值,如果只指定了一个值,那么其他的波段都会使用该值来填充。

-a_srssrs_def:

(GDAL>=1.8.0)覆盖输出文件的投影,如果没有指定,将使用输入的矢量文件中的投影作为输出投影,如果输入和输出投影不一致,将尝试重投影矢量。该参数的格式可以是GDAL/OGR支持的各种投影格式,如完整的WKTPROJ.4EPSG:n或者存储WKT的文本文件。

-co"NAME=VALUE":

(GDAL>=1.8.0)创建图像选项,具体参考不同的栅格格式。

-texminyminxmaxymax:

(GDAL>=1.8.0)设置地理范围,该值必须使用地理单位,如果没有指定,该范围同输入的矢量图层范围一致。

-trxresyres:

(GDAL>=1.8.0)设置输出分辨率,该值必须是有地理单位,两个必须都是正数。

-tap:

(GDAL>=1.8.0)(targetalignedpixels)alignthecoordinatesoftheextentoftheoutputfiletothevaluesofthe-tr,suchthatthealignedextentincludestheminimumextent.(不清楚该参数,同gdalwarp中的-tap

-tswidthheight:

(GDAL>=1.8.0)设置输出文件大小,注意使用-ts是不能同时使用-tr

-ottype:

(GDAL>=1.8.0)输出波段的数据类型,默认为64位浮点数。

-q:

(GDAL>=1.8.0)不输出进度信息和错误信息。

src_datasource:

任何OGR支持的矢量数据。

dst_filename:

GDAL支持的输出文件,必须支持更新模式访问,在GDAL1.8.0之前,该工具不能创建结果图像。

举例:

下面的例子,将mask.shp中的所有多边形栅格化为一个RGBTif图像work.tif,使用红色表示(RGB=255,0,0)。

gdal_rasterize-b1-b2-b3-burn255-burn0-burn0-lmaskmask.shpwork.tif

下面的例子将所有的class属性值为A的全部要素输出到一个高程文件中,高程文件的高程值为属性字段ROOF_H的属性值。

gdal_rasterize-aROOF_H-where'class="A"'-lfootprintsfootprints.shpcity_dem.tif

7.gdaltransform坐标系转换工具

用法:

gdaltransform[--help-general]

[-i][-s_srssrs_def][-t_srssrs_def][-to"NAME=VALUE"]

[-ordern][-tps][-rpc][-geoloc]

[-gcppixellineeastingnorthing[elevation]]*

[srcfile[dstfile]]

参数说明:

gdaltransform工具用来转换坐标,从支持的投影,包括GCP点的变换。

-s_srssrsdef:

原始空间参考,该值将被OGRSpatialReference.SetFromUserInput()函数调用,支持包括EPSGPCS和GCSes(如EPSG:4296),PROJ.4声明或者一个后缀名为.prf的文件存储的WKT串。

-t_srssrs_def:

目标空间参考,该值将被OGRSpatialReference.SetFromUserInput()函数调用,支持包括EPSGPCS和GCSes(如EPSG:4296),PROJ.4声明或者一个后缀名为.prf的文件存储的WKT串。

-toNAME=VALUE:

设置转换参数,将会使函数GDALCreateGenImgProjTransformer2()来调用。

-ordern:

几何多项式变换次数(13),默认情况下会根据输入的GCP点的个数自动确定。

-tps:

强制将GCP点使用TPS转换方式转换。

-rpc:

强制使用RPC参数转换。

-geoloc:

强制使用Geolocation数组转换。

-i

逆转换,从目标到原始投影转换。

-gcppixellineeastingnorthing[elevation]:

指定GCP点,通常至少需要三个。

srcfile:

原始投影下定义的GCP点文件,如果没有指定,需要从命令行-s_srs或者-gcp参数输入。

dstfile:

目标投影定义文件。

读取的坐标必须是成对出现(或者三个一组),输出也以同样的方式输出,所有的变换共gdalwarp相同,包括使用GCP的变换。注意输入输出必须使用十进制小数,当前不支持DMS(度分秒)的输入输出。如果指定了输入图像,那么输入的坐标是基于图像的行列号,如果输出图像指定,输出的坐标也是图像的行列号。

举例:

重投影示例

简单的投影转换,从一个投影转换到另一个投影:

gdaltransform-s_srsEPSG:28992-t_srsEPSG:31370

177502311865

Producesthefollowingoutputinmetersinthe"Belge1972/BelgianLambert72"projection:

244510.77404604166154.532871342-1046.79270555763

图像RPC变换示例:

下面的命令行使用基于RPC变换,并且使用-i选项来将经纬度坐标转为图像的行列号:

gdaltransform-i-rpc06OCT20025052-P2AS-005553965230_01_P001.TIF

125.6720639.8530750

Producesthisoutputmeasuredinpixelsandlinesontheimage:

3499.492824223812910.8389284841450

8.nearblack

用法:

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

[-noct][-nofl][-checksum][-proj4][-mdddomain]*

[-sdsubdataset]datasetname

参数说明:

该工具没有进行说明。

9.gdal_grid插值工具

用法:

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

CInt16/CInt32/CFloat32/CFloat64}]

[-offormat][-co"NAME=VALUE"]

[-zfieldfield_name]

[-a_srssrs_def][-spatxminyminxmaxymax]

[-clipsrc<xminyminxmaxymax>|WKT|datasource|spat_extent]

[-clipsrcsqlsql_statement][-clipsrclayerlayer]

[-clipsrcwhereexpression]

[-llayername]*[-whereexpression][-sqlselect_statement]

[-txexminxmax][-tyeyminymax][-outsizexsizeysize]

[-aalgorithm[:parameter1=value1]*][-q]

<src_datasource><dst_filename>

参数说明:

该程序从OGR支持的矢量数据中创建一个规则的栅格数据。输入数据必须有用来插值的数据,可以选择下面的插值方法。

-ottype:

指定输出文件个数据类型。

-offormat:

输出文件格式,默认为GeoTiff格式。

-txexminxmax:

设置输出文件的地理范围X

-tyeyminymax:

设置输出文件的地理范围Y

-outsizexsizeysize:

设置输出文件的大小。

-a_srssrs_def:

设置输出文件的投影,可以是WKT串,PROJ.4EPSG:n或者含有wkt的文件。

-zfieldfield_name:

指定矢量要素中获取Z值的字段。

-a[algorithm[:parameter1=value1][:parameter2=value2]...]:

设置插值算法或者数据单位参数,具体参考INTERPOLATIONALGORITHMSDATAMETRICS

-spatxminyminxmaxymax:

指定空间范围进行过滤(xmin,ymin)-(xmax,ymax)。

-clipsrc[xminyminxmaxymax]|WKT|datasource|spat_extent:

添加一个空间过滤来选择处理的要素,包括空间范围(SRS表示),WKT几何形状(POLYGON或MULTIPOLYGON),也可以使用下面的参数来进行过滤:-clipsrclayer,-clipsrcwhere或-clipsrcsql。

-clipsrcsqlsql_statement:

使用SQL语句对原始数据进行查询过滤。

-clipsrclayerlayername:

指定源数据中图层名称。

-clipsrcwhereexpression:

使用属性表来限制几何体。

-llayername:

指定图层名称。

-whereexpression:

使用SQLWHERE方式来过滤图层中的数据。

-sqlselect_statement:

使用SQL语句来过滤图层中的数据。

-co"NAME=VALUE":

创建文件参数选项。

-q:

不输出进度信息和错误信息。

src_datasource:

输入矢量,任何OGR库支持的矢量数据。

dst_filename:

输出栅格,GDAL支持的栅格数据。

INTERPOLATIONALGORITHMS(插值算法)

插值算法可以选择下面几种:

invdist

距离次方反比法,这个是默认算法,该算法还有下列参数:

power:

权重指数,默认为2.0

smoothing:

平滑参数,默认为0.0

radius1:

搜索椭圆第一半径(X轴的旋转角度为0),设置该参数为0时将使用所有的点数组,默认为0.0

radius2:

搜索椭圆第二半径(Y轴的旋转角度为0),设置该参数为0时将使用所有的点数组,默认为0.0

angle:

搜索椭圆的旋转角度,使用度单位。默认为0.0,逆时针方向。

max_points:

使用的数据点的最大个数,不会搜索多余这个数字的点,如果搜索椭圆设置将会使用该值(两个半径均不为0时)。默认为0,为0表示使用所有的点。

min_points:

使用的最小数据点个数,如果数据点小于该值,并且找到的网络节点值为空,将使用Nodata值来标记。该值仅仅当搜索椭圆设置(即两个半径均不为0),默认该值为0

nodata:

设置NODATA值,默认为0.0

average

移动均值算法,该算法参数如下:

radius1:

搜索椭圆第一半径(X轴的旋转角度为0),设置该参数为0时将使用所有的点数组,默认为0.0

radius2:

搜索椭圆第二半径(Y轴的旋转角度为0),设置该参数为0时将使用所有的点数组,默认为0.0

angle:

搜索椭圆的旋转角度,使用度单位。默认为0.0,逆时针方向。

min_points:

使用数据点的最小个数,如果数据点小于该值,并且找到的网络节点值为空,将使用Nodata值来标记,默认该值为0

nodata:

设置NODATA值。默认值为0.0

注意:使用移动均值算法必须设置搜索椭圆,当计算网格节点值时使用窗口的均值。

nearest

最邻近算法。该算法参数如下:

radius1:

搜索椭圆第一半径(X轴的旋转角度为0),设置该参数为0时将使用所有的点数组,默认为0.0

radius2:

搜索椭圆第二半径(Y轴的旋转角度为0),设置该参数为0时将使用所有的点数组,默认为0.0

angle:

搜索椭圆的旋转角度,使用度单位。默认为0.0,逆时针方向。

nodata:

设置NODATA值。默认值为0.0

DATAMETRICS(数据单位)

Besidestheinterpolationfunctionalitygdal_grid除了插值功能外,还有使用指定窗口和输出网格来计算一些数据指标,这些指标有:

minimum:

搜索椭圆中网格节点的最小值。

maximum:

搜索椭圆中网格节点的最大值。

range:

在搜索椭圆中查找到的最大值和最小值的差值。

count:

在搜索椭圆中找到的点个数。

average_distance:

网格节点(搜索椭圆中心)和所有在网格节点搜索椭圆的数据点之间的平均距离。

average_distance_pts:

在网格节点搜索椭圆中发现的数据点之间的平均距离。椭圆内每对点之间距离的计算和所有的距离平均是作为一个网格节点的值设置。

所有的指标都具有下面相同的选项:

radius1:

搜索椭圆第一半径(X轴的旋转角度为0),设置该参数为0时将使用所有的点数组,默认为0.0

radius2:

搜索椭圆第二半径(Y轴的旋转角度为0),设置该参数为0时将使用所有的点数组,默认为0.0

angle:

搜索椭圆的旋转角度,使用度单位。默认为0.0,逆时针方向。

min_points:

使用的数据点的最小个数。如果找到的数据点小于将设置为NODATA值,该值仅仅用于设置搜索椭圆时可用(两个半径均不为0时)。默认值为0

nodata:

设置NODATA值。默认值为0.0

READINGCOMMASEPARATEDVALUES(读取逗号分割符文件CSV)

通常使用一个文本文件,使用逗号分隔XYZ值,该文件通常叫做CSV文件。可以在gdal_grid中使用该文件。你需要做的就是要对你的CSV文件创建一个VRT文件头,并将该文件作为gdal_grid的输入数据。关于VRT格式详情参考VirtualFormat页面。

下面有个小例子。假如我们有个CSV文件叫dem.csv,里面内容为:

Easting,Northing,Elevation

86943.4,891957,139.13

87124.3,892075,135.01

86962.4,892321,182.04

87077.6,891995,135.01

...

对于上面的数据,创建一个dem.vrt的头文件,内容如下:

<OGRVRTDataSource>

<OGRVRTLayername="dem">

<SrcDataSource>dem.csv</SrcDataSource>

<GeometryType>wkbPoint</GeometryType>

<GeometryFieldencoding="PointFromColumns"x="Easting"y="Northing"z="Elevation"/>

</OGRVRTLayer>

</OGRVRTDataSource>

该说明是一个叫做2.5D的几何数据,含有三个坐标XYZZ值将被用来插值。现在可以使用dem.vrt来进行测试,可以先使用ogrinfo来测试该文件是否可用。数据中包括一个叫dem的点图层,数据包括在CSV文件中。使用这种方式,可以处理超过三列,交换列的CSV文件。

如果你的CSV文件不包括列头,那么可以在VRT头文件中加入下面的内容来进行处理:<GeometryFieldencoding="PointFromColumns"x="field_1"y="field_2"z="field_3"/>

CommaSeparatedValue页面描述了OGR库对CSV文件的支持描述信息。

举例:

下面将创建一个TIFF的图像数据,使用VRT数据源,从一个CSV文件中,使用反距离次方算法来进行插值。

gdal_grid-ainvdist:power=2.0:smoothing=1.0-txe8500089000-tye894000890000-outsize400400-ofGTiff-otFloat64-ldemdem.vrtdem.tiff

下面的命令行同上面的类似,但是读取的数据是使用-zfield选项来指定的。

gdal_grid-zfield"Elevation"-ainvdist:power=2.0:smoothing=1.0-txe8500089000-tye894000890000-outsize400400-ofGTiff-otFloat64-ldemdem.vrtdem.tiff

10.gdallocationinfo栅格查询工具

用法:

gdallocationinfo[--help-general][-xml][-lifonly][-valonly]

[-bband]*[-l_srssrs_def][-geoloc][-wgs84]

srcfile[xy]

参数说明:

Gdallocationinfo程序通过指定一种坐标系中的坐标来进行对其位置的像元值进行输出显示。

-xml:

输出XML格式,方便后期处理。

-lifonly:

输出LocationInfo中的信息。

-valonly:

仅仅输出指定位置的每个波段的像元值。

-bband:

选择一个波段进行处理,多波段文件将被列出显示。默认是查询所有的波段。

-l_srssrsdef:

指定输入的x,y坐标的坐标系。

-geoloc:

表示输入的x,y坐标是地理参考坐标系。

-wgs84:

表示输入的x,yWGS84坐标系下的经纬度坐标。

srcfile:

输入栅格图像的名称。

x:

查询的X坐标。默认为图像行列号,如果使用-l_srs,-wgs84或者-geoloc时按照指定的坐标来处理。

y:

查询的Y坐标。默认为图像行列号,如果使用-l_srs,-wgs84或者-geoloc时按照指定的坐标来处理

该工具的目的是输出一个像素的各种信息。目前支持下面四项:

·像素的行列号。

·输出元数据中的LocationInfo信息,目前只支持VRT文件。

·全部波段或子文件中的所有波段中的像元值。

·未缩放的像元值,如果对波段进行了缩放和偏移操作。

输入xy坐标是,是通过命令行来进行输入的,一般是先xy,即先列号后行号;如果使用-geoloc,-wgs84,-l_srs选项后,会自动根据输入进行交换。默认的输出信息是纯文本文件,也可以使用-xml选项将其使用xml格式进行输出。将来会添加其他的信息。

11.gdalsrsinfo将给定的CRS按照不同的格式显示

用法:

gdalsrsinfo[options]srs_def

列出给定的CRS的各种表示方法。如ESRIwkt格式,OGCwkt格式Proj4的格式等。

srs_def可以是一个GDAL或者OGR支持的文件,或者是任何GDALOGR支持的CRS格式(包括WKT,PROJ4,EPSG:n等)。

参数说明:

Options:

[--help-general][-h] 显示帮助信息并退出

[-p]输出信息(如WKT字串格式)

[-V]验证SRS

[-oout_type]输出类型,默认为all,所有类型见下:

{all,proj4,wkt,wkt_simple,wkt_old,wkt_esri,mapinfo,xml}

举例:

gdalsrsinfo-oall"EPSG:4326"

PROJ.4:'+proj=longlat+datum=WGS84+no_defs'

OGCWKT:

GEOGCS["WGS84",

DATUM["WGS_1984",

SPHEROID["WGS84",6378137,298.257223563,

AUTHORITY["EPSG","7030"]],

AUTHORITY["EPSG","6326"]],

PRIMEM["Greenwich",0,

AUTHORITY["EPSG","8901"]],

UNIT["degree",0.0174532925199433,

AUTHORITY["EPSG","9122"]],

AUTHORITY["EPSG","4326"]]

OGCWKT(simple):

GEOGCS["WGS84",

DATUM["WGS_1984",

SPHEROID["WGS84",6378137,298.257223563]],

PRIMEM["Greenwich",0],

UNIT["degree",0.0174532925199433]]

ESRIWKT:

GEOGCS["GCS_WGS_1984",

DATUM["D_WGS_1984",

SPHEROID["WGS_1984",6378137,298.257223563]],

PRIMEM["Greenwich",0],

UNIT["Degree",0.017453292519943295]]

12.gdal-configGDAL配置参数

用法:

gdal-config[OPTIONS]

Options:

[--prefix[=DIR]]

[--libs]

[--cflags]

[--version]

[--ogr-enabled]

[--formats]

参数说明:

该脚本工具可以用来查看关于GDAL的一些安装信息等内容。

--prefix:

显示GDAL的安装目录。

--libs:

显示GDAL所依赖的库。

--cflags:

编译GDAL时包括的宏定义等信息。

--version:

显示GDAL版本信息。

--ogr-enabled:

显示是否包含OGR库,如果输出"yes"说明OGR可以使用,如果是"no"则不能使用OGR库中的东西。

--formats:

输出GDAL支持的格式。


优质内容筛选与推荐>>
1、设计模式之禅之设计模式-状态模式
2、细说:Http协议 篇
3、【枚举类型】Restful API请求--转换String为枚举类型
4、找出2n+1个数中不成对的那个
5、Collection和Collections的区别


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号