码迷,mamicode.com
首页 > 其他好文 > 详细

qgis 源码学习

时间:2015-01-13 00:10:58      阅读:1640      评论:0      收藏:0      [点我收藏+]

标签:

我已经编译出了qgis2.4的源码,进行了一些简单的二次开发,但是仍然感觉不爽,这么优秀的软件就单单在它上层做开发,太浪费了,我想学习qgis的源码的架构,顺便学习qgis的二次开发,为我将来的自己架构自己的软件吸取些经验。

qgis的文档还是比较少的,并且1.0版本和2.0以上的版本差别很大,而中文的文档绝大部分针对1.0版本,如果照搬的话会导致编译出现问题。我以下的博文是边看编写。

1.qgis的源码文档如何找到?

http://qgis.org/api/2.4/files.html 这里是找到的。

2.qgis的源码的核心部分主要分为:analysis;core;gui;plugin;4个部分。

技术分享

上面4个模块的依赖关系依次是:

analysis模块:技术分享

gui模块:技术分享

Plugin模块:技术分享

core模块:技术分享

上面4个模块的core和plugin模块均是独立存在的,而其余两个模块均依赖于core模块,所以我打算首先读core模块。

从上面的core模块的内部图可以看出core模块中的gps模块是比较独立的,首先读gps模块。

gps模块里面有一个很重要的概念就是“NMEA”,NMEA是美国国家海洋电子协会(National Marine Electronics Association)的简称,它规定了gps数据的协议,如果解析过gps数据就知道“#BESPOSA"之类的东西就是由它规定的,gps模块规定

config.h里面规定了NMEA协议的版本、NMEA_VERSION_PATCH 补充协议版本,产生调试”assert“的一些宏NMEA_ASSERT(x)。

contex.h定义了输出调试信息的函数:nmea_trace、nmea_trace_buff、nmea_error;对应的.c文件就是对应的实现。

info.h定义了各种NMEA用到的各种数据结构。_nmeaPOS 位置信息里面只有两个变量一个经度另一个是纬度,所以qgis只能是二维的不可能是三维的地图软件。nmeaSATELLITE卫星信息。nmeaSATINFO是nmeaSATELLITE的包装:里面描述了有多少卫星是可见的,有多少卫星是可用的。;nmeaINFO是gps解析数据的结构体。

下面的gmath.h使用了这个info.h文件。这个文件在gps模块是个基础的头文件。

gmath.h定义了数学函数例如定义了PI、地球的平均半径等宏;角度弧度转化函数(nmea_degree2radian);NMEA degree(NMEA度)和弧度、角度转化。计算位置精度因子(pdop)、精度衰减因子(PDP)函数:nmea_calc_pdop等。位置转化函数:主要是由原始的gps字符串转化为逻辑量,例如:nmea_info2pos是由NMEA的原始数据解析后倒入POS结构中里里面的实现也很简单:

pos->lat = nmea_ndeg2radian( info->lat );
pos->lon = nmea_ndeg2radian( info->lon );

未完待续。。。。。。



qgis 源码学习

标签:

原文地址:http://blog.csdn.net/jia_zhengshen/article/details/42650835

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!