共相式GIS,我们能做吗?
05年的时候,超图陆续发布了共相式GIS的产品,那时候我刚毕业并且在之后的两年都在使用SuperMap进行系统开发。当时对“共相式GIS”这个概念完全没有感觉,只要能做好二次开发已经很不错了,对于平台架构的东西没去关心,而且还没到那个高度也理解不了。
时至今日,我也在GIS行业打拼了那么多年,二次开发、开源系统都做过不少,直到面对Windows Mobile、安卓、苹果等多种不同平台的时候,才发现“共相式”这种思路是多么的明智。GIS在跨平台上的方案,WebGIS和“云GIS”是最理想的,但是GIS本身的特定又决定了在网络带宽、数据安全等方面还达不到要求的时候,“共相式”GIS的架构是唯一的最合适的方案了。
借用SuperMap的架构图:
UGC是核心,然后在它上面进行不同语言、不同平台的封装,嵌入式GIS这块可以再细分为“Windows Mobile“、“Android”、“iOS“等。这种架构最大可能地保持整个系统的统一,而且避免了不同平台上重复开发。
共相式GIS好处多多,我们能做吗?
如果真想做成SuperMap这种大而全的平台,起码我不可能,但是为了解决移动GIS跨平台的问题,开发相对简单的GIS平台,肯定没问题。现在已经有不少优秀的开源GIS系统,如DotSpatial、QGIS、SharpMap等,GIS的体系架构和算法都很公开透明了,相信设计一套移动GIS平台不是太难的事情。共相式GIS的开发,比较难的地方在于UGC的开发,需要在C/C++开发出平台无关的代码,这点对架构师和开发人员要求都比较高。另外就是在VC(C#)、java、objective-c中要分别封装UGC的功能,同时实现GIS平台中设备相关的部分,如地图渲染。摩摩兄的文章总结了共相式GIS的研发步骤:http://blog.sina.com.cn/s/blog_4dff486201000asx.html
UGC的代码要求设备无关,但是地图渲染在不同的平台中会用到不同的图形库,如Windows平台用的是GDI+或者GDI,而苹果用的是QuickDraw 或者Quartz。要解决这个问题,我想OpenGL是一个不错的选择。OpenGL也是平台无关的,在PC和移动设备中都可以使用。它是二、三维都能实现的图形编程接口,假如我们平台以后要扩展到三维GIS,也算是埋下不错的伏笔。
《远景地理信息系统|RemoteGIS》
RemoteGIS是基于HTML5开发的高性能WEBGIS,支持百万级别矢量数据。
详细介绍和在线演示地址:www.remotegis.net