41 lines
980 B
C++
41 lines
980 B
C++
#pragma once
|
|
|
|
#include "MapLayer.h"
|
|
#include <memory>
|
|
#include <QVector>
|
|
#include <vector>
|
|
|
|
class RasterDataProvider;
|
|
|
|
class RasterLayer : public MapLayer
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit RasterLayer(const QString& name, const QString& uri);
|
|
~RasterLayer();
|
|
|
|
LayerType layerType() const override;
|
|
|
|
// Access provider
|
|
RasterDataProvider* dataProvider() const;
|
|
|
|
// Create or open provider based on this layer's uri
|
|
bool openDataProvider();
|
|
|
|
bool isValidPixel(int x, int y);
|
|
bool readPixelSpectrum(int x, int y, QVector<double>& wavelengths, QVector<double>& spectrum);
|
|
|
|
// Get wavelength range from data provider (min, max). Returns false if unavailable.
|
|
bool wavelengthRange(double& minWave, double& maxWave) const;
|
|
|
|
// Get all band wavelengths
|
|
std::vector<double> bandWavelengths() const;
|
|
|
|
// Get dimensions
|
|
int width() const;
|
|
int height() const;
|
|
|
|
protected:
|
|
std::unique_ptr<RasterDataProvider> m_provider;
|
|
};
|