Qgis开发5-完整的Qgis系统库

——qis_app库

sf2gis@163.com

2014年8月15日

1  概述

qgis_app是一个完整的gis系统,可以将所有的部件作为二次开发的部分使用,甚至可以直接使用整个系统作为一个部件。

qgis_app具有一个完整的GIS主界面和多个plugin插件,这些插件与plugin之间使用python进行交互。因此完整的使用app,需要使用python和相关插件的支持。对于每一种插件,需要同时具有python脚本和dll库才能正常使用。

2 原理

qgisApp作为一个主窗体,是QMainWindow的派生类。可以直接作为QgsApplication的活动窗体运行。注意,qgisApp需要设置一个启动界面(QSplashScreen)和是否加载插件的选项。

由于qgisApp中使用python作为插件交互的平台,所以一定要指定python的工作目录PYTHONHOME=….(放在debug的enviroment或者系统环境变量中)。

由于qgisApp需要使用很多插件,所有需要设置一个配置文件(qgsconfig.h,由cmake指定)和插件的位置(把install中的所有文件放在exe同级目录下)。

qgisapplication:用于代替QApplication,可以指定配置文件目录(程序使用的配置文件,用于存储一些个人喜好设置等。),如果不指定,或指定目录无效,则默认使用当前用户的用户文档(C:/document and setting/user/.qgis2)。

3 使用方法

3.1 准备

设置环境变量:项目属性-》debugging-》enviroment:设置PYTHONHOME。

设置qgis的头文件目录(由于qgis_app中含有其它头信息,不在基本库之内,所有需要指向app源程序代码和编译生成的ui,qgspluginmanager,python这个应该在编译的时候可以设置:todo)。

"F:\DevelopWare\OGC\QGIS\qgis-latest\sourcecode\src\app";

"F:\DevelopWare\OGC\QGIS\qgis-latest\vc2008_bak\build2008\src\ui";

"F:\DevelopWare\OGC\QGIS\qgis-latest\sourcecode\src\app\pluginmanager";

"F:\DevelopWare\OGC\QGIS\qgis-latest\sourcecode\src\python"

添加库引用文件:加入qgis_app.dll/lib

把Install(C:\programfiles(x86)\qgis2.4.0)下所有文件copy到exe目录下,因为qgisapp会在同级目录下寻找插件(也可以在qgsconfig.h中手动指定)。

3.2 逻辑(vs)

1)   使用QgsApplication代替QApplication

2)   生成QgisApp的对象作为mainwindow

需要指定QSplashScreen

3)   运行

完整代码参见:qgis开发-代码-demo\qgisapp_demo

#include "qgisapp_demo.h"

#include <QtGui/QApplication>

#include <qgsapplication.h>

#include <qgisapp.h>

#include <qsplashscreen>

#include <QSplashScreen>

#include <QPixmap>

int main(int argc, char *argv[])

{

QgsApplicationa(argc, argv,true,QString());

QPixmap pixmap("D:/test/splash.png");

QSplashScreen*pSplash = new QSplashScreen(pixmap);

QgisApp *pQgis = new QgisApp(pSplash,true,0,Qt::Window);

pQgis->show();

int iRet = a.exec();

delete pQgis;

pQgis = NULL;

return iRet;

}

3.3 逻辑(qt)

qt与vs基本相同,但运行时出现R6034问题多次,这是由于VC9的版本不对。解决办法是将qgis install(C:/programfiles(x86)下的msvcrt9相同的全部删除。

参考:http://python.blog.163.com/blog/static/1830104532012813105112694/

Qgis开发5-完整的Qgis系统库——qis_app库相关推荐

  1. QGIS开发(一)——环境配置

    简介 QGIS是一个免费的.开源的.跨平台(LIN/WIN/Mac)的地理信息系统(GIS),有简单.体积小.硬件要求低等特性,适合用于GIS的开发.作为开源项目,我们可以在GitHub上很轻松的找到 ...

  2. VS2019+QGIS开发库二次开发环境搭建

    VS2019+QGIS开发库二次开发环境搭建 总共分为以下步骤: 下载qgis和二次开发库 VS2019搭建开发环境 配置VS2019中的Qt插件 配置完Qt版本后对工程属性进行配置 编写测试代码 运 ...

  3. 【如何快速的开发一个完整的iOS直播app】(美颜篇)

    前言 在看这篇之前,如果您还不了解直播原理,请查看这篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,美颜功能是很重要的,如果没有美颜功能,可能分分钟钟掉粉千万,本篇主要讲 ...

  4. 【如何快速的开发一个完整的iOS直播app】(采集篇)

    前言 在看这篇之前,如果您还不了解直播原理,请查看这篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,首先需要采集主播的视频和音频,然后传入流媒体服务器,本篇主要讲解如何采 ...

  5. 微信小程序开发的完整流程介绍,新手必读

    自从跳一跳小程序游戏出现后,一夜之间,小程序就变得家喻户晓了,功能开发也越来越丰富,在微信搜一搜就会发现许多大品牌早已有自己的小程序了,越来越多的企业和商家都看中了这个风口,想快速开发出一款属于自己的 ...

  6. 聚播群控微信二次开发sdk完整API

    聚播群控微信二次开发sdk完整API功能: 微信加好友功能API 1.导入手机通讯录 2.手机通讯录加好友 3.加指定微信群好友 4.自动通过微信好友请求 5.手机模拟定位 6.附近人加好友 7.各种 ...

  7. 如何快速的开发一个完整的iOS直播app(美颜篇)

    1.前言 在看这篇之前,如果您还不了解直播原理,请查看这篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,美颜功能是很重要的,如果没有美颜功能,可能分分钟钟掉粉千万,本篇主 ...

  8. 如何开发一个完整的Helm charts应用实例

    文章目录 1. 简介 2. 条件 3. 应用 4. 基础模板 5. 命名模板 6. 版本兼容 7. 持久化 8. 定制 9. 共享 Charts 1. 简介 Helm 图表是在 Kubernetes ...

  9. 开发一个完整的iOS直播app必须技能

    今年,直播行业火了,当然也诞生了一大批网红,甚至明星也开始直播了,因此现在都要搞直播了!由于第一次接触,花了很多时间了解直播,目前整理了直播的原理(因为项目汇报的需要就整理了一下),现在只是展示一下从 ...

最新文章

  1. Django项目test中的mock概述
  2. X-Forwarded-For 会少记录一次代理服务器的IP
  3. UiBot Creator v1.2火热体验中……
  4. mysql 日期列表_MySQL 生成日期表
  5. 黄聪:PHP获取MAC地址(转)
  6. linux命令行下全路径显示,显示命令及文件路径用什么命令?Linux命令知识有什么...
  7. 【无一时】的意思和解释
  8. PAT 乙级 1036. 跟奥巴马一起编程(15) Java版
  9. Linux进阶之bond链路聚合
  10. abp 应用层异常处理(自动控制器中)
  11. micro macro 区别和详解
  12. 王燕《应用时间序列分析》学习笔记1
  13. COMSOL流体操作
  14. 《西窗法雨》一天读完,怕不怕
  15. Python与爬虫有什么关系?
  16. php乘法表颜色渐变图片,用标准标签库写的九九乘法表(带渐变颜色)
  17. 网络信息安全之零信任
  18. 农村小学计算机教育论文,浅谈小学信息技术教学
  19. Spring中的事务控制(Transacion Management with Spring)
  20. JS怎么处理有些网页禁止选中复制方法过程详解

热门文章

  1. 英特尔锐炫 A770、A750 评测
  2. 大屏幕拼接电视墙用液晶还是投影?
  3. 模型预测转矩控制学习
  4. java 在线聊天室_一万人一起在线聊天的聊天室,怎样用Java实现?
  5. Tushare之股票数据分析
  6. 化妆品Cosmetics
  7. 企业高效管理合同,微鳄365合同管理系统来助力
  8. Linux Reader单文件版,Linux Reader(查看Linux硬盘分区)
  9. cout,cerr和clog的区别
  10. MYSQL 8.0 WORKBENCH使用LOAD DATA LOCAL INFILE报错解决方案