现在的位置: 首页 > 综合 > 正文

QGIS二次开发第四讲

2013年10月12日 ⁄ 综合 ⁄ 共 1415字 ⁄ 字号 评论关闭
文章目录

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

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

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

//4th 代码
#include <qgsrasterlayer.h>
#include <qmessagebox.h>

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

//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函数,来支持中文显示,代码如下:

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

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

抱歉!评论已关闭.