4.2. gdal_translate
不同格式间的栅格数据转换
用法:
gdal_translate [--help-general] [-ot {Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/ CInt16/CInt32/CFloat32/CFloat64}] [-not_strict] [-of format] [-b band] [-outsize xsize[%] ysize[%]] [-scale [src_min src_max [dst_min dst_max]]] [-srcwin xoff yoff xsize ysize] [-projwin ulx uly lrx lry] [-a_srs srs_def] [-a_ullr ulx uly lrx lry] [-a_nodata value] [-gcp pixel line easting northing]* [-mo "META-TAG=VALUE"]* [-quiet] [-sds] [-co "NAME=VALUE"]* src_dataset dst_dataset
gdal_translate 工具可以用来在不同格式间转换栅格数据。并且在处理过程中暗地里做一些诸如子栅格设置,重采样和象元值集体变化等勾当。
-ot type
- 指定输出波段的数据类型
-not_strict
- 当转换到输出格式时遇到不匹配或者丢失数据时,宽大处理。
-of format
-
选择输出格式。默认是GeoTiff(GTiff)。注意,指定的时候用格式简称。
-b band
-
选择一个波段来输出。波段号从1开始编号。多个 -b 参数可以用于选择输出某几个波段或者重新进行波段的排序。
-outsize xsize[%] ysize[%]
- 设置输出文件的大小。大小以象元为单位,除非用“%”来标记,这时,表示的是输出为输入图层大小的百分比。
-scale [src_min src_max [dst_min dst_max] ]
- 重新组织输入象元的值。将它们从src_min~src_max范围内缩放到dst_min ~ dst_max范围内。如果省略,输出范围将为0~255。输入范围将由源数据自动计算。
-srcwin xoff yoff xsize ysize
- 选择一个取值窗口,通过该窗口在原图像中的行列位置来拷贝数值。
-projwin ulx uly lrx lry
- 选择一个取值窗口,通过该窗口在原图像中地理坐标范围来拷贝数据(类似srcwin)。
-a_srs srs_def
- 把输出文件投影强制指定坐标系。srs_def可以是任何常用的GDAL/OGR格式,WKT,Proj4,EPSG:n 或者一个包含着wkt的文件的文件名。
-a_ullr ulx uly lrx lry
- 强制指定输出文件的空间转换边界范围。而不需要和原图像有关系。
-a_nodata value
- 分配指定一个无意义值到输出波段。
-mo "META-TAG=VALUE"
- 如果可能的话通过设置一个原数据的键来指定输出数据集原数据对应的值。
-co "NAME=VALUE"
- 通过一个创建参数来指定输出格式特殊创建要求。多个-co 参数可以组合起来使用。创建参数可以参考个个数据格式本身说明。
-gcp pixel line easting northing
- 添加指定地面控制点到输出数据集。这个参数可能被提供多次以提供一系列的GCPs
-quiet
- 忽略处理进程监视和其他不是错误的输出。
-sds
- 拷贝文件中所有子数据集到各自的输出文件中。通常这个参数用在HDF或者OGDI这样有子数据集的格式中。
src_dataset
- 源栅格数据文件名
dst_dataset
- 目标栅格数据文件民
例子:
gdal_translate -of GTiff -co "TILED=YES" utm.tif utm_tiled.tif
4.3. gdaladdo
建立或者重建图像金字塔。
用法:
gdaladdo [-r {nearest,average,average_mp,average_magphase,mode}] filename levels
gdaladdo工具可以用于为大多数支持的格式建立或者重建金字塔。可以使用下面几种重采样算法中的一种来进行缩小重采样操作。
-r {nearest, average,average_mp, average_magphase,mode}:
- 选择重采样算法。
filename
- 要建立金字塔的文件名。
levels:
- 要建立略缩图的层号的列表。
Mode 不是一个确切的实现。而且average_mp不适合使用。Average_magphase在一个mag/phase空间中平均联合数据(译者:这句涉及算法,我不懂这个是什么平均方法)。最临近和平均值法可以用于普通的影像数据。最临近法用一个最临近的邻居(简单象元)重采样,而平均值法计算所有非无意义值的象元的平均值来进行重采样。
选择一个缩放水平如2表示略缩图缩放程度是源图像每个维上分辨率的1/2。如果文件在所选缩放水平上已经存在略缩图,那么那个缩放程度将被重新计算并覆盖写入。
一些格式根本不支持金字塔。许多格式在文件以外以扩展名.ovr存储金字塔,TIFF就是如此。GeoTIFF格式直接把金字塔存储到原有的文件中。
在TIFF中创建金字塔可以通过用COMPRESS_OVERVIEW配置参数进行压缩。所有GeoTIFF支持的压缩方法,可以在这里获得(如: --config COMPRESS_OVERVIEW DEFLATE)。
大 多数驱动也支持一个备用的略缩图格式(使用的是Erdas图像格式)。引发这个备用格式使用 USE_RRD=YES 来设置参数。这样做会把GDAL程序创建的金字塔放到一个辅助的.aux文件中使得可以该金字塔可以直接在Erdas中使用或者也可以在ArcGIS中使用。
例子:
在所提供的TIFF文件内部创建金字塔
gdaladdo -r average abc.tif 2 4 8 16
从一个ERDAS.IMG文件中创建一个外部的压缩的金字塔文件。
gdaladdo --config COMPRESS_OVERVIEW DEFLATE erdas.img 2 4 8 16
为给定JPEG文件创建一个Erdas Imagine 格式金字塔
gdaladdo --config USE_RRD YES airphoto.jpg 3 9 27 81
4.4. gdalwarp
简单图像重投影和绑定工具。
用法
gdalwarp [-s_srs srs_def] [-t_srs srs_def] [-order n] [-et err_threshold] [-te xmin ymin xmax ymax] [-tr xres yres] [-ts width height] [-wo "NAME=VALUE"] [-o Byte/Int16/...] [-w Byte/Int16] [-srcnodata "value [value...]"] [-dstnodata "value [value...]"] [-rn] [-rb] [-rc] [-rcs] [-wm memory_in_mb] [-multi] [-q] [-of format] [-co "NAME=VALUE"]* srcfile* dstfile
gdalwarp工具是一个图像镶嵌、重投影、和绑定的工具。程序可以重投影到任何支持的投影,而且如果图像("raw" with)控制信息也可以把GCPs和图像存储在一起。
-s_srs srs_def
-
源空间参考集。所有可以使用OGRSpatialReference.SetFromUserInput()来调用的坐标系统都可以使用。包括EPSG PCS和GCSes(例如EPSG:4296),PROJ.4描述(如上)。或者包含知名文本的以prf为扩展名的文件。
-t_srs srs_def
- 目标坐标系统集。(可以参考上面的解释)
-order n
- 用于绑定的多项式规则。默认的是选择一个基于GCPs数量的多项式。
-tps
- 允许根据已有的GCPs使用薄板内插转换方法。可以用这个来替代-order参数。
-et err_threshold
- 转换的错误临界的近似值。(以象元单位- 默认到0.125)
-te xmin ymin xmax ymax
- 设置被创建的输出文件的地理边界范围
-tr xres yres
- 设置输出文件分辨率(单位以目标地理参考为准)
-ts width height
- 设置输出文件大小(以行列多少象元计量)
-wo "NAME=VALUE"
- 设置绑定参数。GDALWarpOptions::papszWarpOptions 不会显示所有的参数,多个-wo参数可以并列。
-ot type
- 设置输出波段的数据类型。
-wt type
- 工作的象元数据类型。包括在源图像和目标图像缓冲中的象元数据类型。
-rn
- 用最临近发进行重采样(默认,最快,但是内插质量最差)
-rb
- 用双线性法进行重采样
-rc
- 用立方体发进行重采样
-rcs
- 用立方曲线发进行重采样(最慢的方法)
-srcnodata value [value...]
- 设置输入波段的无意义值掩膜(如果设置多个值,就可以支持每个波段设一个)。如果有多个值,就需要把他们用双引号括起来,以保持在命令参数中作为单一参数输入。掩膜值不会在内插中处理。
-dstnodata value [value...]
- 设置输出波段的无意义值掩膜(可以参考上面)。注意,如果可能的化,新的文件将初始化这个值,并记录在输出文件中。
-wm memory_in_mb
- 设置内存总量(以兆字节为单位),如果绑定API允许使用高速缓存。
-multi
- 使用多线程绑定实现。多线程将被用来处理打快的图像并同时处理输入输出操作。
-q
- 不打印输出。
-of format
-
选择输出格式,默认是GeoTiff
-co "NAME=VALUE"
- 通过一个创建参数来控制创建新的文件。多个'-co'可以排列起来使用。参数可用的值可以察看每个驱动。
srcfile
- 源文件名
dstfile
- 目标文件名
如果输出文件已经存在,则在已存在的文件中创建地图集。
例子:
一个带有用经纬度标记的边界控制点的8位GeoTiff格式的Spot影像可以通过下面的命令绑定到一个UTM投影上。
gdalwarp -t_srs '+proj=utm +zone=11 +datum=WGS84' raw_spot.tif utm11.tif
一个带有用经纬度标记的边界控制点的两个波段的HDF格式的ASTER影像可以通过下面的命令绑定到UTM投影上。
gdalwarp HDF4_SDS:ASTER_L1B:"pg-PR1B0000-2002031402_100_001":2 pg-PR1B0000-2002031402_100_001_2.tif