gdal应用-gdalbuildvrt

gdal应用-gdalbuildvrt

[email protected]

2015年1月16日

1 gdalbuildvrt: 创建VRT(virtualgdal dataset)。

gdalbuildvrt [-tileindex field_name]
             [-resolution {highest|lowest|average|user}]
             [-te xmin ymin xmax ymax] [-tr xres yres] [-tap]
             [-separate] [-b band] [-sd subdataset]
             [-allow_projection_difference] [-q]
             [-addalpha] [-hidenodata]
             [-srcnodata "value [value...]"] [-vrtnodata "value [value...]"] 
             [-a_srs srs_def]
             [-input_file_list my_liste.txt] [-overwrite] output.vrt [gdalfile]*

注意:本方法自动进行overwrite

参考:http://www.gdal.org/gdalbuildvrt.html

1.1 VRT:可以被所有方法使用,用作中间文件时节省空间和时间

目的:将多种类型的文件,合成一个文件使用。

原理:VRT使用一个XML文件,gdal读取并将多个文件动态合成。

方法:VRT可以读取所有GDAL支持的文件类型,也可以读取RAW文件。

VRT可以变换原始文件的几何和投影等所有信息。

注意:在分辨率不同的输出或都输入时,可能会出现少量无值黑线,此时只能使用warp。

示例:

<VRTDataset rasterXSize="512" rasterYSize="512">
  440720.0, 60.0, 0.0, 3751320.0, 0.0, -60.0
  <VRTRasterBand dataType="Byte" band="1">
    Gray
    
      "1">utm.tif
      1
      "0" yOff="0" xSize="512" ySize="512"/>
      "0" yOff="0" xSize="512" ySize="512"/>
    
  VRTRasterBand>
VRTDataset>

参考:http://www.gdal.org/gdal_vrttut.html

2  应用

2.1 大量文件生成单一vrt文件

目的:将大量文件以文件名目录的方式生成一个vrt文件,用于其它操作时输入。

原理:将大量文件名生成一个vrt文件,gdal可以直接读取。

方法:gdalbuildvrt

-inputf_file_list 读入一个文件名,文件中每行代表一个栅格文件。

最后是输入的文件名。

输出文件是以.vrt结尾的文件。

示例:

D:\output\out>gdalbuildvrt j50c.vrt *.tif

gdalbuildvrt -input_file_list j50c4.txt j50c4.vrt

j50c4.txt

NJ50C004003_lonlat-L14.tif

NJ50C004004_lonlat-L14.tif

 

2.2 图像合并(Merge)/镶嵌(Mosaic)

目的:将多个图像合并为一幅图像。

原理:将多个源图像处理为一个VRT文件,将VRT文件转换为目标格式文件。

方法:gdalbuildvrt+gdal_translate

gdalbuildvrt

-resolution :设置输出文件分辨率的取值方法。

使用VRT能明显提高处理效率。

此方法需要分两步,首先将多个源文件合成为一个VRT文件。参见:大量文件生成单一vrt文件。

然后将VRT文件转换为目标格式的图像。参见:格式转换。

示例:

D:\output\out>gdalbuildvrt j50c.vrt *.tif

D:\output\out>gdal_translate -of GTiff j50c.vrttranslate.tif

也可以被gdalwarp使用

gdalwarp -of GTiff D:/output/getile/t.vrtD:/output/getile/t.tif

注意:如果输入文件分辨率不同,则进行重采样,生成统一分辨率的输出图像。默认使用平均分辨率。可以设定为最高、最低或用户定义分辨率。

注意:不同的分辨率的输入图像会产生半个像素左右的位移,对于高精度作业不适用。因此,本方法最适用于仅仅合成的情况。

注意:后加入的图像会覆盖先前的图像范围。(官方文档强调不能依赖于此)

示例:

gdalbuildvrt –resolution lowest l57.vrt 5-19-26.jpg 7-77-105.jpg

gdalbuildvrt -resolution highest 57.vrt 5-19-26.jpg7-77-105.jpg

2.3更改分辨率

目的:更改原始图像的分辨率。

原理:gdalbuildvrt 生成目标分辨率的vrt文件,使用gdal_translate生成tif文件。只能使用nearest方法。

方法:gdalbuildvrt

                        -trxres yres。设置目标图像的分辨率(地理坐标单位)。不可与-resolution共存。

注意:对于不同分辨率的输入图像,只能输出平均分辨率后的指定分辨率图像。无法与-resolution共存。

注意:对于相同分辨率的多个图像,无论缩小还是放大,都可能输出各种黑线。不推荐使用。

示例:

gdalbuildvrt -tr 0.005 0.005 output/7d.vrtdata/7/*.jpg

gdal_translate output/7d.vrt output/7d.tif

2.4 地理范围裁剪

目的:根据指定地理范围,获取源图像相应图像。

原理:gdalbuildvrt裁剪范围,gdal_translate转换为目标图像。

注意:此方法可以得到完美的输出范围,但是会将图像进行整体移动(一个像素以内),不推荐使用。

方法:gdalbuildvrt

-te xmin ymin xmax ymax:输出范围,输出图像将使用此范围,但是如果因为像素不能取整,则移动图像强行指定此范围。所以图像会变得不准确。

示例:

gdalbuildvrt -input_file_list Jlist.txt jlist.vrt

gdal_translate jlist.vrt jlist.tif

 


你可能感兴趣的:(GDAL/OGR)