完成功能:改变图像显示的rgb波段;

1、可改变图像显示波段,当修改完成参数时实时刷新图像;
2、TOC中切换选中的多图层时,刷新渲染信息;
3、界面中保存图像的波长信息,参数修改时的选项就是准确的波长信息;
This commit is contained in:
tangchao0503
2026-03-10 17:21:21 +08:00
parent 0ac03f0eb5
commit 452f7c8e5f
8 changed files with 330 additions and 84 deletions

View File

@ -1,6 +1,7 @@
#include "RasterLayer.h"
#include "RasterDataProvider.h"
#include "RasterRenderer.h"
#include <algorithm>
RasterLayer::RasterLayer(const QString& name, const QString& uri)
: MapLayer(name, uri)
@ -84,3 +85,32 @@ QImage RasterLayer::render(const RenderParams& params)
p.maxValue = params.maxValue;
return m_renderer->render(p);
}
RasterLayer::RenderParams RasterLayer::currentRenderParams() const
{
return m_currentParams;
}
void RasterLayer::setCurrentRenderParams(const RenderParams& params)
{
m_currentParams = params;
}
bool RasterLayer::wavelengthRange(double& minWave, double& maxWave) const
{
auto wl = bandWavelengths();
if (wl.empty()) return false;
minWave = *std::min_element(wl.begin(), wl.end());
maxWave = *std::max_element(wl.begin(), wl.end());
return true;
}
std::vector<double> RasterLayer::bandWavelengths() const
{
if (!m_provider) {
// need to open provider to read wavelengths - cast away const for lazy init
auto* self = const_cast<RasterLayer*>(this);
if (!self->openDataProvider()) return {};
}
return m_provider->bandWavelengths();
}