gdal应用-gdalwarp_gdal.translate 透明-程序员宅基地

技术标签: GDAL/OGR  GDAL  应用  

gdal应用-gdalwarp

[email protected]

2015年1月16日

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]
    [-ovr level|AUTO|AUTO-n|NONE] [-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]
    [-nomd] [-cvmd meta_conflict_value] [-setci] [-oo NAME=VALUE]*
    srcfile* dstfile

 

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

1.1 提高效率和精确度方法

目标:提高warp的执行效率。

原理:

主要是调整一样变形参数,在-wo、-co中设置。

设置INIT_DEST :INIT_DEST=[value]or INIT_DEST=NO_DATA表示初始化目标文件,如果不设置,则读取源文件并覆盖。

设置多线程数:NUM_THREADS(>=1.10),NUM_THREADS=N表示使用的线程数,如果N=ALL_CPUS则使用全部CPU。

增加缓存大小:GDAL_CACHEMAX:用于IO的缓存大小,越大则读写越快;-wm:用于中间操作缓存,越大则单次处理的数据量越大,但是如果每次处理的数据都很小,还是会按此值进行单次读写,所以会导致效率变慢,此值应该视情况设定。

提高精确度:-co TILED=YES,在输出为GeoTiff时,如果设置TILED表示将整个图形由不同的块组成;如果不设置,则默认将整个图形由单一样条组成(strip)组成;块的精度比单一样条高。官方建议尽量使用此选项。

参考:http://en.wikipedia.org/wiki/Tagged_Image_File_Format

http://trac.osgeo.org/gdal/wiki/UserDocs/GdalWarp#GeoTIFFoutputUse-coTILEDYESwhenpossible

方法:

gdalwarp

-wo set a warp option.可以有多个-wo。

示例:

gdalwarp world_4326.tif out.tif -t_srs EPSG:3857-overwrite –wo NUM_THREADS=4-wm 512

参考:

http://www.gdal.org/structGDALWarpOptions.html#a0ed77f9917bb96c7a9aabd73d4d06e08

http://lists.osgeo.org/pipermail/gdal-dev/2013-January/035217.html

http://trac.osgeo.org/gdal/wiki/FAQRaster#Howtoimprovegdalwarpperformance

2 应用

2.1 坐标系统变换/投影变换

目的:根据源图像和源坐标系统,输出指定坐标系统的目标图像。

原理:根据源坐标系统和目的坐标系统之间的数学关系,对源图像进行逐点重新采样,生成目标图像。

方法:gdalwarp(直接投影效率很高)

-overwrite 如果目标图像已经存在,则重写(覆盖)。

-s_srs 源坐标系统

-t_srs 目标坐标系统。可以识别EPSG、PROJ4或者wkt的prj文件。

-r 重采样方法near:最邻近值(默认,最快,质量差),bilinear:双线性内插(用的较多),Cubic:三次方,Cubic Spline:三次样条,Lanczos,Average,mode:出现次数最多。

-wm warp caching memory,缓存大小(单位:MB)

-ts target size,目标图像大小,格式:宽高,单位(像素)。不能与-tr共存。

-multi 多线程

-dstnodata 目标图像无值时填充值

-q quiet 不显示进度等处理信息

-cutline 指定裁剪的mask矢量图层

-dstalpha 指定透明通道,对于无数据值的像素设置为透明。

-of output format,指定输出目标图像格式。默认为GeoTiff(GTiff)。

最后两个参数分别是源图像和目标图像。

注意:如果要设置-te,制定输出图像的范围,则使用的是输出图像的坐标系统。如果要使用输入图像的坐标系统,则应该在投影之前生成规定范围的输入图像。

注意:如果在输出图像中不希望看到黑边(因为图像变形,产生扇形图像,最是会出现无值部分),可以设置-dstalpha使无值部分透明。

注意:如果使用vrt对不同分辨率图像先进行合成,再投影,有可能出现多个黑线(在图像中间)。生成这种问题的原因可能是由于分块重采样进行投影,但是double精度不足,造成合成时出现无值黑线。解决的方法是先合成独立图像,再进行投影。

示例:

gdalwarp -overwrite -s_srs EPSG:4326 -t_srsEPSG:32650 -r bilinear -wm 20 -ts 3000 3000 -multi -dstnodata 0 -q -cutlineD:/qgis-ppt/grid/grid-polygon.shp -dstalpha -of GTiffD:/qgis-ppt/timeextent/Korea/Korea.png D:/qgis-ppt/timeextent/Korea/ttttt.tif

示例:proj4格式的坐标系统:

gdalwarp -overwrite -s_srs EPSG:4326 -t_srs"+proj=longlat +a=6378137.0000 +rf=298.2572221010000 +towgs840,0,0,0,0,0,0 +no_defs"

 

2.2 矢量裁剪

目的:根据指定的矢量图形,输出源图像的相应图像。

原理:根据指定的矢量范围(Rectangle),对源图像进行逐点重新采样,Rectangle中无矢量的部分为无数据,有矢量的部分为源图像数据,以此生成目标图像。

方法:gdalwarp

参见:投影

-crop_to_cutline 将目标图像的范围指定为cutline 矢量图像的范围。

示例:

gdalwarp -dstnodata 0 -q –cutline D:/qgis-ppt/vector-cut/cutpolygon.shp-crop_to_cutline -dstalpha -of GTiff D:/qgis-ppt/timeextent/Korea/test.tifD:/qgis-ppt/vector-cut/clipper-poly-alpha.tif

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

目的:将多个图像合并输出到目标图像。

原理:通过复制原始图像(或者重采样之后再复制)到目标图像。

方法:gdalwarp

输入图像为多个,最后一个为输出图像。

注意:如果效率不够,可以尝试使用gdal_merge.py。使用vrt也可以提高效率。

注意:后加入的图像会覆盖先前的图像范围。

注意:如果输入文件分辨率不同,默认按照最高分辨率进行重采样。

注意:如果使用vrt文件,输入文件分辨率不同时,vrt默认使用平均分辨率。应该手动设置为最高分辨率。

示例:

gdalwarp -s_srs EPSG:4326 -t_srs EPSG:4326 -of GTiffD:/qgis-ppt/mosaic/J1.tif D:/qgis-ppt/mosaic/J2.tif D:/qgis-ppt/mosaic/J3.tifD:/qgis-ppt/mosaic/J4.tif D:/qgis-ppt/mosaic/merge4_by_warp.tif

示例:覆盖测试

gdalwarp 5-19-26.jpg 7-77-105.jpg 57.tif

gdalwarp 7-77-105.jpg 5-19-26.jpg 75.tif

2.4 地理范围裁剪

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

原理:根据指定的地理范围,从源图像的中copy数据到目标图像。

注意:此方法与gdalbuildvrt结果相似,会更改地图范围(进行重采样)。

注意:使用vrt时,如果在输入文件分辨率不同时,结果可能出现多条黑线(因为分块进行合成,各块均进行偏移,导致部分范围无数据)。如果分辨率不同,只能先进行合成,再使用translate进行裁剪。

方法:gdalwarp

                        -texmin ymin xmax ymax。设置目标坐标系统的范围。

示例:

gdalwarp -s_srs EPSG:4326 -t_srs EPSG:4326 -te114.01 39.97 114.03 39.99 -of GTiff -of GTiff D:/qgis-ppt/mosaic/J1.tifD:/qgis-ppt/mosaic/J2.tif D:/qgis-ppt/mosaic/J3.tif D:/qgis-ppt/mosaic/J4.tifD:/qgis-ppt/mosaic/mcp.tif

2.5更改分辨率

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

原理:重新采样后,复制到目标图像。

方法:gdalwarp

                        -trxres yres。设置目标图像的分辨率。不可与-ts共存。

注意:使用vrt时,如果多个相同分辨率的输入图像,则合成时左上角不变,右下角会有一个像素(最终分辨率)的缩放。

注意:使用vrt时,(无论何种采样方法)右下角可能出现无值黑线。此时,可以使用-dstalpha将黑线部分透明(增加透明波段,文件体积增大25%)。

示例:

gdalwarp -s_srs EPSG:4326 -t_srs EPSG:4326 -te114.01 39.97 114.03 39.99 -tr 0.000021457672119 -0.000021457672119 -of GTiff D:/qgis-ppt/mosaic/J1.tifD:/qgis-ppt/mosaic/J2.tif D:/qgis-ppt/mosaic/J3.tif D:/qgis-ppt/mosaic/J4.tifD:/qgis-ppt/mosaic/mcp-tr.tif

2.6 重采样

目的:更改原始图像的分辨率,并以指定重采样方法生成目标图像。

原理:对原始图像逐像素重采样,生成目录图像。

方法:

gdalwarp -ts –r :不会有黑线产生,但有可能缺少一个像素。推荐使用。

或gdalwarp –tr–r –dstalpha :可能有黑线产生。不推荐使用。

-dstalpha使黑线透明。

示例:

gdalwarp  -rbilinear -dstalpha -tr 0.0006 0.0006 output/mix-res.vrt output/mix.tif

gdalwarp  -rbilinear -dstalpha –ts 300 300output/mix-res.vrt output/mix.tif

2.7 输出选项:worldfile+压缩格式+输出格式

压缩格式和worldfile等输出选项都与输出格式相关联,需要在输出格式中指定co(create operateion)选项。

注意:GeoTiff的JPEG压缩与-dstalpha无法共存。

2.7.1输出GeoTiff+TFW+JPEG压缩:

目的:输出带有worldfile(TFW)的,经过压缩的tiff文件。

方法:gdalwarp

–co TFW=YES 输出WORLDFILE文件

–co COMPRESS=JPEG 使用JPEG压缩,支持以下压缩格式:[JPEG/LZW/PACKBITS/DEFLATE/CCITTRLE/CCITTFAX3/CCITTFAX4/NONE],在使用JPEG时,可以设置压缩率(-co JPEG_QUALITY=[1-100]),默认是75%。

–co TILED=YES 使用分块混合,如果不设置则默认使用strip。

示例:

gdalwarp -co TFW=YES -co COMPRESS=JPEG -coTILED=YES output/12.vrt output/12.tif

2.7.2输出JPEG+Wld+75%压缩率:

目的:输出JPEG格式文件,并且要带有worldfile(.wld)文件。

原理:JPEG不能直接由Warp生成,需要先由warp生成geotiff,然后由translate转化为jpeg。

方法:gdalwarp –of VRT 生成vrt格式的中间文件,再由

gdal_translate –of JPEG生成JPEG格式的输出文件,-co WORLDFILE=YES输出worldfile文件,-quality=【10-100】可以设置压缩率(超过95%则无法提高品质,只会增加文件大小),默认是75%。

示例:

gdalwarp -of VRT output/12.vrt output/12-3.vrt

gdal_translate -of JPEG -co WORLDFILE=YESoutput/12-3.vrt output/12-3.jpg

2.8 内存溢出的解决方案:ERROR2: Out of memory allocating 365425784 byte destination buffer.

32系统存在2G内存上限,但可能产生很多内存碎片。这些碎片使程序无法申请到大块内存。这种情况下,应该减少缓存值,或者使用64位程序或者不使用--config GDAL_CACHEMAX xxx -wm xxx这两个选项。

参考:http://trac.osgeo.org/gdal/wiki/UserDocs/GdalWarp#Errorallocatingmemory

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sf2gis2/article/details/44774757

智能推荐

http隧道 java_使用java语言实现http隧道技术-程序员宅基地

文章浏览阅读119次。该楼层疑似违规已被系统折叠隐藏此楼查看此楼/***Getaparametervalue**@paramkeyString*@paramdefString*@returnString*/publicStringgetParameter(Stringkey,Stringdef){returnisStandalone?System.getProperty(ke..._java http隧道

Keepalived高可用+邮件告警_keepalived sendmail-程序员宅基地

文章浏览阅读913次。IP主机名备注192.168.117.14keepalived-master主节点192.168.117.15keepalived-slaver备节点192.168.117.100VIP1.主备节点均安装keepalived# yum install -y keepalived httpd2.主备节点均修改keepalived日志存放路径..._keepalived sendmail

SPFILE 错误导致数据库无法启动(ORA-01565)_ora01565 ora27046-程序员宅基地

文章浏览阅读469次。--==========================================--SPFILE错误导致数据库无法启动(ORA-01565)--========================================== SPFILE错误导致数据库无法启动 SQL> startup ORA-01078: failurein proce_ora01565 ora27046

功能测试基础知识(1)-程序员宅基地

文章浏览阅读6.1k次,点赞2次,收藏54次。功能测试基础知识总结_功能测试

postgresql 中文排序_pg中文排序-程序员宅基地

文章浏览阅读3.2k次,点赞3次,收藏2次。pg 中文首字母排序_pg中文排序

[Mysql] CONVERT函数_mysql convert-程序员宅基地

文章浏览阅读3.1w次,点赞23次,收藏109次。本文主要讲解CONVERT函数_mysql convert

随便推点

HTML5与微信开发(2)-视频播放事件及API属性_微信开发者工具视频快进-程序员宅基地

文章浏览阅读8.6k次,点赞2次,收藏2次。HTML5 的视频播放事件想必大家已经期待很久了吧,在HTML4.1、4.0之前我们如果在网页上播放视频无外乎两种方法: 第一种:安装FLASH插件或者微软发布的插件 第二种:在本地安装播放器,在线播放组件之类的 因为并不是所有的浏览器都安装了FLASH插件,就算安装也不一定所有的都能安装成功。像苹果系统就是默认禁用FLASH的,安卓虽然一开始的时候支持FLASH,但是在安卓4.0以后也开始不_微信开发者工具视频快进

JedisConnectionException Connection Reset_jedisconnectionexception: java.net.socketexception-程序员宅基地

文章浏览阅读5.4k次,点赞3次,收藏4次。在使用redis的过程常见错误总结1.JedisConnectionException Connection Reset参考这边文章:Connection reset原因分析和解决方案https://blog.csdn.net/cwclw/article/details/527971311.1问题描述Exception in thread "main" redis.clients...._jedisconnectionexception: java.net.socketexception: connection reset

Lua5.3版GC机制理解_lua5.3 gc-程序员宅基地

文章浏览阅读8.3k次,点赞8次,收藏42次。目录1.Lua垃圾回收算法原理简述2.Lua垃圾回收中的三种颜色3.Lua垃圾回收详细过程4.步骤源码详解4.1新建对象阶段4.2触发条件4.3 GC函数状态机4.4标记阶段4.5清除阶段5.总结参考资料lua垃圾回收(Garbage Collect)是lua中一个比较重要的部分。由于lua源码版本变迁,目前大多数有关这个方面的文章都还是基于lua5.1版本,有一定的滞后性。因此本文通过参考当前..._lua5.3 gc

手机能打开的表白代码_能远程打开,各种手机电脑进行监控操作,最新黑科技...-程序员宅基地

文章浏览阅读511次。最近家中的潮人,老妈闲着没事干,开始学玩电脑,引起他的各种好奇心。如看看新闻,上上微信或做做其他的事情。但意料之中的是电脑上会莫名出现各种问题?不翼而飞的图标?照片又不见了?文件被删了,卡机或者黑屏,无声音了,等等问题。常常让她束手无策,求助于我,可惜在电话中说不清,往往只能苦等我回家后才能解决,那种开心乐趣一下子消失了。想想,这样也不是办法啊, 于是,我潜心寻找了两款优秀的远程控制软件。两款软件...

成功Ubuntu18.04 ROS melodic安装Cartograhper+Ceres1.13.0,以及错误总结_ros18.04 安装ca-程序员宅基地

文章浏览阅读1.8k次。二.初始化工作空间三.设置下载地址四.下载功能包此处可能会报错,请看:rosdep update遇到ERROR: error loading sources list: The read operation timed out问题_DD᭄ꦿng的博客-程序员宅基地接下来一次安装所有功能包,注意对应ROS版本 五.编译功能包isolated:单独编译各个功能包,每个功能包之间不产生依赖。编译过程时间比较长,可能需要几分钟时间。此处可能会报错:缺少absl依赖包_ros18.04 安装ca

Harbor2.2.1配置(trivy扫描器、镜像签名)_init error: db error: failed to download vulnerabi-程序员宅基地

文章浏览阅读4.1k次,点赞3次,收藏7次。Haobor2.2.1配置(trivy扫描器、镜像签名)docker-compose下载https://github.com/docker/compose/releases安装cp docker-compose /usr/local/binchmod +x /usr/local/bin/docker-composeharbor下载https://github.com/goharbor/harbor/releases解压tar xf xxx.tgx配置harbor根下建立:mkd_init error: db error: failed to download vulnerability db: database download

推荐文章

热门文章

相关标签