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

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

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


1. gdalwarp 图像纠正

用法:

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

    [-s_srs srs_def] [-t_srs srs_def] [-to "NAME=VALUE"]

    [-order n | -tps | -rpc | -geoloc] [-et err_threshold]

    [-refine_gcps tolerance [minimum_gcps]]

    [-te xmin ymin xmax ymax] [-tr xres yres] [-tap] [-ts width height]

    [-wo "NAME=VALUE"] [-ot Byte/Int16/...] [-wt Byte/Int16]

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

    [-r resampling_method] [-wm memory_in_mb] [-multi] [-q]

    [-cutline datasource] [-cl layer] [-cwhere expression]

    [-csql statement] [-cblend dist_in_pixels] [-crop_to_cutline]

    [-of format] [-co "NAME=VALUE"]* [-overwrite]

    srcfile* dstfile

参数说明:

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

-s_srs srs def:

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

-t_srs srs_def:

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

-to NAME=VALUE:

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

-order n:

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

-tps:

强制使用TPSthin plate spline)纠正方法来纠正图像。 

-rpc: 

强制使用RPC参数纠正。 

-geoloc:

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

-et err_threshold:

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

-refine_gcps tolerance minimum_gcps:

(GDAL >= 1.9.0) refines the GCPs by automatically eliminating outliers. Outliers will be eliminated until minimum_gcps are left or when no outliers can be detected. The tolerance is passed to adjust when a GCP will be eliminated. Not that GCP refinement only works with polynomial interpolation. The tolerance is in pixel units if no projection is available, otherwise it is in SRS units. If minimum_gcps is not provided, the minimum GCPs according to the polynomial model is used. (这个参数不太清楚,没用过)

-te xmin ymin xmax ymax:

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

-tr xres yres:

设置输出图像的分辨率。 

-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. 

-ts width height:

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

-wo "NAME=VALUE":

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

-ot type:

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

-wt type:

计算的数据类型。 

-r resampling_method:

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

near: 

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

bilinear: 

双线性内插采样。

cubic: 

立方卷积采样。 

cubicspline: 

立方样条采样。 

lanczos: 

Lanczos 窗口辛克采样。 

-srcnodata value [value...]:

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

-dstnodata value [value...]:

设置输出波段的Nodata值。 

-dstalpha:

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

-wm memory_in_mb:

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

-multi:

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

-q:

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

-of format:

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

-co "NAME=VALUE":

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

-cutline datasource:

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

-cl layername:

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

-cwhere expression:

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

-csql query:

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

-cblend distance:

Set a blend distance to use to blend over cutlines (in pixels).(这个参数不太清楚,没用过) 

-crop_to_cutline:

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

-overwrite:

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

srcfile:

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

dstfile:

输出数据文件名。 

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

举例:

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

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

用法:

gdaltindex [-tileindex field_name] [-write_absolute_path] [-skip_different_projection] index_file [gdal_file]*

参数说明:

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

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

· 默认的索引字段为location。 

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

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

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

举例:

gdaltindex doq_index.shp doq/*.tif

3. gdalbuildvrt 创建VRT数据

用法:

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

             [-tr xres yres] [-tap] [-separate] [-allow_projection_difference] [-q]

             [-te xmin ymin xmax ymax] [-addalpha] [-hidenodata]

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

             [-input_file_list my_liste.txt] [-overwrite] output.vrt [gdalfile]*

参数说明:

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

该工具没有进行说明。

4. gdal_contour DEM生成等高线

用法:

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

                    [-snodata n] [-f <formatname>] [-i <interval>]

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

                    [-nln <outlayername>]

                    <src_filename> <dst_filename> 

参数说明:

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

-b band:

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

-a name:

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

-3d: 

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

-inodata: 

忽略任何nodata值。

-snodata value:

设置输入文件的nodata值。 

-f format: 

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

-i interval:

等高线间距。

-off offset:

设置高程相对系数。

-fl level: 

Name one or more "fixed levels" to extract. 

-nln outlayername: 

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

举例:

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

gdal_contour -a elev dem.tif contour.shp -i 10.0

5. gdaldem DEM算法

用法:

- To generate a shaded relief map from any GDAL-supported elevation raster :

    gdaldem hillshade input_dem output_hillshade

                [-z ZFactor (default=1)] [-s scale* (default=1)]"

                [-az Azimuth (default=315)] [-alt Altitude (default=45)]

                [-alg ZevenbergenThorne]

                [-compute_edges] [-b Band (default=1)] [-of format] [-co "NAME=VALUE"]* [-q]

- To generate a slope map from any GDAL-supported elevation raster :

    gdaldem slope input_dem output_slope_map"

                [-p use percent slope (default=degrees)] [-s scale* (default=1)]

                [-alg ZevenbergenThorne]

                [-compute_edges] [-b Band (default=1)] [-of format] [-co "NAME=VALUE"]* [-q]

- To generate an aspect map from any GDAL-supported elevation raster

  Outputs a 32-bit float raster with pixel values from 0-360 indicating azimuth :

    gdaldem aspect input_dem output_aspect_map"

                [-trigonometric] [-zero_for_flat]

                [-alg ZevenbergenThorne]

                [-compute_edges] [-b Band (default=1)] [-of format] [-co "NAME=VALUE"]* [-q]

- To generate a color relief map from any GDAL-supported elevation raster

    gdaldem color-relief input_dem color_text_file output_color_relief_map

                [-alpha] [-exact_color_entry | -nearest_color_entry]

                [-b Band (default=1)] [-of format] [-co "NAME=VALUE"]* [-q]

    where color_text_file contains lines of the format "elevation_value red green blue"

    

- To generate a Terrain Ruggedness Index (TRI) map from any GDAL-supported elevation raster:

    gdaldem TRI input_dem output_TRI_map

                [-compute_edges] [-b Band (default=1)] [-of format] [-q]

            

- To generate a Topographic Position Index (TPI) map from any GDAL-supported elevation raster:

    gdaldem TPI input_dem output_TPI_map

                [-compute_edges] [-b Band (default=1)] [-of format] [-q]

            

- To generate a roughness map from any GDAL-supported elevation raster:

    gdaldem roughness input_dem output_roughness_map

                [-compute_edges] [-b Band (default=1)] [-of format] [-q]

参数说明:

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

hillshade(山地阴影)

用来生成山地阴影图像。

slope

用来生成坡度图像。 

aspect

用来生成坡向图像。 

color-relief

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

TRI

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

TPI

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

roughness

用来生成粗糙度图像。

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

input_dem:

输入DEM数据。

output_xxx_map:

输出处理的结果数据。 

-of format:

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

-compute_edges:

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

-alg ZevenbergenThorne:

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

-b band:

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

-co "NAME=VALUE":

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

-q:

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

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

算法模块

山地阴影

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

-z zFactor:

垂直夸张系数。

-s scale:

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

-az azimuth:

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

-alt altitude:

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

坡度

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

-p :

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

-s scale:

垂直系数的单位,如果水平单位是度,比如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工具生成的结果一致。否则结果和Matthew Perry的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格式的,在这种情形下,会将颜色配置文件转换为一个LUTLook up table颜色查找表)。值得注意的是,使用百分比指定的高程值会被转换为绝对高程值。

基于文本格式的颜色配置文件一般每行都有四列,分别是:高程值,红,绿,蓝(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的一个特殊扩展。

颜色配置文件示例: 

3500   white

2500   235:220:175

50%   190 185 135

700    240 250 150

0      50  180  50

nv     0   0   0   0 

TRI

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

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

TPI

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

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

roughness

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

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

6. gdal_rasterize 矢量栅格化

用法:

gdal_rasterize [-b band]* [-i] [-at]

       [-burn value]* | [-a attribute_name] [-3d]

       [-l layername]* [-where expression] [-sql select_statement]

       [-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>

参数说明:

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

-b band:

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

-i:

栅格反转,. Burn the fixed burn value, or the burn value associated with the first feature into all parts of the image not inside the provided a polygon.

-at:

Enables the ALL_TOUCHED rasterization option so that all pixels touched by lines or polygons will be updated not just those one the line render path, or whose center point is within the polygon. Defaults to disabled for normal rendering rules.

-burn value:

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

-a attribute_name:

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

-3d:

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

-l layername:

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

-where expression:

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

-sql select_statement:

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

-of format:

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

-a_nodata value:

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

-init value:

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

-a_srs srs_def:

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

-co "NAME=VALUE":

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

-te xmin ymin xmax ymax :

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

-tr xres yres :

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

-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.(不清楚该参数,同gdalwarp中的-tap

-ts width height:

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

-ot type:

(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 -b 1 -b 2 -b 3 -burn 255 -burn 0 -burn 0 -l mask mask.shp work.tif

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

gdal_rasterize -a ROOF_H -where 'class="A"' -l footprints footprints.shp city_dem.tif

7. gdaltransform 坐标系转换工具

用法:

gdaltransform [--help-general]

    [-i] [-s_srs srs_def] [-t_srs srs_def] [-to "NAME=VALUE"]

    [-order n] [-tps] [-rpc] [-geoloc]

    [-gcp pixel line easting northing [elevation]]*

    [srcfile [dstfile]]

参数说明:

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

-s_srs srs def:

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

-t_srs srs_def:

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

-to NAME=VALUE:

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

-order n:

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

-tps:

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

-rpc:

强制使用RPC参数转换。

-geoloc:

强制使用Geolocation数组转换。

-i

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

-gcppixel line easting northing [elevation]:

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

srcfile:

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

dstfile:

目标投影定义文件。

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

举例:

重投影示例

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

gdaltransform -s_srs EPSG:28992 -t_srs EPSG:31370

177502 311865

Produces the following output in meters in the "Belge 1972 / Belgian Lambert 72" projection:

244510.77404604 166154.532871342 -1046.79270555763

图像RPC变换示例:

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

gdaltransform -i -rpc 06OCT20025052-P2AS-005553965230_01_P001.TIF

125.67206 39.85307 50                    

Produces this output measured in pixels and lines on the image:

3499.49282422381 2910.83892848414 50

8. nearblack

用法:

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

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

 [-sd subdataset] datasetname

参数说明:

该工具没有进行说明。

9. gdal_grid 插值工具

用法:

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

          CInt16/CInt32/CFloat32/CFloat64}]

  [-of format] [-co "NAME=VALUE"]

  [-zfield field_name]

  [-a_srs srs_def] [-spat xmin ymin xmax ymax]

          [-clipsrc <xmin ymin xmax ymax>|WKT|datasource|spat_extent]

          [-clipsrcsql sql_statement] [-clipsrclayer layer]

          [-clipsrcwhere expression]

  [-l layername]* [-where expression] [-sql select_statement]

  [-txe xmin xmax] [-tye ymin ymax] [-outsize xsize ysize]

  [-a algorithm[:parameter1=value1]*] [-q]

  <src_datasource> <dst_filename>

参数说明:

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

-ot type:

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

-of format:

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

-txe xmin xmax:

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

-tye ymin ymax:

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

-outsize xsize ysize:

设置输出文件的大小。

-a_srs srs_def:

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

-zfield field_name:

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

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

设置插值算法或者数据单位参数,具体参考 INTERPOLATION ALGORITHMS 和DATA METRICS 。

-spat xmin ymin xmax ymax:

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

-clipsrc [xmin ymin xmax ymax]|WKT|datasource|spat_extent:

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

-clipsrcsql sql_statement:

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

-clipsrclayer layername:

指定源数据中图层名称。

-clipsrcwhere expression:

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

-l layername:

指定图层名称。

-where expression:

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

-sql select_statement:

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

-co "NAME=VALUE":

创建文件参数选项。

-q:

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

src_datasource:

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

dst_filename:

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

INTERPOLATION ALGORITHMS(插值算法)

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

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

DATA METRICS(数据单位)

Besides the interpolation functionality gdal_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

READING COMMA SEPARATED VALUES(读取逗号分割符文件CSV)

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

下面有个小例子。假如我们有个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>

    <OGRVRTLayer name="dem">

        <SrcDataSource>dem.csv</SrcDataSource> 

<GeometryType>wkbPoint</GeometryType> 

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

    </OGRVRTLayer>

</OGRVRTDataSource>

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

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

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

举例:

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

gdal_grid -a invdist:power=2.0:smoothing=1.0 -txe 85000 89000 -tye 894000 890000 -outsize 400 400 -of GTiff -ot Float64 -l dem dem.vrt dem.tiff

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

gdal_grid -zfield "Elevation" -a invdist:power=2.0:smoothing=1.0 -txe 85000 89000 -tye 894000 890000 -outsize 400 400 -of GTiff -ot Float64 -l dem dem.vrt dem.tiff

10. gdallocationinfo 栅格查询工具

用法:

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

               [-b band]* [-l_srs srs_def] [-geoloc] [-wgs84]

               srcfile [x y]

参数说明:

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

-xml:

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

-lifonly:

输出LocationInfo 中的信息。

-valonly:

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

-b band:

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

-l_srs srs def:

指定输入的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

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

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

举例:

gdalsrsinfo  -o all  "EPSG:4326"

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

OGC WKT :

GEOGCS["WGS 84",

    DATUM["WGS_1984",

        SPHEROID["WGS 84",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"]]

OGC WKT (simple) :

GEOGCS["WGS 84",

    DATUM["WGS_1984",

        SPHEROID["WGS 84",6378137,298.257223563]],

    PRIMEM["Greenwich",0],

    UNIT["degree",0.0174532925199433]]

ESRI WKT :

GEOGCS["GCS_WGS_1984",

    DATUM["D_WGS_1984",

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

    PRIMEM["Greenwich",0],

    UNIT["Degree",0.017453292519943295]]

12. gdal-config GDAL配置参数

用法:

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支持的格式。


你可能感兴趣的:(多线程,算法,存储,工具,csv,distance)