【问题标题】:Stop new gdal command window opening each time gdal command is executed python每次执行 gdal 命令时停止新的 gdal 命令窗口打开 python
【发布时间】:2017-03-06 08:57:54
【问题描述】:

我编写了一个使用 gdals warp 的 PyQGIS 脚本。为我执行此操作的代码如下:

warp = 'gdalwarp -ot Byte -q -of GTiff -tr 2.81932541777e-05 -2.81932541777e-05 -tap -cutline %s -crop_to_cutline -co COMPRESS=DEFLATE -co PREDICTOR=1 -co ZLEVEL=6 -wo OPTIMIZE_SIZE=TRUE %s %s' % (instrv, ('"' + pathsplitedit + '"'), outputpath2)                                                                          
call (warp)   

所以我有这个循环,一切都很好。然而,每次它执行时都会打开一个新的命令窗口,这并不理想,因为它会循环遍历 shapefile 中的 100 个特征。有没有办法根本无法打开命令窗口?非常感谢任何帮助!

【问题讨论】:

  • call (warp) 看起来不像 python。
  • 它源自from subprocess import call。它是调用 gdal 函数的一种更简单的方法。据我所知,它是 python chris35wills.github.io/subprocess_gdal。因此,如果您能取消对我的问题的反对票,我将不胜感激
  • 如果没有详细信息,问题就不清楚,除非编辑问题,否则无法更改投票。如果是关于subprocess.call,那么看起来这个问题已经被问到并回答了beforecall 只是包装了Popen)。

标签: python gdal qgis


【解决方案1】:

自 GDAL 2.1(QGIS 的最新版本使用)以来,您可以从绑定本身访问命令行实用程序,这有很多好处。

你的电话变成了这样,请注意我没有复制你所有的创建选项,只是为了让你了解如何使用它。

warpopts = gdal.WarpOptions(outputType=gdal.GDT_Byte, 
                            format='GTiff', 
                            xRes=2.81932541777e-05,
                            yRes=-2.81932541777e-05, 
                            cutlineDSName='cutline_vec.shp',
                            cropToCutline=True, 
                            targetAlignedPixels=True, 
                            options=['COMPRESS=DEFLATE'])

ds = gdal.Warp('raster_out.tif', 'raster_in.tif', options=warpopts)
ds = None

其中一个好处是输入文件不必在磁盘上,也可以打开 gdal/ogr 数据集。 gdal.Warp cmd 还将输出文件作为打开的数据集返回,然后您可以将其传递给其他命令。

【讨论】:

  • 有没有办法通过 gdal2tiles 使用 tilesopts = gdal.gdal2tilesOptions(blah, blah, blah) 之类的东西来做到这一点?
  • gdal2tiles 已经是一个 python 文件,因此您可以从中导入:from gdal2tiles import GDAL2Tiles 并从那里开始。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-09
  • 2016-12-30
相关资源
最近更新 更多