QGis
阿酷亚莫塔塔(张学鹏)
共同学习,共同进步
展开
-
Qgis二次开发,获取图层原路径
QgsRasterLayer* l = qobject_cast<QgsRasterLayer *>(layer);//获取图层 QString fileQmd = l->metadataUri(); fileQmd.chop(3); QString fileName = fileQmd + "tif";//这里以栅格TIF为例,可以换成其他格式原创 2020-10-12 21:35:27 · 1094 阅读 · 0 评论 -
QGIS二次开发,拖放打开文件(Qt基本控件也适用)
为了将自己写的程序平时更好用更人性化,其中拖放打开文件是软件一个不可少的功能,有了这个功能免去了打开按钮再找文件对应路径的麻烦,虽然本文中介绍的是QGIS二次开发内容中的一部分,但是用的是Qt功能,所以也适用Qt中控件打开某种格式的文件,下面就介绍如何写这个功能。 拖放功能事件的完成是由两个响应事件完成,分别为 QDragEnterEvent与QDropEvent。这...原创 2020-04-27 15:52:55 · 1710 阅读 · 6 评论 -
QGis二次开发,基本功能实现
最近在查看QGIS源码,经过几天的努力把基本功能实现了,界面如下:其中基本功能包括新建、打开项目、打开矢量文件、打开栅格文件、保存、另存为、漫游、识别、放大、缩小、全图、二次开发帮助、图层管理。因为map工具的实现方式基本都是一样,所以只实现这几个,可还对照源码实现其他功能。一、文件功能文件功能可以参照我以前的博客。二、漫游、识别、放大、缩小、全图1.工具的创建 ...原创 2020-04-15 15:49:13 · 10431 阅读 · 21 评论 -
QGis编译出现 Oops, looks like an error loading Qgis, Details Could not load qgis_app.dll.
QGIS通过CMAKE编译后用VS2015生成没问题,一旦运行就会出现下面的问题。Error loading QGISOops, looks like an error loading Qgis, Details Could not load qgis_app.dll.Window Erro: The specified procedure could not be found.H...原创 2020-04-09 17:38:58 · 3290 阅读 · 14 评论 -
QGIS-3.10.4在 Qt(5.11.2)+VS2015(x64)环境下的编译
这几天一直在搞QGIS的编译,刚开始想要编译的是QGIS3.12.1版本,对照着在网上找到的安装步骤一步一步的安装并且反复的试,很可惜都没有成功。后来怀疑是不是QGIS版本的原因,所以就换了一个低的版本QGIS-3.10.4,也是一个长期版本,再按照安装步骤进行安装仍然没有成功。看见别人的能安装成功而自己的电脑安装不成功,换电脑的想法都有了(...),不过几天的努力还是没有白费成功...原创 2020-04-09 17:29:23 · 2497 阅读 · 9 评论 -
QGis二次开发,子父窗口同步与不同步加载影像
今天写了两个窗口来来加载影像,一个是父窗口的Canvas另一个是子窗口的Canvas,我写子窗口是为了写几何校正的所以用到了一个Canvas来显示影像与校正的成果,但是我发现每次要显示影像时,子窗口的Canvas显示影像就会引起父窗口的Canvas也显示同一张影像,如下:上面就是子父窗口的影像同步显示,这是因为在子窗口的影像显示时有下面一行代码,其中my_rasterLa...原创 2020-01-03 20:51:41 · 624 阅读 · 0 评论 -
QGis二次开发,栅格影像像元识别工具的实现(下)
代码:1.重写鼠标事件// 创建一个自己的类(*.h)class myMapCanvas : public QgsMapCanvas{ Q_OBJECTpublic: myMapCanvas(QWidget *parent); ~myMapCanvas();signals: void sendXY(QPoint point);protected: vir...原创 2020-01-01 22:54:07 · 378 阅读 · 0 评论 -
QGis二次开发,栅格影像像元识别工具的实现
栅格影像像元识别是GIS中普通的工具,在这篇文章中就用QGis的二次开发来说说是怎么实现的,因为难度不大,所以在这就不过多的来说。在QGis中在工具栏中,如下图: 这个工具的实现不同的人会有不同的方法,我用的是对QgsMapCanvas重写,添加一个鼠标点击事件来获取当前鼠标的坐标值,再用QgsMapToolIdentify来实现被点击像元的值。结果如下:...原创 2019-12-31 22:43:15 · 1390 阅读 · 1 评论 -
QGis二次开发,栅格图层波段的保存
对于栅格或矢量影像的读取并显示出来在前面的文章中已经写出,显示方面可以参考前面的文章。在这个文章中主要写的是把栅格影像读取出来后,若是对其进行了处理后如何把栅格波段保存成为TIF格式的文件。 如果学习过GDAL的话就很容易理解,和GDAL的保存成TIF文件差不多,下面是具体的代码与步骤,可以作为参考:1.首先是获取栅格图层 QgsRasterLayer ...原创 2019-12-27 17:44:13 · 2055 阅读 · 0 评论 -
QGis二次开发,栅格影像计算
最近在写一个栅格计算器,用到了两个类,一个是QgsRasterCalculatorEntry,另一个是QgsRasterCalculator。这两个类就可以实现栅格计算器的功能。 在使用QgsRasterCalculatorEntry与QgsRasterCalculator这两个类之前要引入一个头文件#include <qgsrastercalculator....原创 2019-12-26 19:03:10 · 2707 阅读 · 7 评论 -
QGis二次开发,引用头文件后遇到无法解析的外部符号
在我们写程序时有时会遇到无法解析的外部符号 ,常见的情况解决方法网上都找到。在这要解决的是QGis二次开发引用头文件后遇到无法解析的外部符号,这个问题的解决花费了好大的精力,也走了不少弯路,庆幸的是最后得以解决了,当然少不了网友的帮助。 我要写的程序是进行影像的栅格计算,在抠源码时把源码写入自己的程序后就出现问题了,我引入的头文件是#include <q...原创 2019-12-25 19:41:17 · 1213 阅读 · 3 评论 -
QGis总是无响应的原因之一
QGis无响应的原因可能有多种,以下解决QGis无响应的方法是本人所遇到的,可能解决不了所有QGis无响应的情况,但是值得试一试,作为参考。 前几天安装QGis后是可以正常运行的,但在今天运行时总是无响应,只要是打开QGis后不管点击什么事件都会圆圈转个不停变成无响应,把QGis卸载后又重新装了一次还是出现同样的情况,后来想到了昨天安装了一个有道词典,把有道词典停止运行后再打开Q...原创 2019-12-23 19:42:10 · 7198 阅读 · 20 评论 -
QGis打开EXCEL中的点坐标
我们通常用ARCGIS打开EXCEL中的点坐标导入XY坐标,选中EXCEL文件(*.xls)就行,在QGis中打开EXCEL文件(*.xls)是需要先将EXCEL文件(*.xls)转换成*csv文件后才能导入坐标数据。步骤如下:1.用EXCEL打开坐标文件(*.xls),另存为*.csv文件。2.打开QGis,图层-->添加图层-->添加文本数据图层,选好以...原创 2019-12-12 17:10:07 · 5059 阅读 · 10 评论 -
QGis二次开发,打开影像并在Qt控件中显示
在这介绍的是通过QGis的二次开发,将影像打开后然后显示在Qt的控件中,我用的这个控件是QTabWidget。总体的思想是就是将QgsMapCanvas这个类的实例化对象添加到QTabWidget里面,显示QTabWidge的时候就会把QgsMapCanvas也显示出来,这就实现了通过Qt的控件来显示影像。1.首先将QgsMapCanvas这个类的实例化对象添加到QTabWid...原创 2019-12-23 19:45:09 · 3649 阅读 · 6 评论