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

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

——qis_app库

[email protected]

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,2.4.0)