一、加載柵格圖像
加載柵格圖像的詳細步驟在下面代碼里:
//添加柵格數據按鈕槽函數 void MainWindow::addRasterlayers() { //步驟1:打開文件選擇對話框 QString filename=QFileDialog::getOpenFileName(this,tr("打開柵格數據"),"","remote sensing image(*.tif *.tiff);;image(*.jpg *.jpeg *.png *.bmp)"); if(filename.isNull())//如果未選擇文件則返回 return; QFileInfo fi(filename); QString basename=fi.baseName();//獲取柵格數據名稱 //步驟2:創建QgsRasterLayer類 QgsRasterLayer* rasterLayer=new QgsRasterLayer(filename,basename,"gdal",false); if(!rasterLayer->isValid())//如果圖層不合法 { QMessageBox::critical(this,"error","圖層無效!"); return; } //步驟3:注冊添加柵格數據,並個並添加到畫布中 QgsMapLayerRegistry::instance()->addMapLayer(rasterLayer); m_mapCanvasLayerSet.append(rasterLayer); m_mapCanvas->setExtent(rasterLayer->extent());//設置顯示范圍。Extent:范圍、尺度 m_mapCanvas->setLayerSet(m_mapCanvasLayerSet);//設置圖層集合 m_mapCanvas->setVisible(true);//設置是否可見 m_mapCanvas->freeze(false);//設置是否凍結對圖層的操作 m_mapCanvas->refresh();//刷新 //在狀態條設置地圖的比例尺 double dCurrScale= m_mapCanvas->scale(); QString sCurrScale=this->m_scaleEdit->toString(dCurrScale); this->m_scaleEdit->setScaleString(sCurrScale); }
二、加載矢量圖層
加載矢量圖層跟柵格圖層差不多的步驟,這里矢量圖層指的是shp文件。具體代碼如下:
//添加矢量數據小按鈕槽函數 void MainWindow::addVectorlayers() { //步驟1:打開文件選擇對話框 QString filename=QFileDialog::getOpenFileName(this,tr("打開矢量數據"),"","ESRI Shapefile(*.shp)"); if(filename.isNull())//如果未選擇文件則返回 return; QFileInfo fi(filename); QString basename=fi.baseName();//獲取文件基名稱 //步驟2:創建QgsVectorLayer類 QgsVectorLayer* vecLayer=new QgsVectorLayer(filename,basename,"ogr",false); if(!vecLayer->isValid())//如果圖層不合法 { QMessageBox::critical(this,"error","圖層無效!"); return; } //步驟3:注冊添加矢量數據,並個並添加到畫布中 QgsMapLayerRegistry::instance()->addMapLayer(vecLayer); //設置該圖層的單一渲染風格 QgsSymbolV2* symbol = QgsSymbolV2::defaultSymbol(vecLayer->geometryType());//QGis::GeometryType::Polygon symbol->setColor(QColor(100,100,156,255)); vecLayer->setRendererV2( new QgsSingleSymbolRendererV2(symbol) ); m_mapCanvasLayerSet.append(vecLayer); m_mapCanvas->setExtent(vecLayer->extent());//設置顯示范圍。Extent:范圍、尺度 m_mapCanvas->setLayerSet(m_mapCanvasLayerSet);//設置圖層集合 m_mapCanvas->setVisible(true);//設置是否可見 m_mapCanvas->freeze(false);//設置是否凍結對圖層的操作 m_mapCanvas->refresh();//刷新 //在狀態條設置地圖的比例尺 double dCurrScale= m_mapCanvas->scale();//world.shp文件默認打開的比例尺為:91329159:1 QString sCurrScale=this->m_scaleEdit->toString(dCurrScale); this->m_scaleEdit->setScaleString(sCurrScale); }
參考鏈接: