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.htmlhtml
目標:提升warp的執行效率。sql
原理:express
主要是調整同樣變形參數,在-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)組成;塊的精度比單同樣條高。官方建議儘可能使用此選項。ui
參考:http://en.wikipedia.org/wiki/Tagged_Image_File_Formatspa
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
目的:根據源圖像和源座標系統,輸出指定座標系統的目標圖像。
原理:根據源座標系統和目的座標系統之間的數學關係,對源圖像進行逐點從新採樣,生成目標圖像。
方法: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"
目的:根據指定的矢量圖形,輸出源圖像的相應圖像。
原理:根據指定的矢量範圍(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
目的:將多個圖像合併輸出到目標圖像。
原理:經過複製原始圖像(或者重採樣以後再複製)到目標圖像。
方法: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
目的:根據指定地理範圍,獲取源圖像相應圖像。
原理:根據指定的地理範圍,從源圖像的中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
目的:更改原始圖像的分辨率。
原理:從新採樣後,複製到目標圖像。
方法: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
目的:更改原始圖像的分辨率,並以指定重採樣方法生成目標圖像。
原理:對原始圖像逐像素重採樣,生成目錄圖像。
方法:
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
壓縮格式和worldfile等輸出選項都與輸出格式相關聯,須要在輸出格式中指定co(create operateion)選項。
注意:GeoTiff的JPEG壓縮與-dstalpha沒法共存。
目的:輸出帶有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
目的:輸出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
32系統存在2G內存上限,但可能產生不少內存碎片。這些碎片使程序沒法申請到大塊內存。這種狀況下,應該減小緩存值,或者使用64位程序或者不使用--config GDAL_CACHEMAX xxx -wm xxx這兩個選項。
參考:http://trac.osgeo.org/gdal/wiki/UserDocs/GdalWarp#Errorallocatingmemory