将进度条添加到 gdal.Warp()
Adding Progress Bar to gdal.Warp()
我想找出一种方法来使用 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 完成下载裁剪图像后调用。
您可以通过 '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
我想找出一种方法来使用 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 完成下载裁剪图像后调用。
您可以通过 '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