Answers:
您可以尝试将栅格合并为一个:
在工具栏中:
栅格>其他>合并
在处理工具箱中:
GDAL / OGR>其他>合并
从GDAL控制台:
gdal_merge.py -o merged.tif input1.tif input2.tif
或构建虚拟栅格:
gdalbuildvrt
输入包含文件列表的文件的文件名,而不是使用许多图像文件作为参数:gdalbuildvrt -input_file_list my_liste.txt doq_index.vrt
出现这种偏斜外观的原因是,每个单个图像都是使用从最小图像扩展到最大图像的灰度绘制的,而不是跨全局最小/最大。当您将所有图像合并为一张图像时,只有一分钟的最小值/最大值。对于VRT,情况也是如此,因为VRT将所有图像都视为一个图像(当您查看VRT文件时,将看到公共统计信息)。
如果不能同时使用合并和VRT,则以下脚本可能会有所帮助。
在第一个循环中,我遍历所有图层,选择栅格并估算其最小/最大间隔。这就是QGIS本身的工作方式。根据这些最小值/最大值,我计算出全局最小值/最大值
在第二个循环中,配置所有栅格图层的渲染器,以使灰度范围跨全局最小值/最大值拉伸。
gmin = 9999
gmax = -9999
layers = []
# loop over all layers, take rasters and estimate min, max values
for layer in iface.mapCanvas().layers():
if isinstance(layer, QgsRasterLayer):
# change percentages and sample size to increase or decrease accuracy
min_max = layer.dataProvider().cumulativeCut(1, 0.02, 0.98, theSampleSize=250000)
gmin = min(gmin, min_max[0])
gmax = max(gmax, min_max[1])
layers.append(layer)
# for all rasters create a single band gray scale renderer with
# gray scale stretched across the interval [gmin..gmax]
for rasterlayer in layers:
renderer = QgsSingleBandGrayRenderer(rasterlayer.dataProvider(), 1)
# take the first band (0)
ce = QgsContrastEnhancement(rasterlayer.dataProvider().dataType(0))
ce.setContrastEnhancementAlgorithm(QgsContrastEnhancement.StretchToMinimumMaximum)
ce.setMinimumValue(gmin)
ce.setMaximumValue(gmax)
renderer.setContrastEnhancement(ce)
rasterlayer.setRenderer(renderer)
# refresh canvas to show changes
iface.mapCanvas().refresh()