需求规格说明
编写一个具有加、减、乘、除、对数、指数计算功能的栅格图层计算工具,计算结果以tiff格式的栅格文件输出。
思路:1.自行设计界面,逐个实现计算功能;
2.调用QGIS原生栅格计算器。
本文使用第二种方法,直接调用QGIS的栅格计算器。
代码实现
查看QGIS源码可以发现,栅格计算器的ui文件为qgsrastercalcdialogbase.ui,相关头文件为qgsrastercalcdialog.h。
1.在工程项目中包含头文件#include"qgsrastercalcdialog.h",在相应的槽函数中添加代码:
void DataViewer::on_actioncalculate_triggered()
{
QgsRasterCalcDialog* calculate = new QgsRasterCalcDialog();
calculate->show();
}
运行后发现能够正确调用栅格计算器界面,但是无法执行计算。
2.创建QgsRasterCalculator对象,通过构造函数传递计算表达式、输出文件路径、输出格式、输出范围、输出坐标参考系统、栅格大小等参数。调用 processCalculation 函数执行栅格计算并输出计算结果。
修改槽函数中的代码:(以下代码是从源码里直接粘贴过来的,但我不记得具体复制的位置了。。。)
//栅格计算器
void DataViewer::on_actioncalculate_triggered()
{
QgsRasterCalcDialog* d = new QgsRasterCalc