数据处理管理类

Qt、GDAL遥感影像显示

概要

数据处理管理类,通过GisProcessManager单例管理类,实现数据的处理。

整体架构流程

GisProcess作为数据处理的基类,在此基础上分别派生出来栅格数据处理GisRasterProcess和矢量数据处理GisVectorProcess,然后功能开发者,如果处理的是栅格数据,那么只需要从GisRasterProcess类派生出自己的处理类,然后进行功能开发。同样矢量数据处理只需要从GisVectorProcess类派生出自己的处理类。
例如:
编写示例:波段运算支持四则运算(加减乘除)

技术名词解释

  • GisProcessManager
class GISCORE GisProcessManager
	: public GisObject
{
	OGIS_DECLARE_MEMBERS(GisProcessManager);
	OGIS_DECLARE_SINGLETON(GisProcessManager);
public:

	~GisProcessManager();

	OGis::ErrorStatus startProcess();

	OGis::ErrorStatus setParameters(const GisProcess *pProcess);
	
private:

	OGis::ErrorStatus processRaster(GisRasterProcess *pProcess) const;

	OGis::ErrorStatus processVector(GisVectorProcess *pProcess) const;

};
  • GisProcess
class GISCORE GisProcess
	: public GisObject
{
	OGIS_DECLARE_MEMBERS(GisProcess);
public:

	struct ProcessData
	{
		uint datasetIndex;
		UIntArray itemArray;
		bool bDisplay = false;
		QString outputFileName = "";
	};

	virtual ~GisProcess();

	virtual QString processName() const = 0;

	virtual OGis::ErrorStatus beginProcess();

	virtual OGis::ErrorStatus finishProcess();

	virtual OGis::DatasetType processType() const = 0;

	virtual OGis::ErrorStatus processData(ProcessData *pData) const = 0;

protected:

	GisProcess();

};
  • GisRasterProcess
class GISCORE GisRasterProcess
	: public GisProcess
{
	OGIS_DECLARE_MEMBERS(GisRasterProcess);
public:

	struct RasterData
		: public ProcessData
	{
		uint exportDataType = 0;
		UInt2 blockSize = {0, 0};
		double dataIgnoreValue = 0;
		UInt3 resultSize = {0, 0, 0};
		OGis::OutputFormat oFormat = OGis::kEnvi;
	};

	virtual ~GisRasterProcess();

	virtual OGis::DatasetType processType() const;

	virtual OGis::ErrorStatus process(MatArray &desMat, const MatArray &srcMat, const MatArray &maskArray = MatArray()) = 0;

protected:

	GisRasterProcess();

};
  • GisVectorProcess
class GISCORE GisVectorProcess 
    : public GisProcess
{
	OGIS_DECLARE_MEMBERS(GisVectorProcess);
public:

	struct VectorData
		: public ProcessData
	{

	};

    GisVectorProcess();

    ~GisVectorProcess();

	virtual OGis::DatasetType processType() const;

};

技术细节

  • GisProcess 基类
  • ProcessData结构体中包含需要处理的数据集索引,数据集对应的图层或者波段,输出的文件名称以及结果是否显示。
  • virtual QString processName() const = 0; 主要是在进度条中显示处理的名称;
  • OGis::DatasetType processType() const = 0; 数据处理对应的是什么类型(栅格还是矢量);
  • *virtual OGis::ErrorStatus processData(ProcessData pData) const = 0; 传入处理的参数(开发人员自定义)
  • GisRasterProcess基类
  • RasterData 结构体定义了输出数据的类型、分块处理的大小、无效值的定义、输出结果的大小(影像缩放处理)以及输出的影像格式;
  • virtual OGis::ErrorStatus process(MatArray &desMat, const MatArray &srcMat, const MatArray &maskArray = MatArray()) = 0; 开发人员主要实现这个接口,在GisProcessManager类中读取完数据之后,就会调用这个接口;

提供先进的推理,复杂的指令,更多的创造力。

  • 15
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值