Qt跨平台地图符号系统测试

1、原型测试系统实现

1.1 Windows下环境配置

    大多数人对Windows环境比较熟悉,因此,在Windows下完成相关功能编写和调试。对于Windows开发环境配置如下:

    1)集成开发环境选用VS2010,下载并安装;

    2)访问网址http://qt-project.org/downloads根据自己电脑配置下载对应的Qt5.2.0的版本安装;

Qt跨平台地图符号系统测试

3)根据Qt安装路径设置环境变量,设置如图所示:

Qt跨平台地图符号系统测试

    4)下载并安装VS2010插件Visual Studio Add-in 1.2.2 for Qt5,至此就完成了Windows下开发环境的部署。

1.2  windows下设计与实现

    原型测试系统主要包括主界面、符号库管理界面和图层管理界面等。主界面由工具条、状态栏、图层视图、主视图四部分组成。对于工具条提供了添加数据集、符号管理器、图层属性、全图功能。状态栏主要显示当前鼠标位置、地图比例尺和绘制状态等。图层视图显示了当前地图的图层名称,可以快捷控制图层的可见性,移动图层位置,调整图层的上下关系。主视图主要用于显示地图,进行与用户进行交互,主界面如下图所示。

Qt跨平台地图符号系统测试

    测试系统为了提供基本的地图的放大、缩小和平移功能,需要将主视图的鼠标事件重写,而对于嵌入式设备需要重写触摸屏事件。对于触摸屏,原型测试系统最多能够支持三点式触摸,并通过触摸屏的手势来判断地图操作的类型。

    对于常用的地图符号和色带,将其存储在SQlite数据库中,方便用户的重复使用。地图符号在数据库中的存储是按照符号类型分别创建点符号、线符号、面符号三张表。表主要的信息由符号的唯一ID、名称和数据流等组成。色带分为随机色带和渐进色带两种,使用一张色带表示两类色带。色带表的信息有色带的唯一ID、名称和数据流。完成数据库结构设计后,使用Qt设计符号库管理相关界面。

    符号管理器主要包括符号管理主界面、点符号管理界面、线符号管理界面、面符号管理界面、随机色带管理界面和渐进色带管理界面等。

    符号管理主界面主要负责创建符号库存储文件、导入已有符号库存储文件、插入常用符号、删除已有符号以及修改已有符号参数等,界面如下图所示。

Qt跨平台地图符号系统测试

点、线、面符号管理界面分别负责点、线、面符号创建与修改。符号库中的符号可以在视图中直接使用,也可以根据需要在已有的符号上做修改。点、线、面符号管理界面如下图所示。

Qt跨平台地图符号系统测试

    通过上述的符号管理器创建出一些常用的点、线、面符号实例,效果如下图所示。

Qt跨平台地图符号系统测试

    同样对于色带的管理,提供色带管理界面。色带使用RGB和HSV颜色空间,主要用于渐进符号的填充以及一些专题图,其管理界面如下图所示。

Qt跨平台地图符号系统测试

对于符号和色带查询、插入、删除和修改,实质是通过SQL语句对数据信息进行修改,例如符号的插入主要代码如下:

Qt跨平台地图符号系统测试

    图层管理界面主要负责图层基本属性的设置,注记的相关属性设置和地图专题显示设置,其管理界面如下图所示。

Qt跨平台地图符号系统测试

1.3 编写跨平台文件

    Windows环境下的测试系统设计与实现已经完成,为了实现在其他系统上能够运行,需要编写与平台无关的文件,而Qt为我们提供了pro文件。

    针对不同操作系统,只需要编写一份pro文件。在文件中,添加自定义字段P1atFormName,来区分不同的操作系统。这里我们以地图控件模块为例说明一下pro文件的编写方法。

Qt跨平台地图符号系统测试

Qt跨平台地图符号系统测试

    P1atFormName字段根据编译环境,区分不同的操作系统;CONFIG(debug,debuglrelease)判断方案配置;DESTDIR字段设置模块生成路径;TEMPLATE字段定义模块类型,如动态库赋值为lib;利用TARGET字段设置模块的名称,如接口模块可设置为MapControl;  DEFINES字段定义预处理宏;使用LIBS字段添加模块依赖库;INCLUDEPATH字段添加头文件文件路径;SOURCES字段添加需要编译cpp文件。对于pro的文件其他字段说明,可以参考Qt官网的白皮书,这里就不再赘述。

    对于其它模块,分别按照格式编写相应的pro文件。有了pro文件,利用QtCreator集成环境开发环境配置相应平台信息,无需手动去编写代码,便可以实现语言之间的互操作,提高了跨平台的效率。接下来分别介绍各系统环境部署、可执行程序生成和测试。

2、Android系统编译与测试

    Android系统底层核心模块采用C或者C++编写,但其上层应用模块采用Java语言编写,这样使得二次开发必须使用Java语言。Android在发布时,谷歌己经声明Android的虚拟机支持JNI这种编程方式,这为使用C或者C++开发功能模块提供了可能。

    Android环境配置如下:

      1)在Android开发官网下载 Android SDK和NDK;

      2)下载并安装Java开发环境;

      3)在Qt官网下载Qt 5.2.0 for Android (Windows 32-bit)并安装;

      4)打开Qt安装目录下的qtcreator,配置Android开发环境,如下图所示。

Qt跨平台地图符号系统测试

    以上就是部署Android开发相关步骤。将先前编写好的pro文件加载到qtcreator,设置为Android for armeabi 工程。此时,Android运行版本最低为Android2.1。根据模块的依赖关系依次编译生成Android动态库.so文件,最后编译主测试程序,打包生成.apk安装文件。使用手机安装助手将apk安装到手机上,并将shp矢量数据拷贝到手机sd卡上。手机选用小米2,其配置为操作系统Android OS 4.1、主屏尺寸4.3英寸、RAM容量2G、 ROM容量为16G。安装完成后,启动应用程序,加载矢量数据,对各类符号分别测试。测试效果如下图所示。

Qt跨平台地图符号系统测试

3、Linux和Mac系统编译与测试

    Linux系统版本有很多,选用比较流行、稳定的Ubuntu 12.04的64位系统。Ubuntu下的编译器使用gcc,它提供了g++来编译C++程序。Linux下的开发环境配置相对比较简单。通过“sudo apt-get install g++”命令下载安装g++编译器,并使用“g++ –version”查看是否安装成功。在Qt官网获取Qt5.2.0 for Linux 64-bit开发包,便可完成开发环境的配置。接下就是对各个模块的编译。将开发程序拷贝到Ubuntu下,使用qcreator加载所有pro文件,依次编译所有模块。加载数据,测试效果如下图所示。

Qt跨平台地图符号系统测试

    Mac系统与Linux系统内核有密切的关系,在功能和命令行上有很多相似之处,因此,只需从下载Qt5.2.0 for Mac,其他环境配置与Linux相同。运行结果如下图所示。

Qt跨平台地图符号系统测试

4、 iOS系统编译与测试

    Qt5.0版本以后,增加了对iOS的支持,但稳定性较差。2013年12份推出的Qt5.2.0正式版,修改了原来版本存在的bug 。Qt5.2要求安装xcode5.0版本,而xcode5.0只能在Mac 10.8 Mountain Lion及以上版本运行。具体的环境配置如下:

    1)安装10.8 Mountain Lion系统;

    2)安装g++编译器;

    3)安装xcode5.0集成开发环境;

    4)安装Qt5.2.0 for iOS。

    iOS开发不像Android,免费对用户开发。程序人员如果要在真机上测试或发布产品,就必须花费9.9美元购买许可文件,使用期限为一年。有开发环境和许可便可以使用pro文件对各个模块进行编译。连接IPad, IPhone或者其他iOS移动设备,编译主程序便可将其安装到设备当中。测试效果如下图所示。

Qt跨平台地图符号系统测试

    以上完成了各个系统编译和测试工作,说明了设计的地图符号框架具有跨平台的特性,不仅如此,地图符号库也具有跨平台的特性。例如在Window下,设计一个长城符号,将这个符号库文件拷贝到其它系统下,便可直接使用。我们使用Window和iOS两个系统做测试,结果如下图所示。

Qt跨平台地图符号系统测试

5、结语

随着科技的发展,GIS应用领域越来越广,已经深入到社会生活的方方面面。通过地图查询、定位、导航等功能,方便了人们出行。而地图是空间数据符号化的结果,其显示质量影响着地图服务的效果。但计算机、移动设备等操作系统种类较多,因此,研究跨平台是非常必要。它不仅方便使用,而且易于管理扩展。

 

 

原创文章,作者:bd101bd101,如若转载,请注明出处:https://blog.ytso.com/243128.html

(0)
上一篇 2022年4月11日
下一篇 2022年4月11日

相关推荐

发表回复

登录后才能评论