回答:
ラスターを1つにマージしてみてください。
ツールバーから:
ラスター>その他>マージ
処理ツールボックスから:
GDAL / OGR>その他>マージ
GDALコンソールから:
gdal_merge.py -o merged.tif input1.tif input2.tif
または、仮想ラスターを作成します。
gdalbuildvrt
ではなく、その後の引数として、多くの画像ファイルを与える、ファイルのリストを含むファイルのファイル名で:gdalbuildvrt -input_file_list my_liste.txt doq_index.vrt
このモザイク化された外観の理由は、各単一のイメージが、イメージの最小値から最大値まで引き延ばされたグレースケールで描画され、グローバルな最小値/最大値を超えて描画されないためです。すべての画像を1つにマージする場合、最小/最大は1つだけです。同じことがVRTにも当てはまります。VRTはすべての画像を1つとして扱うためです(VRTファイルを確認すると、一般的な統計が表示されます)。
マージとVRTの両方がオプションではない場合、次のスクリプトが役立つ場合があります。
最初のループでは、すべてのレイヤーを反復処理して、ラスターを選択し、それらの最小/最大間隔の推定値を取得します。これは、QGIS自体が機能する方法です。これらの最小/最大値から、グローバルな最小/最大を計算します
2番目のループでは、すべてのラスターレイヤーのレンダラーが、グローバルな最小/最大の間隔でグレースケールが拡大されるように構成されています。
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()