QGIS 2차 개발 제4강

1947 단어 QT&QGIS

본 강의는 주로raster 데이터를 불러오는 기능을 실현하였다.


주로 사용되는 클래스는 qgsrasterlayer이고 코드는 제2강의 토대 위에서 수정된 것이다.


1단계:qgis2 수정h 파일, 아래 헤더 파일 증가

//4th   
#include 
#include 

2단계: 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 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) 베이스Name과completeBaseName의 차이점: 베이스Name이 되돌아오는 문자는 "."을 포함하지 않습니다.completeBaseName에서 되돌아오는 문자는 마지막 "."을 포함하지 않습니다.다음 문자입니다.

3단계: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()

4단계: 마지막 실행 효과 그림은 다음과 같습니다.

좋은 웹페이지 즐겨찾기