Làm cách nào để đặt tất cả các pixel có giá trị <= 0 thành Hồi gật đầu trong raster DEM?


28

Tôi có một raster DEM với các giá trị pixel trong khoảng 3000 đến -0.0003. Tôi cần đặt tất cả pixel có giá trị 0 và smaler (<= 0) thành "gật đầu" (để tính toán raster sau này và để giảm kích thước tệp).

Dường như đối với tôi, đây là một nhiệm vụ cho máy tính raster (đặt giá trị pixel <= 0 thành "gật đầu") hoặc phân loại lại (đặt giá trị pixel <= 0 thành "gật đầu" và giữ tất cả các giá trị khác) nhưng tôi không biết làm thế nào


Tôi cũng cần đặt tất cả các pixel có giá trị <0 thành "gật đầu". Vì vậy, bài đăng từ vascobnunes không giúp tôi.
MAP

Xin lỗi, nhưng nó không giúp tôi thay đổi phong cách hiển thị raster. Tôi cần phải pysicaly chỉnh sửa rasterfile của tôi.
MAP

Từ các bình luận và đề xuất đóng cửa, có vẻ như bạn nên chỉnh sửa Câu hỏi của mình để làm rõ chính xác những gì bạn muốn và những gì bạn đã thử.
PolyGeo

Câu trả lời:


29

Tôi không tìm thấy giải pháp một công cụ, nhưng trước tiên bạn có thể sử dụng máy tính raster để biến tất cả các giá trị dưới ngưỡng nhất định về 0 và sau đó sử dụng gdal_translate với -a_nodata 0 để biến 0 thành nốt.

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

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


17

Đây là biểu thức mapcalc GRASS để đặt phạm vi thành NULL:

r.mapcalc "dem_corrected = if(dem<=0, null(), dem)"

Tuyệt vời, làm việc cho tôi!
ilFonta

16

Nó có thể được thực hiện trong một bước trong QGIS trong máy tính raster.

Trong QGIS3, đối với lớp raster có tên "x", sử dụng biểu thức sau:

(("x">0)*"x") / (("x">0)*1 + ("x"<=0)*0)

Thủ thuật này ánh xạ các giá trị raster x> 0 vào tỷ lệ x / 1 = x và các giá trị raster x <= 0 thành tỷ lệ 0/0 = NaN. NaN này được hiển thị dưới dạng FLOAT_MIN (còn gọi là -3,402832 ... e + 38) nếu raster là 4 byte float.

Kỳ lạ là câu hỏi này dường như đã xuất hiện được một thời gian, với (theo như tìm kiếm nhanh của tôi ngày hôm nay cho thấy) hầu hết những người được hỏi nói rằng nó không thể được thực hiện trong một bước. Nó chắc chắn không cần phải bị hack như thế này. Các tài liệu của QGIS cũng có thể tốt hơn.


10

Rất cám ơn Dominik. Câu trả lời đầu tiên của tôi là không chính xác cho QGIS 2.8.3 (biểu thức "myraster@1" > 0trả về 0 hoặc 1 cho đầu vào không phải là nốt , đối với đầu vào gật đầu, nó trả về nốt ).

Biểu thức Máy tính raster QGIS sau đây phải đủ (lớp raster có tên là "myraster"), vì Máy tính raster QGIS đặt tất cả các pixel không thỏa mãn điều kiện thành gật đầu :

("myraster @ 1"> 0) * "myraster @ 1"

Giải pháp sau đây dựa trên https://docs.qgis.org/2.8/en/docs/training_manual/ Processing / no_data.html và hoạt động cho QGIS 2.8.3 với SAGA 2.1.2.

Trong Xử lý QGIS, sử dụng máy tính SAGA Raster và nhập thông tin sau vào Công thức :

ifelse(g1=0, 0/0, ifelse(g1<0, 0/0, g1))

hoặc là

ifelse(a=0, 0/0, ifelse(a<0, 0/0, a))

Điều này sẽ biến tất cả các giá trị nhỏ hơn hoặc bằng 0 thành gật đầu (0/0).


điều này không hoạt động vì các pixel không thỏa mãn điều kiện là 0, không phải là gật đầu
Dominik

Siêu. Có thể sử dụng nó cho bộ lọc giá trị raster: Ví dụ: bộ lọc (0,5; 23]: ifelse (g1 <0,5, 0/0, ifelse (g1> 23, 0/0, g1))
lolipop

10

Bạn cũng có thể lưu lớp (nhấp chuột phải, lưu dưới dạng ...) và chỉ định phạm vi nốt. Điều này sẽ giữ các nốt ban đầu và tạo ra các nốt mới cho phạm vi giá trị được chỉ định.


Đây là giải pháp tốt nhất
Alexander

5

Tôi đã có một vấn đề tương tự, nhưng có các giá trị CẢ HAI tôi muốn chuyển đổi thành không có dữ liệu giá trị không có dữ liệu hiện có trong raster.

Xác định kết quả

Tôi đã đến trang này để được giúp đỡ, nhưng tôi nghĩ có một sự cảnh báo cho các phương pháp tiếp cận ở đây. Các phương thức của @underdark và @Micha dường như chỉ hoạt động khi không có giá trị dữ liệu hiện có trong raster.

Để làm tròn điều này, bạn cần chuyển đổi cả các giá trị không có dữ liệu và các giá trị bạn muốn chuyển đổi thành không có dữ liệu, thành một số nhất quán. Bạn có thể sử dụng bước thứ hai của @underdark.

Để thực hiện việc này, hãy sử dụng Hộp công cụ xử lý> Phân loại lại các giá trị lưới (SAGA) để chuyển đổi các giá trị và giá trị không có dữ liệu thành một số chung (ví dụ: -999), cùng một lúc. Cụ thể, sử dụng phương pháp "phạm vi" và chỉ định phạm vi. Sau đó, thay thế các giá trị không có dữ liệu, chọn cùng giá trị này (ví dụ: -999). Bỏ chọn thay thế các giá trị khác. Điều này hoạt động cho một thay đổi giá trị duy nhất hoặc thay đổi phức tạp hơn quá.

Sau đó, làm theo phương pháp @underdark và lưu raster bằng cách sử dụng Raster> Chuyển đổi> Dịch và đánh dấu không có dữ liệu, nhập giá trị bạn đã sử dụng (ví dụ: -999).


-3

Nhấp chuột phải vào raster, đi đến thuộc tính raster, chọn tùy chọn thứ ba "trong suốt", trong tab không có giá trị dữ liệu, thêm giá trị 0 và nhấp vào áp dụng. Đây là tùy chọn tương tự "hiển thị giá trị nền" trong arcgis.


4
Không phải là một phương pháp tốt. Bạn không thực sự thay đổi dữ liệu nên nếu bạn cần tính toán số liệu thống kê hoặc phân tích, kết quả sẽ không chính xác
khafen
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.