qt qgis linux,QT_QGIS_基本使用
QT_QGIS_基本使用
1、打开矢量图层
2、新建矢量图层
1、添加几何要素——点
2、添加几何要素——线
1、打开栅格图层
/* #include "QgsMapCanvas"
* class QgsMapCanvas;
* 继承于QWidget,可以直接当成Widget使用
*/
QgsMapCanvas* m_canvas = new QgsMapCanvas; // 实例化画布
QgsMapToolPan * toolPan = new QgsMapToolPan(m_canvas); // 新建移动工具
// QgsMapToolZoom * toolZoom = new QgsMapToolZoom(m_canvas,true); // 放大工具
// m_canvas->setMapTool(toolZoom);
m_canvas->setMapTool(toolPan); // 将移动工具设置到画布
m_canvas->freeze(false); // 画布解冻
m_canvas->setCanvasColor(QColor(255,255,255)); // 设置画布颜色
m_canvas->setVisible(true); // 设置可见
m_canvas->enableAntiAliasing(true); // 设置可抗锯齿
QGridLayout * layout = new QGirdLayout(this);
layout->addWidget(m_canvas); // 显示画布
1、打开矢量图层
QString fileName = QFileDialog::getOpenFileName(this,
tr("Open shape file"),
"",
"*.shp"); // 选择文件
QStringList list = fileName.split("/"); // 通过"/" 分隔获取的路径
Qstring baseName = list.back; // 图层名
/* #include "qgsvectorlayer.h"
* class QgsVectorLayer;
* 继承 QgsMapLayer
* @parameter1 要打开的文件
* @parameter2 图层名称
* @parameter3 数据提供者的名称,"memory"/"postgres"/...
*/
QgsVectorLayer * layer = new QgsVectorLayer(fileName,baseName,"ogr"); // 实例化矢量图层类
if(!layer->isValid()) // 判断图层是否有效
{
return;
}
QList m_layers; // 创建一个容器用于保存图层
m_layers.append(layer); // 将打开的图层添加到容器
m_canvas->setLayers(m_layers); // 将容器的中的图层设置到画布
2、新建矢量图层
1、添加几何要素——点
/* @parameter1 组成
* 几何类型:
* 点 "Point?"
* 线 "LineString?"
* 多边形 "Polygon?"
* 参照坐标系:
* "crs=epsg:4326&"
* 添加字段:
* "field=id:integer&field=name:string(50)&"
* 创建索引:
* "index=yes&"
*/
QgsVectorLayer * pointLayer = new QgsVectorLayer("Point?crs=epsg:4326&","MyPoint","memory"); // 实例化矢量图层,作为点图层
pointLayer->startEditing(); // 设置图层状态为开始编辑
/* #include "qgsgeometry.h"
* class QgsGeometry;
* 几何类
*/
QgsGeometry point = QgsGeometry::fromPointXY(QgsPointXY(116.46,39.92)); // 调用静态函数,实例化一个几何点
/* #include "qgsfeature.h"
* class QgsFeature;
* QGis 要素类
*/
QgsFeature feature; // 创建要素
feature.setGeometry(point); // 将几何点设置为要素
feature.setAttributes(QgsAttributes() << QVariant(1) << QVariant("test")); // 设置要素属性
/* #include "qgsvectordataprovider.h"
* class QgsVectorDataProvider;
* 继承于 QgsDataProvider(同样继承于此类的还有 QgsRasterDataProvider)
* 是矢量数据提供者的基类
*/
QgsVectorDataProvider * provider = pointLayer->dataProvider(); // 获取点图层的数据提供者的指针,用于添加要素
provider->addFeature(feature); // 将点要素添加到矢量层
// provider->addFeatures(featureList << feature); // 此方法用于添加多个要素
pointLayer->commitChanges(); // 保存图层
pointLayer->updateExtents(); // 更新图层
m_layer.push_front(pointLayer); // 将设置好的图层添加到保存图层的容器中
m_canvas->setExtent(pointLayer->extent()); // 设置画布范围为当前图层的范围,也就是将图层平铺到画布上
m_canvas->setLayers(m_layer); // 将容器设置到画布
m_canvas->refresh(); // 刷新画布
2、添加几何要素——线
/* 添加线的流程和点基本一样
*/
QgsVectorLayer * pointLayer = new QgsVectorLayer("LineString?crs=epsg:4326","MyPoint","memory");
pointLayer->startEditing(); // 设置图层状态为开始编辑
QgsPolyline l;
l << QgsPoint(116.2448,40.0573) << QgsPoint(116.2448,80)
<< QgsPoint(110,80) << QgsPoint(50,50) << QgsPoint(116,40); // 添加若干坐标,组成一条拆线
QgsGeometry line = QgsGeometry::fromPolyline(line); // 调用静态函数,实例化一条拆线
QgsFeature feature; // 创建要素
feature.setGeometry(line); // 设置几何拆线设置为要素
feature.setAttributes(QgsAttributes() << QVariant(1) << QVariant("test")); // 设置属性
QgsVectorDataProvider * provider = pointLayer->dataProvider(); // 获取一个用于添加要素的指针
provider->addFeature(feature); // 将几何点添加到矢量层
// provider->addFeatures(featureList << feature); // 此方法用于添加多个要素
pointLayer->commitChanges(); // 保存图层
pointLayer->updateExtents(); // 更新图层
m_layer.push_front(pointLayer); // 将设置好的图层添加到保存图层的容器中
m_canvas->setExtent(pointLayer->extent()); // 设置画面范围为图层的范围,也就是将图层平铺到画布上
m_canvas->setLayers(m_layer); // 将容器设置到画布
m_canvas->refresh(); // 刷新画布
1、打开栅格图层
// 还没写
后续更新...
qt qgis linux,QT_QGIS_基本使用相关推荐
- qt qgis linux,QGIS初识-Qt编译环境配置
2.添加库头引用:OSGEO4W/include,QGIS/include; 3.添加宏指令: CORE_EXPORT=__declspec(dllimport) GUI_EXPORT=__decls ...
- 使用QT程序控制Linux开发板上的继电器(一)
`使用QT程序控制Linux开发板上的继电器(一)` 测试平台介绍 测试系统接线 编写PlatformIO驱动程序 修改设备树 烧录设备树 Platform字符设备驱动设备框架 完善驱动框架 编写测试 ...
- Qt在Linux下如何查找可用字体
最近遇到一个问题:一个Qt程序在Windows上正常运行,在Linux下编译运行后汉字就全变成方块了,成了名副其实的"方块字". 我一开始考虑是字符编码问题,调用QChar::un ...
- QT在linux环境下读取和设置系统时间
QT在linux环境下读取和设置系统时间 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:Fedora12 开发软件:QT 读取系统时间 ...
- QT OpenCV Linux
OpenCV with Qt OpenCV Tutorials-Installation in Linux use this tutorial to install OpenCV i ...
- qt调用linux系统的线程函数吗,Qt之主线程与子线程通讯(linux下)
Qt之主线程与子线程通信(linux下) 转载请注明出处:http://blog.csdn.net/feng1790291543 主线程与子线程通信主要是通过Qt上的Gui按钮,触发使得主线程上的信息 ...
- qt调用linux 进程,Linux 下qt 程序打包发布(使用linuxdelpoyqt ,shell 脚本)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u014746574/article/d ...
- qt creator linux安装教程,- Qt Creator下载和安装(详细教程)
如果想用一个exe干净利落的发布程序,就需要使用静态编译版的Qt库,网上有教程,我就不多说了,可以教大家用现成的,在Git-hub上正好有静态Qt库: https://github.com/foste ...
- linux下 发布qt程序,Linux下发布qt程序
安装patchelf 百度搜索,然后解压 进入文件夹用终端打开 然后执行命令: ./configure make sudo make install 编译linuxdeployqt 源码下载地址: h ...
最新文章
- 剑指offer:面试题28. 对称的二叉树
- DbUtils工具类使用
- Sort_Buffer_Size 设置对服务器性能的影响
- Word2013、2016中页码总页数设置为当前节总页数
- 03_Introduction_to_AMBA_AXI
- 坑 之 Tensorflow安装在导入模块时会出现ImportError: DLL load failed: 找不到指定的模块的问题
- 安装spark1.3.1单机环境
- stl min函数_std :: min()函数以及C ++ STL中的示例
- JavaScript的OO特性:静态方法
- optistruct线性求解一次二次单元应力位移比较
- 用python写模拟鼠标脚本
- 彩虹易支付最新版开源版源码分享
- Javadoc 使用详解
- 凑个热闹 谈谈网红沈大师
- 【CSDN英雄会】黄帅:安全不是独行侠而是系统性的运维过程
- 将WordPress后台的open-sans字体加载源从Google Fonts换为360 CDN
- 所有计算机专业的学生应该认识到的
- 顶会速递 | ICLR 2020录用论文之元学习篇
- 图像处理软件(基本功能都已实现,含源码)
- 基于FPGA的多功能数字时钟设计报告
热门文章
- call()与apply()的区别与作用
- 拉格朗日乘子法几何意义
- android studio防止反编译,防反编译利器-Android studio混淆代码压缩apk包体积
- vscode remote ssh 重新连接_使用 VSCode 愉快地进行 R 远程开发
- OpenShift 4 - Knative教程 (6) Eventing之Channel和Subscription
- 使用Redis和Apache Kafka处理时间序列数据
- 统一并发 III——跨基准测试
- PostgreSQL中生成的列
- 为什么真正的神经元学得更快
- android 并排按钮,Android TextView和Button并排,ellipsize左侧TextView