Làm cho nhiều raster đồng đều hơn


10

Tôi đã nhập một số raster được cho là liên tục kết nối nhưng thay vào đó chúng tạo ra một loại lưới có viền giữa chúng. Tôi có thể giả định rằng đây là vấn đề hiệu chuẩn giữa các trình quét riêng lẻ nhưng tôi không chắc chắn làm thế nào để thực hiện nó theo cách thức dữ liệu.

Có ai từng trải nghiệm điều gì đó như thế này trước đây và có lẽ biết về một giải pháp khả thi để tổng thể của tất cả các raster sẽ trơn tru hơn.

Tất cả những điều này được cho là được kết nối về mặt địa lý. Do đó, rắc rối của "biên giới" của hình vuông.

Tôi đang sử dụng QGIS trên windows.

nhập mô tả hình ảnh ở đây

Câu trả lời:


11
  1. Bạn có thể thử hợp nhất các trình quét thành một:

    • Từ thanh công cụ:

      Raster> Khác> Hợp nhất

    • Từ hộp công cụ xử lý:

      GDAL / OGR> Khác> Hợp nhất

    • Từ bảng điều khiển GDAL:

      gdal_merge.py -o merged.tif input1.tif input2.tif
      

  1. Hoặc xây dựng một raster ảo:

    • Raster> Khác> Xây dựng Raster ảo

1
+1 để xây dựng Raster ảo. Điều này sẽ tạo ra một tệp rất nhỏ sẽ hoạt động như một hình ảnh được hợp nhất.
Alexandre Neto

@AlexandreNeto - Cảm ơn, tôi đã nhận thấy rằng sự khác biệt về kích thước tệp so với các trình quét riêng biệt có thể khá đáng kinh ngạc =)
Joseph

Khi chọn hợp nhất hoặc xây dựng raster ảo, tôi gặp lỗi khi tuyên bố rằng quá trình không thể bắt đầu. Biểu đồ không tồn tại hoặc tôi không có quyền. Do đó, tôi đã thành công trong việc hợp nhất hoặc xây dựng bằng cách tải tất cả các trình quét vào menu Lớp và chọn từ đó. Dòng lệnh Gdal_merge.bat có thể quá dài, ít nhất inputx.tif có thể tạm dừng hoạt động ở 1000 x (các trình quét khác nhau)
MichaelR

@Michael - Lỗi kỳ lạ nhưng rất vui vì bạn đã tìm ra cách khác để nhận kết quả của mình :)
Joseph

1
@Michael Tại dòng lệnh, bạn có thể cung cấp gdalbuildvrttên tệp của tệp chứa danh sách tệp, sau đó cung cấp nhiều tệp hình ảnh dưới dạng đối số: gdalbuildvrt -input_file_list my_liste.txt doq_index.vrt
Detlev

3

Lý do cho sự xuất hiện của mosaiked này là vì mỗi hình ảnh đơn lẻ được vẽ với tỷ lệ xám trải dài từ hình ảnh tối thiểu đến hình ảnh tối đa và KHÔNG trên toàn bộ mức tối thiểu / tối đa toàn cầu. Khi bạn hợp nhất tất cả các hình ảnh thành một, tốt, chỉ có một phút / tối đa. Điều này cũng đúng với VRT, vì VRT coi tất cả các hình ảnh là một (khi bạn xem tệp VRT, bạn sẽ thấy các số liệu thống kê chung).

Khi cả hai, hợp nhất và VRT, không phải là một tùy chọn, tập lệnh sau có thể giúp ích.

Trong vòng lặp đầu tiên, tôi lặp lại tất cả các lớp, chọn các trình quét và lấy ước tính khoảng thời gian tối thiểu / tối đa của chúng. Đây là cách như chính QGIS hoạt động. Từ các giá trị tối thiểu / tối đa này, tôi tính toán tối thiểu / tối đa toàn cầu

Trong vòng lặp thứ hai, các trình kết xuất cho tất cả các lớp raster được cấu hình sao cho thang màu xám được kéo dài trong khoảng thời gian tối thiểu / tối đa toàn cầu.

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()
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.