GDAL应用

本文详细介绍了GDAL/OGR的功能和性能测试,包括gdalwarp的多线程、缓存性能,重采样方法比较,以及gdal_translate、gdal_merge.py的效率分析。强调了使用VRT提高处理效率,尤其是在批量文件处理和图像合并中的应用。测试结果显示,vrt文件在更改分辨率、图像合成和批量处理中表现优异,而gdal_translate在某些场景下也展现出高效性能。
摘要由CSDN通过智能技术生成

GDAL应用

sf2gis@163.com

2014年11月5日

2014年11月7日添加性能测试

2014年11月12日添加vrt、批量处理

2014年11月12日添加 格式转换

2014年11月13日添加定义坐标系统

2014年11月15日添加vrt合成及更改分辨率

2014年11月15日添加重采样方法测试

2014年11月18日增加gdal地理范围裁剪

2014年11月20日添加文件数量测试

1  GDAL/OGR总览

1.1 功能

GDAL

  • 使用 gdalinfo 浏览影象
  • 使用 gdal_translate 转换数据格式
  • 使用 gdalwarp 重投影
  • 使用 gdal_warp 或 gdal_merge.py 拼接影象
  • 使用 gdaltindex 生成作为栅格切片索引的 shp 文件

OGR

  • 使用 ogrinfo 浏览元数据
  • 使用 ogr2ogr 转换数据格式

 

参考:http://live.osgeo.org/zh/quickstart/gdal_quickstart.html

1.2 性能测试

1.2.1gdalwarp:多线程和缓存性能提升效果

gdalwarp:默认单线程性能最好。多线程无明显的提升(占用3个线程)。改变缓存空间大小会降低性能,并可能导致内存不足。双线性内插重采样较最邻近法重采样性能有所降低(7%)。投影降低性能21%左右。

gdal_merge.bat:性能好,仅需gdalwarp的21%。但只能使用最邻近法,无法更改重采样方法。

vrt文件能够有效的提高处理效率,可以被所有方法使用。

gdal_translate性能很好,配合vrt文件可以高效完成许多工作。

附:测试数据

输入580M*4,17477*11651

1.gdalwarp

single: start:2014-11-06 20:40:20 end:2014-11-06 20:53:52span= 14m

multi: start=2014-11-06 20:55:54 end= 2014-11-06 21:09:35span=14m

multi-wm1g: start=2014-11-06 21:10:23 end= 2014-11-0621:19:45 (error)span=9m

multi-wm300m:start=2014-11-0621:20:33 end=2014-11-06 21:44:55 span=24m

multi-wm500m: start=2014-11-06 21:45:51 end=2014-11-0622:08:26 span=23m

single: start=2014-11-06 22:09:08 end=2014-11-06 22:22:13span=13m

single-wm1g: start=2014-11-06 22:23:00 end=2014-11-0622:38:04 span=15m

merge-bi2(project):start=2014-11-0700:20:31 end=2014-11-07 00:37:36 span=17m

merge-bi3:start=2014-11-07 00:44:43 end=2014-11-07 00:59:17span=15m

 

2.merge

set OSGEO4W_ROOT=D:\Program Files (x86)\QGIS Chugiak

set PATH=%OSGEO4W_ROOT%\bin;%PATH%

SET PYTHONHOME=%OSGEO4W_ROOT%\apps\Python27

D:\output\out\J50>gdal_merge.bat -n 0 -a_nodata 0 -ofGTiff -o merge14.tif NJ50C003003_lonlat-L14.tif NJ50C003004_lonlat-L14.tifNJ50C004003_lonlat-L14.tif NJ50C004004_lonlat-L14.tif

start:2014-11-06 23:15:02 end:2014-11-06 23:18:12 span=3m

 

1.2.2改变分辨率方法测试

vrt+translate方法(参见:更改分辨率)比直接使用gdal_translate设置分辨率(参见:改变分辨率/缩放)效率高15%以上,比使用目标分辨率vrt和nearest的gdalwarp提高75%以上(参见:更改分辨率),比使用源分辨率vrt和nearest的gdalwarp提高95%,比使用目标分辨率和bilinear的gdalwarp提高87%(此种方法无实际意义,不会使用源数据进行重采样)。

附:测试结果

vrt.bat

@echo start=%time%

gdalbuildvrt j50-zoomin.vrt j50/*.jpg -tr 0.00001 0.00001

gdal_translate j50-zoomin.vrt j50-zoomin.tif

@echo end=%time%

D:\output\getile>D:/vrt.bat

start= 0:14:24.78

D:\output\getile>gdalbuildvrt j50-zoomin.vrt j50/*.jpg -tr0.00001 0.00001

D:\output\getile>gdal_translate j50-zoomin.vrtj50-zoomin.tif

end= 0:15:03.34

 

translate.bat

@echo start=%time%

gdalbuildvrt j50.vrt j50/*.jpg

gdal_translate -outsize 26367 25269 j50.vrt j50-translate.tif

@echo end=%time%

D:\output\getile>D:/translate.bat

start= 0:15:56.91

D:\output\getile>gdalbuildvrt j50.vrt j50/*.jpg

D:\output\getile>gdal_translate -outsize 26367 25269j50.vrt j50-translate.tif

end= 0:16:26.94

 

vrt-warp.bat

@echo start=%time%

gdalbuildvrt j50-zoomin.vrt j50/*.jpg -tr 0.00001 0.00001

gdalwarp j50-zoomin.vrt j50-zoomin.tif

@echo end=%time%

D:\output\getile>D:/vrt-warp.bat

start= 0:37:49.00

D:\output\getile>gdalbuildvrt j50-zoomin.vrt j50/*.jpg -tr0.00001 0.00001

D:\output\getile>gdalwarp j50-zoomin.vrt j50-zoomin.tif

end= 0:39:30.37

 

warp.bat

@echo start=%time%

gdalbuildvrt j50.vrt j50/*.jpg

gdalwarp -tr 0.00001 0.00001 j50.vrt j50-warp.tif

@echo end=%time%

D:\output\getile>D:/warp.bat

start= 0:52:06.31

D:\output\getile>gdalbuildvrt j50.vrt j50/*.jpg

D:\output\getile>gdalwarp -tr 0.00001 0.00001 j50.vrtj50-warp.tif

end= 1:00:29.96

 

resample.bat

@echo start=%time%

gdalbuildvrt j50-zoomin.vrt j50/*.jpg -tr 0.00001 0.00001

gdalwarp -r bilinear j50-zoomin.vrt j50-zoomin.tif

@echo end=%time%

D:\output\getile>D:/resample.bat

start= 1:01:18.61

D:\output\getile>gdalbuildvrt j50-zoomin.vrt j50/*.jpg -tr0.00001 0.00001

D:\output\getile>gdalwarp -r bilinear j50-zoomin.vrtj50-zoomin.tif

end= 1:04:34.90

1.2.3重采样方法测试

设置重采样只能使用gdalwarp,并且在gdalwarp方法中同时设置分辨率和采样方法才有效。

使用vrt设置分辨率,再设置gdalwarp的方法是错误的。

附:测试结果

resapmle-merge.bat

@echo start=%time%

gdalbuildvrt -overwrite j50-zoomin.vrt j50/*.jpg

gdalwarp -overwrite -r bilinear -tr 0.00001 0.00001j50-zoomin.vrt j50-resample-warpmerge.tif

@echo end=%time%

D:\output\getile>D:\resample-merge.bat

start=11:14:24.53

D:\output\getile>gdalbuildvrt -overwrite j50-zoomin.vrtj50/*.jpg

D:\output\getile>gdalwarp -overwrite -r bilinear -tr0.00001 0.00001 j50-zoomin.vrt j50-resample-warpmerge.tif

end=11:15:39.09

 

vrt-warp.bat

@echo start=%time%

gdalbuildvrt -overwrite j50-zoomin.vrt j50/*.jpg -tr 0.000010.00001

gdalwarp -overwrite j50-zoomin.vrt j50-warpmerge.tif

@echo end=%time%

D:\output\getile>D:\vrt-warp.bat

start=11:16:41.18

D:\output\getile>gdalbuildvrt -overwrite j50-zoomin.vrtj50/*.jpg -tr 0.00001 0.00001

D:\output\getile>gdalwarp -overwrite j50-zoomin.vrtj50-warpmerge.tif

end=11:17:23.94

 

resample.bat

@echo start=%time%

gdalbuildvrt -overwrite j50-zoomin.vrt j50/*.jpg -tr 0.000010.00001

gdalwarp -overwrite -

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弗里曼的小伙伴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值