Phân loại lại raster bằng GDAL?


8

Tôi đang tìm kiếm một công cụ từ GDAL có khả năng phân loại lại một raster chứa nhiều giá trị rời rạc. Cho đến nay, tôi đã tìm thấy các raster Reclassify bằng cách sử dụng GDAL và Python ; tuy nhiên dường như chỉ có các giá trị đơn lẻ có thể được xử lý ở đây.

Có một cái gì đó giống như một công cụ bản địa từ bộ phần mềm?

Câu trả lời:


8

gdal_calc có thể được sử dụng để phân loại lại nhiều lớp.

Ví dụ: bạn có thể thay đổi các giá trị bên dưới (và bằng) 12 thành 10, các giá trị 20, 30, 40, 50 giữ nguyên và các giá trị trong khoảng từ 50 đến 62 được thay đổi thành 60:

  python gdal_calc.py -A input.tif --outfile=output.file --calc="10*(A<=12)+20*(A==20)+30*(A==30)+40*(A==40)+50*(A==50)+60*((A>50)*(A<=62))" --NoDataValue=0

Lưu ý rằng tài liệu GDAL ( gdal.org/gdal_calc.html ) ngụ ý rằng gdal_calc.py sẽ hoạt động với nhiều trình quét, vì bạn có thể chọn bất kỳ chữ cái viết hoa nào của bảng chữ cái. Tôi không thể làm cho nó hoạt động với hơn hai đầu vào cùng một lúc. Nó chấp nhận nhiều đầu vào hơn mà không tạo ra lỗi, nhưng các thử nghiệm của tôi cho thấy chỉ có hai đầu tiên được sử dụng.
David A

7

gdal_reclassify là một công cụ Python không chính thức, dựa trên các ràng buộc Python GDAL, có thể phân loại lại theo một số lớp giá trị.

Yêu cầu:

python
numpy
gdal binaries
python-gdal bindings

Thí dụ:

python gdal_reclassify.py source_dataset.tif destination_dataset.tif -c "<30, <50, <80, ==130, <210" -r "1, 2, 3, 4, 5" -d 0 -n true -p "COMPRESS=LZW"

3

Nếu bạn đang làm việc trong một kịch bản python thì hãy sử dụng .ReadAsArrayphương thức này. Sau đó, bạn có thể phân loại lại bằng cách sử dụng numpy.

import numpy as np
sample = np.random.randint(low = 0, high = 9, size =(5,5))
print(sample)
sample[sample == 4] = 40
sample[sample <= 2] = -20
print(sample)

1
Nhược điểm của điều này là toàn bộ raster phải vừa với bộ nhớ. Với gdal_calc.py đọc raster trong các phần nhỏ hơn được xử lý cho bạn.
Iamlukesky
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.