gdal应用-gdalbuildvrt




gdal应用-gdalbuildvrt
sf2gis@163.com
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:可以被所有方法使用,用作中间文件时节省空间和时间 【gdal应用-gdalbuildvrt】目的:将多种类型的文件,合成一个文件使用。
原理:VRT使用一个XML文件,gdal读取并将多个文件动态合成。
方法:VRT可以读取所有GDAL支持的文件类型,也可以读取RAW文件。
VRT可以变换原始文件的几何和投影等所有信息。
注意:在分辨率不同的输出或都输入时,可能会出现少量无值黑线,此时只能使用warp。
示例:

440720.0, 60.0, 0.0, 3751320.0, 0.0, -60.0


Gray


"1">utm.tif

1

"0" yOff="0" xSize="512" ySize="512"/>





参考: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


    推荐阅读