GeoTIFF được tạo bằng GDAL không có phạm vi tối thiểu / tối đa khi được tải trong Arc / QGIS


11

Tôi đang tạo một số trình quét điểm nổi trong GDAL bằng trình điều khiển GeoTIFF. Khi tôi tải các hình ảnh thu được vào QGIS hoặc Arc, hệ thống ký hiệu mặc định đặt min ở -3,40282e38 và tối đa là 3,40282e38, do đó, raster trông chính xác màu xám. Có cách nào để tôi có thể viết phạm vi thực tế vào GeoTIFF trực tiếp để khi được tải vào chương trình GIS, nó sẽ tự động chia tỷ lệ biểu đồ độc đáo không? Tôi đã thử tạo một biểu đồ mặc định như thế này:

rasterMin, rasterMax = raster.GetRasterBand(1).ComputeRasterMinMax()
raster.GetRasterBand(1).SetDefaultHistogram(rasterMin, rasterMax, 255)

Nhưng tôi gặp một lỗi trông giống như một vấn đề ràng buộc:

  File "/usr/lib/python2.6/dist-packages/osgeo/gdal.py", line 846, in SetDefaultHistogram
    return _gdal.Band_SetDefaultHistogram(self, *args)
TypeError: not a sequence

Bất kỳ đề xuất nào về những gì tôi có thể làm, hoặc nếu tôi đã phạm sai lầm?

Câu trả lời:


8

Nếu bạn đang tạo dữ liệu, thì bạn có thể theo dõi tối thiểu và tối đa khi đang di chuyển. Nếu bạn không có quyền kiểm soát trực tiếp dữ liệu nguồn, hãy nói nếu bạn đang kết hợp dữ liệu hiện có, thì việc sử dụng ComputeRasterMinMax(0)là ổn.

Dù bằng cách nào, sau khi bạn đã nhận được các giá trị tối thiểu và tối đa của mình, bạn nên gọi SetStatistics()trên băng tần và đảm bảo bạn đặt tập dữ liệu của mình Nonekhi bạn hoàn thành để đảm bảo mọi thứ được ghi vào đĩa.

Ngoài ra, một điều gì đó ở phía sau tâm trí tôi đang nói với tôi rằng việc sử dụng dataset.GetRasterBand(1).<some band function>sẽ không hoạt động chính xác do cách GDAL Python xử lý các tham chiếu băng tần. Tôi không thể nhớ các chi tiết, nhưng có một cái gì đó trong danh sách gửi thư của GDALDev một thời gian trước đây. Vì vậy, tốt nhất là tạo một biến băng rõ ràng : band = dataset.GetRasterBand(1), sau đó gọi band.SetStatistics(min, max, mean, stddev).


Cảm ơn, điều này đã lừa, và cảm ơn cho bối cảnh. Nhân tiện, tôi có thể lồng tham chiếu ban nhạc mà không có biến tạm thời không có vấn đề.
Giàu

Lưu ý rằng band.ComputeStatistics(0)cũng lưu trữ số liệu thống kê. Đó là một dòng dễ dàng.
Mike T

1

Tôi không biết cách sử dụng GDAL, nhưng bạn có thể sử dụng python để gọi công cụ 'tính toán thống kê' trong Arc.


2
Xin chào Cyrus, chào mừng bạn đến với GIS.se :) Mặc dù câu trả lời của bạn không có khả năng thu hút phiếu bầu vì hai lý do. Công cụ thống kê tính toán Arcpy đặt các số liệu thống kê trong tệp .aux bên ngoài và người đăng yêu cầu "trực tiếp vào vị trí địa lý". Thứ hai, mặc dù Arcgis được đề cập trong tiêu đề, phần chính của câu hỏi và các thẻ của nó cho thấy người đăng thực sự quan tâm nhiều hơn đến giải pháp gdal / qgis. Trong mọi trường hợp, cảm ơn vì đã đóng góp và xin vui lòng tiếp tục. Đó là một chút của đường cong học tập để bắt đầu nhưng tôi nghĩ rằng bạn sẽ thấy rằng nỗ lực đó sẽ tự trả lại theo thời gian.
matt wilkie
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.