gdalwarp:变形工具
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)
注意:如果效率不够,可以尝试使用gdal_merge.py。使用vrt也可以提高效率。
注意:如果输入文件分辨率不同,默认按照最高分辨率进行重采样。
注意:如果使用vrt文件,输入文件分辨率不同时,vrt默认使用平均分辨率。应该手动设置为最高分辨率。
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更改分辨率
-trxres yres。设置目标图像的分辨率。不可与-ts共存。
注意:使用vrt时,如果多个相同分辨率的输入图像,则合成时左上角不变,右下角会有一个像素(最终分辨率)的缩放。
注意:使用vrt时,(无论何种采样方法)右下角可能出现无值黑线。此时,可以使用-dstalpha将黑线部分透明(增加透明波段,文件体积增大25%)。
2.6 重采样
目的:更改原始图像的分辨率,并以指定重采样方法生成目标图像。
gdalwarp -ts –r :不会有黑线产生,但有可能缺少一个像素。推荐使用。
或gdalwarp –tr–r –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
转载于:https://www.cnblogs.com/Sonet-life/p/5867093.html
gdalwarp:变形工具相关推荐
- An工具介绍之宽度工具、变形工具与套索工具
文章目录 一.宽度工具 (1)新建舞台 (2)宽度工具 (3)作用 (4)线条填充拉伸 (5)区别 二.任意变形工具 (1)介绍 (2)改变大小 (3)改变倾斜方向 (4)水平翻转 (5)垂直翻转 三 ...
- php实现图片液化,图像变形算法:实现Photoshop液化工具箱中向前变形工具
很多时候,我们需要对一个图像的局部进行调整,这个调整必须是平滑的和可交互式的.Photoshop液化滤镜中向前变形工具就是这样一个工具,很好用.类似工具有美图秀秀的瘦脸功能.本文描述这类工具背后的原理 ...
- 实现Photoshop液化工具箱中向前变形工具
前段时间转载了http://blog.csdn.net/jia_zhengshen/article/details/11650461小铁的<实现Photoshop液化工具箱中的向前变形工具> ...
- 图像变形算法:实现Photoshop液化工具箱中向前变形工具
图像变形算法:实现Photoshop液化工具箱中向前变形工具 2009-12-11 21:44:56 阅读(444) 发表评论 很多时候,我们需要对一个图像的局部进行调整,这个调整必须是平滑的和可交互 ...
- 图像内容修改—操控变形工具的使用
今天,我们利用操控变形工具做一个好玩的东西,做一个动态感的跳动人物的图像 1.人物扣图 首先,我们利用魔棒等抠图工具将我们的跳动人物姿态扣选出来: 选中之后,我们进行反选,然后按Delete键将其他的 ...
- Photoshop“自由变形”工具(转)
Photoshop"自由变形"工具(转)[@more@] 在Photoshop(以下简称PS)中,我们常常碰到很多对象变形的需求,"自由变换"就是完成这一功能的 ...
- ai怎么让图片任意变形_Illustrator自由变形工具 AI里面把一些图形拼合到一起 快速定义渐变颜色 输出文件...
Illustrator自由变形工具 AI里面把一些图形拼合到一起 快速定义渐变颜色 输出文件 请教Illustrator/AI中自由变形工具的问题 在ai中如何用自由变形工具把一个矩形变成一个等腰梯形 ...
- 教你使用CDR变形工具制作螺旋绚丽特效
这篇文章主要为大家介绍了CDR变形工具绘制螺旋背景效果的方法,需要的朋友可以参考下 介绍CDR变形工具绘制螺旋背景效果的方法. 我们先来看看制作完成的效果图. 具体的绘制方法介绍如下: 第一步,画出一 ...
- PS进阶篇——如何PS软件液化之向前变形工具(九)
平时我们在处理人物照片的时候,经常会需要调整面部器官(眼睛/脸型/鼻子/嘴巴等),学会用液化,液化我常用的就是这个向前变形工具了. 最上面,我们来看下修前后对比图 是不是很好玩? 下面我讲解下如何做这 ...
最新文章
- python输入文字字符串、如何提取某个汉字_python提取字符串中的汉字数字字母
- 易语言操作mysql数据库
- Android常用权限
- [BZOJ3669] [NOI2004] 魔法森林 LCT维护最小生成树
- 粤西茂名实现光网全覆盖 智慧城市改变民众生活
- 求1!+2!+3!+....20!的值
- python中index方法详解_详解python中的index函数用法
- 经典同步问题一——生产者和消费者问题
- BZOJ5312 冒险 势能分析、线段树
- 易如意php,易如意网络验证系统1.1【开源】
- 计算机 控制面板都打不开怎么办,控制面板打不开怎么办?控制面板打开办法大全...
- JavaScript实现图结构
- 磁盘类型由动态转换成基本
- 判断一个链表是否为回文结构【Java实现】
- 电脑快捷键:Ctrl+26英文字母组合,新人必会!
- ASP.NET集成PayPal(使用IPN)
- 任天堂游戏 html5,任天堂:会让粉丝们在Switch上玩到《毁灭战士:永恒》
- body软件 human_人体系统女性3D软件破下载|人体系统女性3d专业中文版下载v1.0(Human body female)-乐游网安卓下载...
- 关于PLM/EVT/DVT/PVT/MP的解释
- 用Photoshop来找茬