一、加载栅格图像

加载栅格图像的详细步骤在下面代码里:

//添加栅格数据按钮槽函数
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);
}

参考链接:

1、QGis(一)加载栅格图层和矢量图层

2、Qgis开发3-加载矢量、栅格图层

3、QGis 二次开发基础 -- 显示数据

Qt+QGis二次开发:加载栅格图层和矢量图层的更多相关文章

  1. Qt Qgis 二次开发——鼠标点击识别矢量要素

    Qt Qgis 二次开发--鼠标点击识别矢量要素 介绍: 识别矢量要素需要用到QGis的一个工具类:QgsMapToolIdentifyFeature 一个QgsMapTool的子类的子类,官方文档描 ...

  2. Qt+QGIS二次开发:开发环境搭建(超级详细)

    原文链接: 1.qgis二次开发环境搭建(超级详细) 2.QGIS开发教程(1)——QGIS开发准备工作 3.QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  3. Qt+QGIS二次开发:自定义类实现查询矢量数据的属性字段值(图查属性)

    在GIS领域,有两种重要的查询操作,图查属性和属性查图. 本文主要介绍如何在QGIS中通过从QgsMapToolIdentify中派生自定义类实现查询矢量数据的属性字段值(图查属性). 重点参考资料: ...

  4. Qt+QGis二次开发:矢量图层的显示样式

    原文链接:QGis二次开发基础 -- 矢量图层的显示样式

  5. Qt+QGis二次开发:打开S-57格式(*.000)电子海图数据,并设置多边形要素的显示风格

    不过多的废话了,直接上源码: addChartlayers()方法时“打开海图”按钮的triggered()信号所绑定的槽函数. //添加海图数据小按钮槽函数 void MainWindow::add ...

  6. Qt+QGIS二次开发:读取矢量元素及其属性

    1  概述矢量图层内矢量元素组成,矢量图层的加载由驱动实现,驱动必须实现对矢量图层内元素的读写操作功能. 2 原理矢量元素包含几何和属性两部分组成.几何部分用于提供图形相关内容.属性部分提供与几何相关 ...

  7. Qt+QGis二次开发:创建临时图层并添加要素

    开发环境:Win10 + VS2010 + Qt 4.8.6 + QGis 2.14.4 其实本文实现的功能类似于QGis中“添加文本数据图层”的一个简化版,本文不会涉及到对话框的使用,不通过与用户互 ...

  8. Qt+QGIS二次开发:QGIS里的编程模型

    项目(QgsProject) 用于读写项目状态 图层分组(QgsLayerTreeGroup) 项目树的分组节点,用来存放图层节点. 图层节点(QgsLayerTreeLayer) 项目树的图层节点. ...

  9. SkylineGlobe 如何实现二次开发加载KML文件

    示例代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

随机推荐

  1. SQLServer删除登录记录用户名和密码

    介绍: 作为一名开发人员都会知道我们做的项目都要用到数据库,数据库都需要账号和密码,然而问题来了,做的东西多了那些没用的账号和密码还在哪里纠缠着我们.所有我们不能忍了删除掉他. 网上很多都是2008的 ...

  2. 搜藏一个php文件上传类

    <?php /** * 上传文件类 * @param _path : 服务器文件存放路径 * @param _allowType : 允许上传的文件类型和所对应的MIME * @param _f ...

  3. 13.Linux键盘按键驱动 (详解)

    在上一节分析输入子系统内的intput_handler软件处理部分后,接下来我们开始写input_dev驱动 本节目标: 实现键盘驱动,让开发板的4个按键代表键盘中的L.S.空格键.回车键 1.先来介 ...

  4. HTML中body与html的关系

    转载自张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com] 一.相关基础 一个div块级元素没有主动为其设置宽度和高度,浏览器会为其分配可使用的最大宽度(比如全屏宽度),但是不 ...

  5. 调用get_str_time(时间), 就能把毫秒的时间转换成格式化的 ,转化时间戳的方法

    function get_str_time(time){ var datetime = new Date(); datetime.setTime(time); var year = datetime. ...

  6. 网络编程学习二(IP与端口)

    InetAddress类 封装计算机的ip地址,没有端口 // 使用getLocalHost方法创建InetAddress对象 InetAddress addr = InetAddress.getLo ...

  7. python 通过 pip 更新所有已安装的包

    较新的 pip 已经支持 list --outdated 了,所以记录一下新的方法: pip list --outdated --format=legacy |awk '{print $1}' |xa ...

  8. React 入门学习笔记整理(一)——搭建环境

    使用create-react-app脚手架搭建环境 1.安装node .软件下载地址:https://nodejs.org/en/,我下的推荐的版本. 安装之后测试是否安装成功.windows系统下, ...

  9. python 类函数,实例函数,静态函数

    一.实现方法 class Function(object): # 在类定义中定义变量 cls_variable = "class varibale" def __init__(se ...

  10. Linux 操作系统下的环境变量设置

    Linux下的环境变量设置 by:授客 QQ:1033553122 1.  问题描述 linux输入命令时经常会出现提示:xxx:Command not found 2.  原因分析 Command ...