您的位置:首页 > 其它

QGIS二次开发第四讲

2013-05-24 22:22 561 查看

本讲主要实现了加载raster数据功能

主要用到的类是qgsrasterlayer,代码是在第二讲的基础上进行修改完成的。

第一步:修改qgis2.h文件,增加以下头文件

[cpp] view
plaincopy

//4th 代码

#include <qgsrasterlayer.h>

#include <qmessagebox.h>

第二步:修改qgis2.cpp文件,主要修改addlayer函数,修改后的代码如下:

[cpp] view
plaincopy

//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] view
plaincopy

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()

第四步:最后运行效果图如下所示:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: