论文部分内容阅读
摘 要:该文以移动GIS平台架构为研究对象,采用面向服务思想,设计并实现了一种基于“云+端”模式的移动GIS快速开发平台,提出一种分层开发模型OS-GAL-IAL,研制出跨平台、高性能、全自主的GIS内核,实现了一套精细化、流程化、可视化、易扩展的快速开发框架,能帮助开发者快速构建业务敏捷的移动GIS应用系统。
关键词:移动GIS WebGIS SOA 敏捷开发
中图分类号:P208 文献标识码:A 文章编号:1672-3791(2015)11(a)-0027-02
移动GIS作为移动空间信息服务的基础设施,其应用领域非常广泛。然而,当前移动GIS还面临一些技术难题,包括空间数据量大、计算能力不足、网络带宽窄、可靠性差、软硬件兼容性差等,导致移动GIS项目实施面临技术门槛高、开发周期长、实施成本高、项目风险大等问题。该文以移动GIS项目共性需求为导向,采用面向服务思想设计并实现了基于“云+端”模式的移动GIS快速开发平台。平台具有跨平台、高性能、可配置、易扩展、支持多语言二次开发等特点,能帮助开发者快速构建业务敏捷的移动GIS应用系统,具有重要的现实意义。
1 平台总体架构
经过多年发展,GIS己从单机工具型软件系统逐步走向了分布式、网络化的应用软件平台,从独立GIS系统逐步过渡到具有高度资源整合能力和对外服务能力的服务式GIS。服务式GIS是一种面向服务软件工程方法的GIS技术体系,它支持按照一定规范把GIS的全部功能以服务的方式发布出来,可以跨平台、跨网络、跨语言地被多种客户端调用,同时能聚合来自其他服务器发布的GIS服务。服务式GIS可以更全面地支持SOA,通过对多种SOA实践标准与空间信息服务标准的支持,可以使用于各种SOA架构体系中,与其它IT业务系统进行无缝的异构集成,从而可以更容易地让应用开发者构建业务敏捷应用系统。该文以面向服务的思想,分析设计了基于SOA架构的移动GIS开发平台,提出“云+端”的移动GIS开发模式,由应用层、服务层、支撑层、核心层组成,其总体架构如图1所示。
其中,应用层是以移动GIS为工具的数据采集、设备巡检、移动执法等各类应用系统,包括移动作业系统、在线监控、基于WebGIS的业务应用系统、指挥决策系统等,这些运行环境不同、架构各异的应用系统,通过调用、聚合平台发布的服务,实现数据共享和互操作;服务层由一系列遵循一定规范的应用接口组成,是平台暴露给应用层进行集成、扩展的应用程序接口;支撑层是平台的核心,采用B/S和C/S相结合的混合架构,对应用层各类系统起着数据管理、配置等支撑作用。
2 平台主要功能模块
2.1 GIS核心库
核心层由HiMap SDK和HiWebGIS引擎组成,前者主要面向桌面端、服务器端和嵌入式设备的轻量级GIS应用程序的开发与部署,而后者是面向WebGIS应用系统的二次开发组件。HiMap SDK采用标准C++开发从底层构建实现,支持跨平台(Windows Mobile、Android、iOS、Win32等)、多语言(C#、JAVA、Object C)、多并发、高性能的GIS应用程序二次开发。HiMap SDK引入了硬件抽象层的概念,提出分层开发模型OS-GAL-IAL。
在OS-GAL-IAL模型中,与图形界面无关的算法、模型,采用标准C++在内核中统一实现,而对一些与操作系统有关的底层接口(如Cash内存、文件、Debug、FrameBuffer、Thread、Timer等)、人机界面、图形绘制等功能,在内核中进行统一定义与封装,在具体的语言开发包中实现。这种分层设计既能充分发挥C++计算性能的优越,又能最大程度利用操作系统提供的接口,保证了最佳计算性能和显示效果,并有效地屏蔽了因嵌入式硬件环境和操作系统的改变而导致的平台移植性的问题。
2.2 数据管理系统
基础地图数据、业务对象数据的预处理是移动GIS应用项目中至关重要的一环,由于这些数据通常是多源异构的,在存储方式、数据格式、空间参考等方面存在差异,需要对这些数据进行格式转换、坐标变换、拓扑检查、符号设置、缓存制作、压缩转存等数据预处理工作。数据管理系统综合考虑桌面系统和嵌入式应用系统在数据精度、显示分辨率、寻址计算等方面的差异,进行全局的优化设计,提供了丰富实用的功能插件。如:地图缓存制作插件可同时制作多种分辨率的地图瓦片,并提供松散、紧凑两种存储格式,确保数据能在桌面端、Web端和移动端均能逼真、流畅地展示。
2.3 通信传输系统
通信传输系统是承接移动GIS和服务器的关键部分,其传输效率和系统的安全性、健壮性通常决定着一个移动GIS项目能否成功实施。用户在户外开始作业前,移动GIS通过套接字(Socket)连接到通信服务系统进行合法性验证,作业完成后,现场采集的数据和轨迹数据通过通信服务系统实时地保存到服务器。当监控中心需要对户外用户进行指挥调度、多方协助时,可通过通信服务系统将指令推送给现场终端用户。为了达到最佳系统性能,该文采用完成端口(I/O Completion Ports,IOCP)管理套接字,IOCP充分利用内核对象的调度,只使用少量的几个线程来处理和客户端的所有通信,消除了无谓的线程上下文切换,从而最大限度的提高了网络通信的性能。
2.4 运行维护系统
运行维护系统为应用层各类应用系统提供底层支撑,包括GIS数据配置、权限配置两大部分。其中,WebGIS数据配置实现对GIS数据的组织、显示、查询、事件、字段等信息的设置,这些配置项在WebGIS服务契约一一对应,前端对服务调用结果依次按契约进行取值,并在前端UI组件中展示。如:可配置当用户在WebGIS上点击某个要素时,是否弹出一个对话框,以及配置如何在对话框展示要素信息;配置前端参数取值字段,可在Web端方便地检索出各要素的字段值,从而可轻松地实现各种扩展应用。权限配置采用RABC模型,即通过用户、角色、权限三者之间建立的一对多、多对多的关系来实现权限控制,包括功能权限和数据权限的配置。其中,对数据权限(CRUD、统计、导出等)实现了精细化控制,包括对字段、记录的过滤控制等,能满足实际项目中的绝大多数应用需求。
关键词:移动GIS WebGIS SOA 敏捷开发
中图分类号:P208 文献标识码:A 文章编号:1672-3791(2015)11(a)-0027-02
移动GIS作为移动空间信息服务的基础设施,其应用领域非常广泛。然而,当前移动GIS还面临一些技术难题,包括空间数据量大、计算能力不足、网络带宽窄、可靠性差、软硬件兼容性差等,导致移动GIS项目实施面临技术门槛高、开发周期长、实施成本高、项目风险大等问题。该文以移动GIS项目共性需求为导向,采用面向服务思想设计并实现了基于“云+端”模式的移动GIS快速开发平台。平台具有跨平台、高性能、可配置、易扩展、支持多语言二次开发等特点,能帮助开发者快速构建业务敏捷的移动GIS应用系统,具有重要的现实意义。
1 平台总体架构
经过多年发展,GIS己从单机工具型软件系统逐步走向了分布式、网络化的应用软件平台,从独立GIS系统逐步过渡到具有高度资源整合能力和对外服务能力的服务式GIS。服务式GIS是一种面向服务软件工程方法的GIS技术体系,它支持按照一定规范把GIS的全部功能以服务的方式发布出来,可以跨平台、跨网络、跨语言地被多种客户端调用,同时能聚合来自其他服务器发布的GIS服务。服务式GIS可以更全面地支持SOA,通过对多种SOA实践标准与空间信息服务标准的支持,可以使用于各种SOA架构体系中,与其它IT业务系统进行无缝的异构集成,从而可以更容易地让应用开发者构建业务敏捷应用系统。该文以面向服务的思想,分析设计了基于SOA架构的移动GIS开发平台,提出“云+端”的移动GIS开发模式,由应用层、服务层、支撑层、核心层组成,其总体架构如图1所示。
其中,应用层是以移动GIS为工具的数据采集、设备巡检、移动执法等各类应用系统,包括移动作业系统、在线监控、基于WebGIS的业务应用系统、指挥决策系统等,这些运行环境不同、架构各异的应用系统,通过调用、聚合平台发布的服务,实现数据共享和互操作;服务层由一系列遵循一定规范的应用接口组成,是平台暴露给应用层进行集成、扩展的应用程序接口;支撑层是平台的核心,采用B/S和C/S相结合的混合架构,对应用层各类系统起着数据管理、配置等支撑作用。
2 平台主要功能模块
2.1 GIS核心库
核心层由HiMap SDK和HiWebGIS引擎组成,前者主要面向桌面端、服务器端和嵌入式设备的轻量级GIS应用程序的开发与部署,而后者是面向WebGIS应用系统的二次开发组件。HiMap SDK采用标准C++开发从底层构建实现,支持跨平台(Windows Mobile、Android、iOS、Win32等)、多语言(C#、JAVA、Object C)、多并发、高性能的GIS应用程序二次开发。HiMap SDK引入了硬件抽象层的概念,提出分层开发模型OS-GAL-IAL。
在OS-GAL-IAL模型中,与图形界面无关的算法、模型,采用标准C++在内核中统一实现,而对一些与操作系统有关的底层接口(如Cash内存、文件、Debug、FrameBuffer、Thread、Timer等)、人机界面、图形绘制等功能,在内核中进行统一定义与封装,在具体的语言开发包中实现。这种分层设计既能充分发挥C++计算性能的优越,又能最大程度利用操作系统提供的接口,保证了最佳计算性能和显示效果,并有效地屏蔽了因嵌入式硬件环境和操作系统的改变而导致的平台移植性的问题。
2.2 数据管理系统
基础地图数据、业务对象数据的预处理是移动GIS应用项目中至关重要的一环,由于这些数据通常是多源异构的,在存储方式、数据格式、空间参考等方面存在差异,需要对这些数据进行格式转换、坐标变换、拓扑检查、符号设置、缓存制作、压缩转存等数据预处理工作。数据管理系统综合考虑桌面系统和嵌入式应用系统在数据精度、显示分辨率、寻址计算等方面的差异,进行全局的优化设计,提供了丰富实用的功能插件。如:地图缓存制作插件可同时制作多种分辨率的地图瓦片,并提供松散、紧凑两种存储格式,确保数据能在桌面端、Web端和移动端均能逼真、流畅地展示。
2.3 通信传输系统
通信传输系统是承接移动GIS和服务器的关键部分,其传输效率和系统的安全性、健壮性通常决定着一个移动GIS项目能否成功实施。用户在户外开始作业前,移动GIS通过套接字(Socket)连接到通信服务系统进行合法性验证,作业完成后,现场采集的数据和轨迹数据通过通信服务系统实时地保存到服务器。当监控中心需要对户外用户进行指挥调度、多方协助时,可通过通信服务系统将指令推送给现场终端用户。为了达到最佳系统性能,该文采用完成端口(I/O Completion Ports,IOCP)管理套接字,IOCP充分利用内核对象的调度,只使用少量的几个线程来处理和客户端的所有通信,消除了无谓的线程上下文切换,从而最大限度的提高了网络通信的性能。
2.4 运行维护系统
运行维护系统为应用层各类应用系统提供底层支撑,包括GIS数据配置、权限配置两大部分。其中,WebGIS数据配置实现对GIS数据的组织、显示、查询、事件、字段等信息的设置,这些配置项在WebGIS服务契约一一对应,前端对服务调用结果依次按契约进行取值,并在前端UI组件中展示。如:可配置当用户在WebGIS上点击某个要素时,是否弹出一个对话框,以及配置如何在对话框展示要素信息;配置前端参数取值字段,可在Web端方便地检索出各要素的字段值,从而可轻松地实现各种扩展应用。权限配置采用RABC模型,即通过用户、角色、权限三者之间建立的一对多、多对多的关系来实现权限控制,包括功能权限和数据权限的配置。其中,对数据权限(CRUD、统计、导出等)实现了精细化控制,包括对字段、记录的过滤控制等,能满足实际项目中的绝大多数应用需求。