QGIS二次开发第四讲

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

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

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

[cpp]  view plain copy
  1. //4th 代码  
  2. #include <qgsrasterlayer.h>  
  3. #include <qmessagebox.h>  

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

[cpp]  view plain copy
  1. //4th 代码  
  2.     QFileInfo myRasterFileInfo("../data/Abarema_jupunba_projection.tif");  
  3.     QgsRasterLayer *mypLayer = new QgsRasterLayer(myRasterFileInfo.filePath(),myRasterFileInfo.completeBaseName());  
  4.     if (mypLayer->isValid())  
  5.     {  
  6.         QMessageBox::information(NULL,QString(tr("加载图层")),QString(tr("加载成功")),QMessageBox::Yes|QMessageBox::No);  
  7.           
  8.         mypLayer->setDrawingStyle(QgsRasterLayer::SingleBandPseudoColor);  
  9.         mypLayer->setColorShadingAlgorithm(QgsRasterLayer::PseudoColorShader);  
  10.         mypLayer->setContrastEnhancementAlgorithm(QgsContrastEnhancement::StretchToMinimumMaximum,false);  
  11.           
  12.         QList<QgsMapCanvasLayer> myLayerSet;  
  13.   
  14.         QgsMapLayerRegistry::instance()->addMapLayer(mypLayer,TRUE);  
  15.   
  16.         mpMapCanvas->setExtent(mypLayer->extent());  
  17.         myLayerSet.append(QgsMapCanvasLayer(mypLayer));  
  18.         mpMapCanvas->setLayerSet(myLayerSet);  
  19.     }  
  20.     else  
  21.     {  
  22.         QMessageBox::information(NULL,QString(tr("加载图层")),QString(tr("加载失败")),QMessageBox::Yes|QMessageBox::No     );  
  23.     }  

备注:(1)baseName和completeBaseName的区别:baseName返回的字符不包含“.”;而completeBaseName返回的字符不包含最后一个“.”之后的字符。

第三步:修改main函数,来支持中文显示,代码如下:

[cpp]  view plain copy
  1. QgsApplication a(argc, argv,TRUE);  
  2.     QTextCodec *codec = QTextCodec::codecForName("System");  
  3.     QTextCodec::setCodecForCStrings(codec);  
  4.     QTextCodec::setCodecForLocale(codec);  
  5.     QTextCodec::setCodecForTr(codec);  
  6.     qgis2 w;  
  7.     w.show();  
  8.     return a.exec()  

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值