Questions tagged «gdalwarp»

地理空间数据抽象库(GDAL)图像镶嵌,重新投影和变形实用程序。

5
如何通过切割180子午线将栅格从0 360重新投影到-180 180
我有一个Geotiff栅格图像,它的坐标系的纬度从0到360。图像的水平中心是180度。见下图: 我想将其转换为经度范围为-180 180的EPSG:4326 SRS。我希望图像的中心位于格林威治子午线(0)。我想这个SRS用途非常广泛。我希望结果看起来像这样: 因此,我使用gdalwarp命令重新投影: gdalwarp -s_srs '+proj=latlong +datum=WGS84 +pm=180dW' -t_srs EPSG:4326 test_col.tif test_4326.tif 但是我只会看到尺寸更大(像素更多)和EPSG:4326元数据的tiff。图像本身看起来与初始图像相同。但我希望它能交换半球。 问题是-如何将图像的经度严格调整为-180 180 EPSG:4326,且中心在0度的经度? 这是我的初始文件的gdalinfo: Origin = (-0.102272598067084,89.946211604095552) Pixel Size = (0.204545196134167,-0.204423208191126) Metadata: AREA_OR_POINT=Area Image Structure Metadata: INTERLEAVE=BAND Corner Coordinates: Upper Left ( -0.1022726, 89.9462116) ( 0d 6' 8.18"W, 89d56'46.36"N) Lower Left ( -0.1022726, -89.9462116) ( …

3
gdalwarp cutline和shapefile
我正在尝试根据shapefile几何形状裁剪我的Raster文件。我正在使用以下代码 gdalwarp -cutline INPUT.shp INPUT.tif OUTPUT.tif 但这会在shapefile几何图形范围之外产生黑色。我在这里举个例子。在我要剪切的第一个图像中。第二个图像是结果栅格,但我想要第三个栅格,其中几何图形的外部为空。 第一张图片:INPUT Raster 第二张图片:OUTPUT Raster 第三张图片:我想要这样的输出
26 gdal  gdalwarp 

1
使用gdal Python绑定复制gdalwarp的结果
我正在尝试使用GDAL python绑定进行重新投影/重新采样,但是与命令行实用程序相比,得到的结果略有不同gdalwarp。 请参阅下面的更新以获取更短的示例 此脚本说明了Python方法: from osgeo import osr, gdal import numpy def reproject_point(point, srs, target_srs): ''' Reproject a pair of coordinates from one spatial reference system to another. ''' transform = osr.CoordinateTransformation(srs, target_srs) (x, y, z) = transform.TransformPoint(*point) return (x, y) def reproject_bbox(top_left, bottom_right, srs, dest_srs): x_min, y_max = top_left …
20 python  gdal  gdalwarp  numpy 

1
文件大小膨胀是否与gdalwarp正常?
在使用gdalwarp(通过-tap)投影并对齐到栅格后,我注意到输出栅格比原始栅格大得多。相当彻底的网络搜索发现了Trac问题: 弗兰克·沃默丹(Frank Warmerdam)解释了原因: “经过仔细检查,所讨论文件的不同之处在于,gdal_translate使用TIFFWriteScanline()接口从GTiffDataset :: CreateCopy?()内部写入输出文件,而这仅写入了最后一个'strip'完整的图像区域所需的文件。但是gdalwarp会通过blockio接口,该接口会写入完整的最终条带,甚至是掉落到文件末尾的部分。” 但是,此Trac问题gdalwarp已有7年之久了,我知道GDAL实用程序已经进行了一些更改。我想知道上述推理是否仍然成立,我看到的文件大小膨胀是否“正常”。此处的“正常”一词可能表示意料之中或意料之中,但更重要的是:是否可以采取任何措施来减轻这种影响,即减小输出栅格文件的大小?下表是我遇到的文件大小膨胀的表。 Input File Size (bytes) Output File Size (bytes) Inflation 1437380431 1698334217 18% 1428001178 1698334433 19% 41683165 137036637 228% 输入的TIFF文件是在ArcGIS中创建的,因此具有外部Worldfile,XML和DBF文件,但是这些文件并不能弥补文件大小的差异。这是一个示例gdalwarp调用,因为我在所有这些情况下都使用过它。实际执行由Python subprocess(subprocess.Popen)处理: $ gdalwarp -tap -tr 30 30 -t_srs "+proj=aea +lat_1=20 +lat_2=60 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs" -co "COMPRESS=LZW" input_file.tif output_file.tif 我知道在极少数情况下,压缩会产生更大的文件,但是在不使用LZW压缩的情况下,效果是相同的。表中的比率为LZW压缩率。

3
gdalwarp和gdal_merge进行镶嵌有什么区别
我想合并约20个dem转换,每个约100MB,而我使用了gdalwarp(我知道虚拟文件选项): gdalwarp $(list_of_tiffs) merged.tiff 但是,此命令花费的时间很长,大约15分钟后,它正在处理集合中的第5张图像。我终止它。 然后,我发现gdal_merge.py脚本也可以用于镶嵌,并尝试了它: gdal_merge.py $(list_of_tiffs) 不到3分钟即可完成。 正如我期望的那样,两个命令将产生相同的结果,我想知道两者之间的区别是什么,如果结果相同,为什么gdalwarp需要这么多时间?

3
Gdal:用另一个栅格裁剪一个栅格
我正在编写一个简单的实用程序,将一批多波段Geotiff栅格文件裁剪到相同(较小)的区域。使用gdalwarp,我可以使用单多边形剪切shapefile轻松裁剪文件: gdalwarp -cutline clipper.shp -crop_to_cutline input.tif output.tif 但是,我要裁剪的实际区域将始终始终由另一个geotiff栅格文件而不是shapefile定义。如果可以将栅格的范围用作剪切文件,那将很好,但是我不确定如何执行此操作。毫不奇怪,以下代码不起作用(它不会引发错误,它只会产生任何东西): gdalwarp -cutline clipper.tif-crop_to_cutline input.tif output.tif 所以,我的问题是,有没有办法提供栅格gdalwarp -cutline?或者,是否还有另一个gdal函数可以使用另一个栅格裁剪一个栅格?如果这两种方法均不可行,是否有一种非常简单的方法来生成具有由栅格范围定义的单个多边形的shapefile? 这段代码将包装在更广泛的python脚本中,因此我可以使用命令行gdal实用程序或gdal的任何python绑定。 作为附带说明,我知道我可以轻松地制作一个裁剪shapefile,以覆盖我在QGIS中的栅格范围。如果找不到简单的解决方案,我可能会这样做,但是最终,作为大型自动化分析的一部分,我最终将在数十个甚至数百个区域中使用此实用程序,因此我不希望乏味即使非常简单,也可以手动执行。
14 python  raster  gdal  clip  gdalwarp 

3
如何在QGIS 3.0中编辑GDAL / OGR控制台调用?
在QGIS 2.XX中,下拉菜单栏工具的底部有一个可编辑的呼叫框,可以在其中手动输入gui中不可用的命令(单击铅笔按钮)。在3.0中,菜单栏工具与处理工具箱中的GDAL工具相同,这更有意义,但是现在我看不到向工具操作添加简单命令的方法。我附带的示例是该warp (reproject)工具,我希望添加命令“ -wo CUTLINE_ALL_TOUCHED=TRUE”。我怎么做?
13 gdalwarp  qgis-3 

1
PyQGIS将栅格另存为渲染图像,然后在其上使用GDAL工具
我尝试使用QGis的“将栅格保存为渲染图像”中的代码。i是栅格图层: pipelayer = i pipeextent = pipelayer.extent() pipewidth, pipeheight = (pipelayer.width(), pipelayer.height()) piperenderer = pipelayer.renderer() pipeprovider = pipelayer.dataProvider() crs = pipelayer.crs().toWkt() pipe = QgsRasterPipe() pipe.set(pipeprovider.clone()) pipe.set(piperenderer.clone()) pipedFile = os.path.join(tempfile.gettempdir(), safeLayerName + '_pipe.tif') print pipedFile file_writer = QgsRasterFileWriter(pipedFile) file_writer.writeRaster(pipe, pipewidth, pipeheight, pipeextent, pipelayer.crs()) in_raster = pipedFile prov_raster = os.path.join(tempfile.gettempdir(), 'json_' + …

1
用gdal拼接图像时能否保留褪色的alpha图层?
我正在用gdal镶嵌一些图像,并想通过朝每个图像的边缘使用淡入/渐变Alpha层来消除马赛克中间的尖锐边缘来改善最终结果。我遇到的问题是,每个带有渐变Alpha层的图像的一部分在最终的镶嵌图中都将其下方的图像掩盖了,而不是半透明的,如下所示: 理想情况下,我希望使用这种渐变透明度将一张图像逐渐淡入另一张图像。 我执行的生成镶嵌的步骤如下: 将gcps添加到原始图像以对其进行地理位置定位和正确定向(依次对每个图像进行处理): gdal_translate -of GTiff -a_srs EPSG:4326 -a_srs EPSG:4326 -gcp 1616 0 -88.2728612066 40.5175787437 -gcp <etc., etc.> <original_image_with_gradual_alpha>.tif <image_with_gradual_alpha_and_gcps>.tif 将图像扭曲到正确定向的新geotiff(依次对每个图像执行): gdalwarp -s_srs EPSG:4326 -t_srs EPSG:4326 -dstnodata 0 <image_with_gradual_alpha_and_gcps>.tif <warped_geotiff_with_alpha>.tif 将所有变形的图像合并到一个马赛克中: gdalbuildvrt -srcnodata 0 mosaic.vrt <warped_geotiff_with_alpha_root>*.tif gdal_translate mosaic.vrt mosaic.tif 我链接的图像是mosaic.tif。 gdalinfo提供样本输入文件: Driver: GTiff/GeoTIFF Files: dsc00562.tif Size is 1616, 1080 …

4
如何停止gdalwarp在日期线附近创建世界范围的输出?
我正在使用gdalwarp在日期线附近(即180°,又称antimeridian)操纵SRTM磁贴。SRTM磁贴与子午线的重叠非常小(1/2像素)。您可以使用gdalinfo查看此内容: gdalinfo S16W180.hgt Driver: SRTMHGT/SRTMHGT File Format Files: S16W180.hgt Size is 1201, 1201 [...] Lower Left (-180.0004167, -16.0004167) (180d 0' 1.50"W, 16d 0' 1.50"S) Upper Right (-178.9995833, -14.9995833) (178d59'58.50"W, 14d59'58.50"S) [...] 因此,源跨越了日期线很小的一部分。 这会导致gdalwarp出现问题,最终会产生巨大的全球性产出。 gdalwarp -t_srs "epsg:900913" S16W180.hgt test.tif gdalinfo test.tif Driver: GTiff/GeoTIFF Files: test.tif Size is 1703, 5 [...] Lower …
11 srtm  gdalwarp 

1
我如何解决Gdalwarp错误“太多点无法转换”以将对地静止映射为Lambert保形?
我正在尝试使用gdalwarp将对地静止映射为Lambert保形。我的输入数据在netcdf中,并且在地理坐标(度)中,我想将重新映射的数据输出到netcdf。我为输入的netcdf数据创建了一个相应的vrt文件。Gdalwarp将输出netcdf文件,但输出数据全为零,并且我收到以下错误: Creating output file that is 5120P x 5120L. Processing input file netcdf.vrt. ERROR 1: Too many points (441 out of 441) failed to transform, unable to compute output bounds. Warning 1: Unable to compute source region for output window 0,0,5120,5120, skipping. 0...10...20...30...40...50...60...70...80...90...100 - done. 我尝试了以下命令: /usr/bin/gdalwarp -s_srs "+proj=geos +h=35785831 …

1
使用GDAL和Python进行地理配准栅格?
我想使用python和对栅格进行地理配准GDAL。我当前的方法是调用gdal_translate和gdalwarp使用os.system地面控制点列表。我真的很想在本地进行此操作python。 这是我正在使用的当前过程: import os os.system('gdal_translate -of GTiff -gcp 1251.92 414.538 -7.9164e+06 5.21094e+06 -gcp 865.827 107.699 -7.91651e+06 5.21104e+06 "inraster.tif" "outraster1.tif"') os.system('gdalwarp -r bilinear -tps -co COMPRESS=NONE "outraster2.tif" "outraster3.tif"') 有一个以前的问题和答案在2012年里面写明了gdal_translate可以导入后进行访问gdal。我不确定是否已过时,或者是否错误,但是当我运行时,from osgeo import gdal我不认为这gdal.gdal_translate是一个选择。 我不知道它是否存在,但是如果我能以pythonic的方式翻译和重新投影栅格,我将不胜感激。例如: # translate gcp_points = [(1251.92, 414.538), (-7.9164e+06, 5.21094e+06)] gdal.gdal_translate(in_raster, gcp_points, out_raster1) # warp gdal.gdalwarp(out_raster1, out_raster2, 'bilinear', args*) 这样的方法可行吗?

2
如何在提供商提供的自定义tiff图像上使用gdal2tiles生成图块
我一直在努力为我们拥有的高分辨率图像生成图块。我们当前拥有的图像是非常大的(+ 20GB)图像,另存为GeoTiff文件。 我想使用gdal2tiles命令行实用程序生成图块,然后使用TMS图像提供程序提供图块,然后在Cesium中打开并查看它。使用gdalinfo,以下是图片的一些详细信息: Driver: GTiff/GeoTIFF Files: image.tif Size is 52250, 56119 Coordinate System is: PROJCS["WGS 84 / UTM zone 35S", GEOGCS["WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84",6378137,298.257223563, AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich",0], UNIT["degree",0.0174532925199433], AUTHORITY["EPSG","4326"]], PROJECTION["Transverse_Mercator"], PARAMETER["latitude_of_origin",0], PARAMETER["central_meridian",27], PARAMETER["scale_factor",0.9996], PARAMETER["false_easting",500000], PARAMETER["false_northing",10000000], UNIT["meters",1], AUTHORITY["EPSG","32735"]] Origin = (606276.000000000000000,7197873.000000000000000) Pixel Size = (0.500000000000000,-0.500000000000000) Metadata: AREA_OR_POINT=Area TIFFTAG_MAXSAMPLEVALUE=13165 TIFFTAG_MINSAMPLEVALUE=1 TIFFTAG_RESOLUTIONUNIT=2 …

1
gdalwarp和projectRaster之间的区别
我正在尝试投影栅格。在R中有对此projectRaster()功能(在一个完全可复制的示例下面): # example Raster require(raster) r <- raster(xmn=-110, xmx=-90, ymn=40, ymx=60, ncols=40, nrows=40) r <- setValues(r, 1:ncell(r)) projection(r) # project to newproj <- "+init=epsg:4714" # using raster package to reproject pr1 <- projectRaster(r, crs = CRS(newproj), method = 'bilinear') 哪个工作正常。但是,它很慢。 为了提高速度,我还是gdalwarp改用了(使用SSD时,从磁盘/ R读写数据的成本不是很高)。 但是,我无法重现projectRaster()使用的结果gdalwarp: # using gdalwarp to reproject tf <- …

3
使用python和QGIS将文件夹循环以按多边形批处理剪辑栅格吗?
我正在使用python和QGIS 2.0。我正在尝试通过一个面要素来裁剪文件夹中的栅格。这是我第一次使用(例如)“ PyQGIS”,以前我习惯使用arcpy。无论如何,我没有让我的简单脚本起作用,任何建议将不胜感激! import qgis.core, qgis,utils QgsApplication.setPrefixPath("C:/OSGeo4W64/apps/qgis", True) QgsApplication.initQgis() CLIP= "C:/Users/unim/Documents/Umberto/Universita/PhD/Guglielmin/Permafrost/Alta_Valtellina/Landsat_ita/study_area_foscagno.shp" INPUT_FOLDER="C:/Users/unimi/Documents/Umberto/Universita/PhD/Guglielmin/Permafrost/Alta_Valtellina/Landsat_ita/LE71930282000259EDC00" OUTPUT= "C:/Users/unim/Documents/Umberto/Universita/PhD/Guglielmin/Permafrost/Alta_Valtellina/Landsat_ita/foscagno_pyqgis/" for RASTER in INPUT_FOLDER.tif do echo "Processing $RASTER" gdalwarp -q -cutline CLIP -crop_to_cutline -of GTiff RASTER OUTPUT+ "clip_"+ RASTER done QgsApplication.exitQgis() 以下是我从现在开始所做的改进,虽然没有使脚本起作用,但是我想我可能会越来越近... import qgis.core, qgis.utils, os, fnmatch from osgeo import gdal CLIP= "C:/Users/unimi/Documents/Umberto/Universita/PhD/Guglielmin/Permafrost/Alta_Valtellina/Landsat_ita/study_area_foscagno.shp" INPUT_FOLDER= "C:/Users/unimi/Documents/Umberto/Universita/PhD/Guglielmin/Permafrost/Alta_Valtellina/Landsat_ita/LE71930282000259EDC00/DNs2Reflectance_LE71930282000259EDC00" OUTPUT= …
9 gdal  pyqgis  gdalwarp 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.