Phải làm gì với giá trị -3,4e + 38 nốt?


17

Tôi đang cố gắng xử lý một số tệp raster bioclimatic, chẳng hạn như có thể được tải xuống từ http://www.wworldclim.org/c Hiện (bộ bioclim). Chúng dường như có các giá trị nốt được đặt -3.4e+38theo QGIS (nhìn vào đầu ra của gdalinfo, nó -3.39999999999999996e+38).

Có vẻ như các công cụ gdal không thể xử lý giá trị nốt này và qgis dường như cũng không thể nhận ra nó. Trong kiểu dáng lớp, có một mục cho -3.4e + 38 được đặt thành trong suốt 100%, nhưng nó vẫn hiển thị các giá trị như vậy, mặc dù bộ chọn "Nhận dạng các tính năng" cho thấy chúng có giá trị -3,4e + 38.

Tôi đã thử tạo một vrt để chuyển đổi các giá trị gật đầu thành -9999, nhưng điều đó cũng không hiệu quả.

Làm cách nào tôi có thể xử lý các tệp như vậy để có các giá trị nốt có thể sử dụng được?

giá trị nốt được lấy từ tập tin thiết lập độ trong suốt không có hiệu lực


Giả sử trong phiên bản mới, qgis có hỗ trợ gật đầu tốt hơn. Tôi đã có nhiều vấn đề "gật đầu" với 1.8 (đặc biệt là khi tôi đang cố gắng tính toán biểu đồ hoặc phương tiện trong một khu vực).
biệt danh

Câu trả lời:


4

GDAL có thể xử lý các giá trị này. Trên thực tế, giá trị NoData mặc định của GDAL khá giống với giá trị của bạn. Tôi nghĩ rằng vấn đề là một lỗi dấu phẩy động trong QGIS mặc dù. Tôi có cùng một vấn đề với các giá trị NoData dấu phẩy động.

Nếu bạn muốn thay đổi giá trị NoData bằng GDAL, bạn có thể sử dụng gdalwarp hoặc có lẽ gdal_translate và đặt giá trị gật đầu thành một số nguyên từ đó (lần lượt là -dstnodata và -a_nodata). Vì sự bất ổn, tôi đã thành công khi đặt Giá trị NoData của mình thành -999 trong một raster float 64 bit trong quá khứ. Tuy nhiên, do chúng tôi đã thiết lập có một vấn đề nổi về vấn đề này, tôi không muốn đảm bảo rằng điều này sẽ hoạt động trong mọi trường hợp.


Cảm ơn câu trả lời của bạn, Sylvester. Tôi không thể sử dụng gdal_translate để sử dụng gdal_translate -a_nodata -9999 input.tif output.tifmặc dù gdalwarp -dstnodata -9999 input.tif output.tifđã thực hiện thủ thuật này. Từ tệp đầu vào 9 MB, cách tiếp cận của tôi dẫn đến tệp 26 MB, trong khi gdalwarp dẫn đến tệp đầu ra 52 MB. Tuy nhiên, nếu raster chứa các giá trị float, cách tiếp cận của tôi sẽ không hoạt động trong trường hợp này.
rudivonstaden

Bạn đã kiểm tra xem có một vé mở trong trình theo dõi lỗi của QGIS cho việc này không?
underdark

1
Sự phình to dữ liệu có thể là do sử dụng độ sâu pixel lớn hơn (63 bit so với 16 bit) hoặc có thể đơn giản là do bản gốc là JPEG và kết quả mới của bạn là TIFF. @underdark - Xin lỗi! Không, tôi chưa kiểm tra xem có vé mở không.
MappaGnosis

@underdark Tôi không thể tìm thấy một vé phù hợp với điều này, vì vậy tôi đã thêm một báo cáo lỗi ( hub.qgis.org/issues/6786 ).
rudivonstaden

1
Đối với kích thước tệp nhỏ hơn, bạn chỉ cần thêm -co COMPRESS=LZW.
j08

11

Tôi đã tìm cách giải quyết vấn đề này bằng cách chuyển đổi định dạng dữ liệu sang Int16 từ Float32. Giá trị tối thiểu sau đó là -32768 và có thể được xử lý như một giá trị nốt. Lệnh sau đã thực hiện thủ thuật:

gdal_translate -ot Int16 -a_nodata -32768 input.tif output.tif

Có lẽ có một giải pháp tốt hơn, nhưng điều này ít nhất giải quyết được vấn đề của tôi.

gật đầu chọn đúng



0

bạn có thể thử gdal_calc.py input.tif --outfile = output.tif --calc = "A * (A> 0)" --NoDataValue = 0

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.