QGIS二次开发第四讲
2013-05-24 22:22
561 查看
本讲主要实现了加载raster数据功能
主要用到的类是qgsrasterlayer,代码是在第二讲的基础上进行修改完成的。
第一步:修改qgis2.h文件,增加以下头文件
[cpp] viewplaincopy
//4th 代码
#include <qgsrasterlayer.h>
#include <qmessagebox.h>
第二步:修改qgis2.cpp文件,主要修改addlayer函数,修改后的代码如下:
[cpp] viewplaincopy
//4th 代码
QFileInfo myRasterFileInfo("../data/Abarema_jupunba_projection.tif");
QgsRasterLayer *mypLayer = new QgsRasterLayer(myRasterFileInfo.filePath(),myRasterFileInfo.completeBaseName());
if (mypLayer->isValid())
{
QMessageBox::information(NULL,QString(tr("加载图层")),QString(tr("加载成功")),QMessageBox::Yes|QMessageBox::No);
mypLayer->setDrawingStyle(QgsRasterLayer::SingleBandPseudoColor);
mypLayer->setColorShadingAlgorithm(QgsRasterLayer::PseudoColorShader);
mypLayer->setContrastEnhancementAlgorithm(QgsContrastEnhancement::StretchToMinimumMaximum,false);
QList<QgsMapCanvasLayer> myLayerSet;
QgsMapLayerRegistry::instance()->addMapLayer(mypLayer,TRUE);
mpMapCanvas->setExtent(mypLayer->extent());
myLayerSet.append(QgsMapCanvasLayer(mypLayer));
mpMapCanvas->setLayerSet(myLayerSet);
}
else
{
QMessageBox::information(NULL,QString(tr("加载图层")),QString(tr("加载失败")),QMessageBox::Yes|QMessageBox::No );
}
备注:(1)baseName和completeBaseName的区别:baseName返回的字符不包含“.”;而completeBaseName返回的字符不包含最后一个“.”之后的字符。
第三步:修改main函数,来支持中文显示,代码如下:
[cpp] viewplaincopy
QgsApplication a(argc, argv,TRUE);
QTextCodec *codec = QTextCodec::codecForName("System");
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForTr(codec);
qgis2 w;
w.show();
return a.exec()
第四步:最后运行效果图如下所示:
相关文章推荐
- QGIS二次开发第四讲
- python qgis 二次开发之一 Ribbon界面风格
- QGis2.9在windows下的编译以及二次开发包下载
- QGis二次开发基础 -- 文字标注
- QGis 二次开发最基础的问题 -- 显示数据
- qgis python二次开发之标注
- QGIS二次开发第一讲(环境配置)
- QGis二次开发基础 -- 销毁当前地图工具
- Qgis图例处理栏(二次开发)
- QGIS二次开发包下载
- QGIS二次开发,我的第一篇
- Qt4.8.6+mingw+Qgis2.4.0基于QGis的二次开发
- QGIS二次开发第三讲
- QGis二次开发基础 -- 根据属性查询要素
- QGIS二次开发基础 -- 编码规范
- QGis二次开发基础 -- 添加矢量要素功能
- 基于开源C++的QGIS二次开发学习(一)——属性拷贝
- qgis二次开发矢量数据点选择的方法
- QGIS二次开发第一讲
- QGis二次开发基础 -- 属性识别工具的实现