【问题标题】:Adding Progress Bar to gdal.Warp()将进度条添加到 gdal.Warp()
【发布时间】:2018-04-21 09:20:15
【问题描述】:

我正在尝试找出一种方法来使用 gdal.Warp() 中的进度条来显示完成了多少工作。对于进度条,我使用的是 Tqdm,而 gdal.Warp() 用于从远程 URL 裁剪图像

def getSubArea(url):
  vsicurl_url = '/vsicurl/' + url
  output_file = 'someID_subarea.tif'
  gdal.SetConfigOption('GDAL_HTTP_UNSAFESSL', 'YES')
  gdal.Warp(output_file, vsicurl_url, dstSRS='EPSG:4326', cutlineDSName='area.geojson', cropToCutline=True)

我知道有 callback 参数报告从 0 到 1 的进度,但它仅在 gdal.warp 完成下载裁剪图像后调用。

【问题讨论】:

    标签: python-2.7 gdal tqdm


    【解决方案1】:

    您可以通过“gdal.Warp”中的“kwargs”参数添加进度回调函数(文档:https://gdal.org/python/)。

    代码:

    def getSubArea(url):
      vsicurl_url = '/vsicurl/' + url
      output_file = 'someID_subarea.tif'
      # Data you want to pass to your callback (goes in to unknown parameter)
      es_obj = { ... }
      kwargs = {
        'dstSRS': 'EPSG:4326',
        'cutlineDSName': 'area.geojson',
        'cropToCutline': True,
        'callback': progress_callback,
        'callback_data': es_obj
      }
      gdal.SetConfigOption('GDAL_HTTP_UNSAFESSL', 'YES')
      gdal.Warp(output_file, vsicurl_url, **kwargs)
    
    def progress_callback(self, complete, message, unknown):
      # Calculate percent by integer values (1, 2, ..., 100)
      percent = floor(complete * 100)
      # Code for saving or using percent value
      ...
    

    关于进度回调:https://gdal.org/api/cpl.html#_CPPv416GDALProgressFunc

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-27
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多