
QIS
文章平均质量分 97
张明奇-琦玉
乐观,自信,阳光,相信明天会更好
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
PyQGIS开发 -- 创建第一个插件
上一节讲到了如何配置PyQGIS开发环境,以及使用Eclipse+PyDev工具进行QGIS开发调试。前面该说的都已经说了,以后就不废话,直接进入正题了。摘要本文将会详细阐述如何使用Python创建QGIS插件。创建插件最简单的插件开发工程构建方法,无非是使用Plugin Builder这个插件了。首先,打开QGIS软件,在菜单栏选择“Plugins -> Manage and Install Plugins”,搜索并添加“Plugin Builder”这个插件。安装成功转载 2020-11-01 10:36:05 · 555 阅读 · 0 评论 -
QGis二次开发基础 -- 属性识别工具的实现
属性识别工具,也就是常用的 identify 工具,它常常与诸如放大、缩小等地图工具放在一起,提供浏览地图要素的一项基本功能。为什么要单独讨论一下这个工具,是因为它与普通的地图浏览工具的实现有一些微小的差异。下面通过源代码的学习,来了解这个工具的实现方法以及掌握属性识别功能的实现机制。相关类要实现一个功能,首先自然是找到这个功能相关的类,并查看类之间的一些关系。这里,属性识别也是地图工具,因此,先查看一下地图工具类,也就是 QgsMapTool 类。QgsMapTool 类是一个抽象类,它的子类转载 2020-11-01 10:34:26 · 2025 阅读 · 3 评论 -
QGis二次开发基础 -- 根据属性查询要素
属性查询是GIS应用不可缺少的重要功能,尤其是在各种业务系统中,根据用户输入相应的查询条件,从属性要素中快速定位到用户感兴趣的要素,为业务应用提供了便利。本文就来聊一聊QGis二次开发中如何实现属性查询功能。其实这个功能我在写属性表格功能的实现时就提到过相应的参考源码了,只不过当时没有给出具体的实现方案。功能简介还是简单描述一下功能的使用。首先来看看通过属性来筛选属性表,打开属性表,见下图在左下角分别点击 “Show All Features In Initial Canvas Ext转载 2020-11-01 10:32:55 · 2897 阅读 · 0 评论 -
关于QGis1.8二次开发的环境配置
这篇文章是基于已经正确编译并且生成二次开发所需的库文件的基础上的,如果你还没有得到开发的库文件,请参见我的上一篇博文,点击这里查看。OK,要进行二次开发首先就是环境配置。这里使用的QGis版本为1.8。打开Visual Studio 2010,新建一个Qt application(如果你没有这个项目模板说明你没有正确安装Qt for vs add-in插件),这样做可以避免我们手动去添加Qt的库文件目录。出现如下界面:注意将 XML library勾上,这个非常重要,不然后面会报错。因为QgsM转载 2020-11-01 10:31:23 · 717 阅读 · 0 评论 -
QGis二次开发基础 -- 图标不显示问题
这篇文章将会解决QGis编译之后,部分图标不显示的问题,相信很多同学在Windows下编译时都遇到过这个问题,症状看下图。可以看到,其实并不是所有图标都不显示的,有一部分能够显示,说明并不是图标文件有问题,也不应该是缺少了一部分图标文件。实际上,肯定有同学还用Qt Designer打开过名为“qgisapp.ui”的文件,但是却可以明显看到图标显示正常,如下图。这说明,图标文件齐全、路径正确。但为什么运行程序时有些图标不显示呢?仔细观察会发现,这些不显示的图标都是“svg”格式的,例如下转载 2020-11-01 10:28:55 · 2169 阅读 · 1 评论 -
QGis二次开发基础 -- 构建图层管理器
为了回应有些同学对上一篇博文的建议,这篇文章主要关注于QGis二次开发中的“图层管理器”的实现。使用QGis构建独立应用系统,我相信大部分同学应该还是关注于GIS基本功能框架构建上,也就是一些基本的GIS功能,例如:数据的显示、漫游浏览等 读入数据的管理,也就是“图层管理器”功能 数据基本信息的查询,例如空间坐标、投影查询,属性表查询等 数据编辑,包括对属性表的编辑和矢量文件形状的编辑等虽然各个应用系统的功能不尽相同,各种处理算法层出不穷,但是我想以上几个功能需求应该是通用的。通过上一篇转载 2020-11-01 10:27:42 · 2026 阅读 · 2 评论 -
QGis二次开发基础 -- 属性表格
属性表想必是每个GIS系统必备的功能,也正是因为GIS矢量数据支持各种各样的属性与针对属性的操作功能,才使得GIS矢量图形与普通的绘画图形具有根本的区别。今天来探讨一下用QGis实现矢量图形的属性表显示功能。)写在前面本来核心的代码就几句,直接贴上来似乎就能解决问题。但是本着严谨的态度,还是详细的分析一下机理。借此也阐述出我对开源代码的学习方法,并不是我的方法就有多么好,而是希望大家能够从中看到一些可供借鉴的地方,同时也让我与大家产生了交流,完善我自己的方法。因此后续的内容分为两块,一个是详细的介绍转载 2020-11-01 10:24:48 · 3921 阅读 · 1 评论 -
QGis二次开发基础 -- 栅格图像增强显示
作为一个GIS软件,对栅格图像的基本支持也是必须的。QGis能够打开显示多种格式的栅格图像,包括常用的JPEG、PNG,以及遥感图像格式ENVI Image、GeoTIF等。今天想来聊一聊简单的几个调整栅格图像对比度、亮度以及拉伸增强显示的基本功能。关于如何添加数据显示,请参考栅格矢量数据显示两个类QgsRasterLayer栅格图层QgsRasterLayer与 QgsVectorLayer 一样,都是 QgsMapLayer 的子类,是作为地图空间显示的图层对象。这个对象包含了...转载 2020-10-31 21:54:20 · 2638 阅读 · 1 评论 -
QGis二次开发基础 -- 矢量图层属性图表显示
矢量图层属性的图表显示功能,帮助我们以图形化的方式更直观地显示数据当中的信息,使得数据生动起来的同时也变得更美观。QGis当中提供了默认三种图表,分别是饼状图、柱状图以及文本图。下面我们就来看一下在二次开发中如何实现这样的功能。饼状图文本图柱状图QgsDiagramRendererV2首先,认识一下控制图表显示的渲染类QgsDiagramRendererV2。这个类在 QgsVectorLayer 中具有引用指针,通过 QgsVectorLayer 的 setDiagramRend.转载 2020-10-31 21:38:09 · 1928 阅读 · 0 评论 -
PyQGIS开发 -- 环境搭建
QGIS虽然在国内普及程度不高,但确实是一个非常优秀的GIS软件。而之所以普及度不高,一方面是因为QGIS相较于ESRI的ArcGIS平台开发门槛更高,环境配置麻烦,接口教程较少,初学者上手非常麻烦。另一方面是因为ArcGIS进入国内较早,很多ESRI独有的数据格式现在已经成为了国内不少行业的标准,而QGIS对这部分格式的支持目前尚不完善。但是,随着GIS应用越来越广泛,会有更多的其他行业需要GIS软件处理、展示,开源、免费、轻量级的QGIS相信会被越来越多的人关注到。QGIS开发一直是笔者关注的问题,转载 2020-10-31 21:36:18 · 766 阅读 · 0 评论 -
QGIS二次开发基础 -- 编码规范
这篇文档是QGIS官方的编码规范说明,对于新手来说,应该可以有一些指引作用,知道如何编码是比较规范的。对于老手来说,掌握QGIS源码规范更有助于阅读理解代码。当一回搬运工,帮大家翻译一下。类(Class)名称QGIS中的类名称以“Qgs”开头,使用CamelCase命名规范例如:QgsPoint QgsMapCanvas QgsRasterLayer成员类中的成员变量以一个小写字母‘m’开头,使用混合命名规范例如:mMapCanvas mCurrentExtent所转载 2020-10-31 21:34:40 · 863 阅读 · 0 评论 -
QGIS二次开发基础 -- 要素查询代码的优化问题
代码的效率问题是我们非常关注的核心问题之一,当你在说一个软件、一个第三方库在做某方面事情的效率不高的时候,一定要留意自己是否采用了正确的方式。凡事,先反思反思自己身上的问题。这篇文章并非笔者原创,而是来自QGIS Planet的一篇博客,偶然看到这篇文章,觉得可能对大家有帮助,于是就翻译和整理出来了。虽然以下内容主要是PyQGIS脚本,但是Python和C++的QGIS接口是基本一致的,因此使用C++的同学相信也会有所收获。查询要素时,通常会使用到矢量图层的 QgsFeatureRequest转载 2020-10-31 21:32:31 · 960 阅读 · 0 评论 -
QGis二次开发基础 -- 文字标注
Label 这个功能是为了更直观的将矢量数据的属性信息显示在地图上,方便用户在浏览地图的时候查看。几乎每个 Gis 系统都会有这个基础功能,QGis 的 Label 更是非常漂亮,不仅支持标注的轮廓缓冲区功能,还可以给标注绘制上阴影效果等。今天就来说一说 QGis 二次开发中的文字标注功能的实现。在这里补充一点:如果你的 QGis 显示出的矢量图层中文是乱码,不论是属性表里面的乱码还是 Label 上显示的乱码,都是字符编码的问题。照下面的图,在图层属性里面,打开“通用”面板,设置“数据源编码”转载 2020-10-31 21:30:44 · 4623 阅读 · 3 评论 -
QGis二次开发基础 -- 销毁当前地图工具
由某位朋友需求,在设置了地图控件之后,怎么才能将当前的地图工具释放掉,返回原来的空地图状态。比如刚刚打开程序的时候,鼠标指针是一个箭头,表示没有地图工具,也不能在地图上直接操作。而点选某个地图工具后(例如漫游工具,鼠标指针会变成一个小手),现在想释放掉这个设置的地图工具。这个需求我之前没有想到过,大多数时候我都是直接选择漫游工具来释放其他的地图工具。而看到这个需求我的一反应就是将 mapTool 设置为 null 就行了。但是那个朋友实验之后反馈给我说不行。于是我自己打开工程,简单拨弄了几下。原来 Q转载 2020-10-31 20:49:38 · 687 阅读 · 1 评论 -
QGis二次开发基础 -- 添加矢量要素功能
矢量编辑的功能,是让GIS软件成为生产力工具所必备的基础功能。本文想跟大家探讨一下QGis二次开发中的添加矢量要素功能。文章的示例工程地址在https://github.com/Jacory/qgis_dev, 可fork自己的版本,并留意我不定时的更新注意:本文开头部分代码比较多,篇幅比较长。虽然并非所有东西都与本文直接相关,但是我想通过前面的介绍,让大家对工具的功能实现有个基本的了解,这样自己扩展功能的时候才有明确的思路。注意2: 本文目前还并没有完全写完,后文的UML图显示也不完整,.转载 2020-10-31 20:47:18 · 2282 阅读 · 1 评论 -
QGis 二次开发基础 -- 显示数据
一直在忙别的事情,有很长一段时间没有做QGis。(忙着毕业,老师还要我写SCI,着实不容易。)在QGis的QQ群中很多初学者同学提出的一些问题,也没有怎么帮到大家,在这里讲一声抱歉了。(顺带宣传一下,QGis二次开发交流QQ群:68016799。)我也仅仅是刚入门而已,希望能够跟共同喜欢探索、喜欢开发的同学共交流。写在前面,QGis源码编译请看这里 –QGis2.9.0源码编译及二次开发包下载, 二次开发环境配置请看这里 –qgis二次开发环境配置今天正好有空,就想写一个非常基础的二次开发教程给..转载 2020-10-31 20:40:50 · 1868 阅读 · 3 评论 -
关于QGis编译
经过刚好一个星期,我终于把QGis进行二次开发的环境搭建好了,在这里分享下我的经验,希望能够对正在进行这方面研究的朋友有一定的帮助,别像我一样走了那么多弯路。我所使用的系统为Windows8.1企业版,成功编译QGis1.8.0,使用VS2008编译,但是在二次开发的时候我使用了VS2010。我最开始编译的是QGis2.2.0的源代码,分别用VS2008和VS2010编译,但是一直没有编译成功,有编译成功的朋友也请指点我一下,谢谢!OK,进入正题。首先提供一个只希望编译并参考QGis源代码的简单编译转载 2020-10-31 20:34:43 · 908 阅读 · 0 评论 -
VS2013 +QT5.7+QGIS2.18
完全编译设置:解决方法是:选中该项目 然后 右键 -> 属性 -> 链接器->高级 -> 入口点 加入mainCRTStartup,需要修改的工程包括:qgis,qgis_bench,qbrowser,qgis_help,qgis_maptopixeltest , qgis_pallabelingtest , qgis_pointlocationte...原创 2017-11-30 22:27:09 · 2285 阅读 · 1 评论