Tự động tạo kiểu raster bằng các giá trị duy nhất trong QGIS?


17

Trong ArcMap, có thể tự động tính toán các giá trị duy nhất cho raster và sau đó áp dụng một kiểu khác nhau cho từng giá trị duy nhất (xem hình ảnh thứ 1).

Tuy nhiên, trong QGIS, tôi phải thêm thủ công các giá trị để tạo kiểu khi sử dụng kiểu "Singlese pseudocolor" (xem hình thứ 2). Có cách nào tự động điền các giá trị duy nhất như ArcMap không?

Bản đồ:

ArcMap raster symbology giá trị duy nhất

QGIS (cách tự động điền danh sách giá trị với các giá trị duy nhất?):

Raster QGIS


Bạn có phân loại ở phía bên phải. Không chắc chắn lý do tại sao bạn cắt phần này trong Ảnh chụp màn hình vì đây là các tùy chọn bạn cần ... Chỉ cần đặt số lượng lớp thành chênh lệch tối đa +1 của bạn. Sử dụng chế độ cùng khoảng thời gian. Vấn đề có thể là khi dữ liệu của bạn không liên tục, sau đó bạn cần xóa các giá trị không được sử dụng.
Mờ

@Matte Thật vậy, tuy nhiên chúng ta thường có dữ liệu không liền kề với những khoảng trống lớn. Do đó, việc xóa các giá trị không thực sự trong raster là không thực tế (ví dụ: các giá trị duy nhất là 1 và 1000000 bạn sẽ phải xóa rất nhiều số theo cách thủ công). Thêm vào đó, điều này giả định một số kiến thức tiên nghiệm về các giá trị duy nhất trong raster ...
Peet Whittaker

Câu trả lời:


3

Đối với những người vẫn đang tìm kiếm này. Các giá trị raster độc đáo đã được thêm vào QGIS 3. "Được thêm bởi Nyall Dawson khoảng 1 năm trước

[ĐẶC ĐIỂM] Cho phép phân loại trình kết xuất được hiển thị bằng các giá trị duy nhất từ ​​lớp raster

Thêm một cách dễ dàng để tạo kiểu cho các trình quét rời rạc, chẳng hạn như các lớp sử dụng đất bằng trình kết xuất Paletted. Chỉ cần chọn trình kết xuất Paletted, chọn một băng tần, sau đó nhấn nút "Thêm giá trị duy nhất". Các giá trị pixel duy nhất sẽ được tìm nạp từ lớp và màu được gán cho từng lớp bằng cách sử dụng đoạn đường màu hiện được chọn. "


7

Đây là một cách tiếp cận có thể hữu ích. Công cụ GRASS r.reportcó khả năng tính toán một thống kê cơ bản cho từng giá trị duy nhất trong lớp raster:

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

Đầu ra có thể được viết là một tệp txt đơn giản trông như thế này (bên trái: các giá trị duy nhất, bên phải: khu vực được bao phủ bởi mỗi giá trị):

+-----------------------------------------------------------------------------+
|                      Category Information                        |    square|
|   #|description                                                  |     miles|
|-----------------------------------------------------------------------------|
|1111| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  1.249845|
|1113| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  0.062666|
[...]
|3412| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  0.013926|
|4111| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  4.713902|
|4211| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  0.083555|
|4212| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  0.135777|
|-----------------------------------------------------------------------------|
|TOTAL                                                             | 17.048727|
+-----------------------------------------------------------------------------+

Tập lệnh xử lý địa lý sau đây lấy tệp văn bản này làm đầu vào và thiết lập trình kết xuất phù hợp (với màu sắc ngẫu nhiên để thuận tiện) cho lớp raster (Lấy cảm hứng từ LAWHEAD, J.: Sách hướng dẫn lập trình Python của Python, trang 135):

##giswg=group
##thexml=file
##theraster=raster
from random import randint
from PyQt4.QtGui import QColor
from qgis.core import *
myraster = processing.getObject(theraster)
infile = open(thexml, 'r')
univalues = [l.split('|')[1] for l in [f for f in infile.readlines()][4:-4]]
s = QgsRasterShader()
c = QgsColorRampShader()
c.setColorRampType(QgsColorRampShader.EXACT)
i = []
for u in univalues:
    i.append(QgsColorRampShader.ColorRampItem(float(u), QColor('#%06x' % randint(0, 2**24)), u))
c.setColorRampItemList(i)
s.setRasterShaderFunction(c)
ps = QgsSingleBandPseudoColorRenderer(myraster.dataProvider(), 1, s)
myraster.setRenderer(ps)

Nhờ các khả năng xử lý huyền thoại của QGIS, bạn có thể kết hợp hai yếu tố này trong trình tạo mô hình đồ họa và thêm một tham số raster để chỉ cần chọn một lớp raster được tải:

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

Sau khi lưu mô hình, bằng cách nhấp đúp vào mô hình trong hộp công cụ xử lý, nó có thể được sử dụng như một công cụ bình thường:

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

Với kết quả trông như thế này (outcrop của bộ dữ liệu natura2000 rasterized):

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

Hoặc trong các thuộc tính lớp:

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

Tôi nghĩ rằng điều này cần một số tinh chỉnh trong trải nghiệm người dùng, nhưng đó là bước đầu tiên.


1
không phải là trải nghiệm người dùng tốt nhất nhưng cảm ơn vì đã chia sẻ
RutgerH

Với việc chỉ nhìn thấy công cụ được tạo như UI, tôi nghĩ không có gì sai với trải nghiệm người dùng. Và ai biết được, những gì xảy ra đằng sau hậu trường trong các công cụ xử lý địa lý ESRI ...
Jochen Schwarze
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.