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