GIS自主创新十年路(一) 缘起ActiveMap
从 最初默默无闻的课题组,到今天在GIS自主创新中取得一点小小成就,北京超图公司自成立以来,历经十年岁月。在这期间,超图人付出了许多艰辛,在各界朋友 们的支持下,我们收获的不仅有SuperMap这一GIS软件品牌,更有整个十年的创业和创新体验。我就从自己的亲身经历的角度,跟大家一起回顾刚走过的 十年之路。
尽管在研究生院学过GIS课程,但我真正踏入GIS领域,要从1995年跟钟耳顺研究员(现任超 图公司董事长)做博士研究生开始算起。编制土地利用图是我参与的第一个GIS项目,当时,钟老师手把手教我学习Arc/Info的各种命令,技术上慢慢有 所进步,不过对于成天做地图编辑工作,心里还是有点小情绪,尽管嘴上没说,也没耽误制图工作,心里却在犯嘀咕。很久以后我才体会到,那段时间的基础工作, 让我对GIS的数据结构、功能和技术体系都有了深刻认识,为日后设计和开发SuperMap打下了坚实的基础。
随后我就参与 一些GIS应用系统开发项目。当时做应用开发很痛苦,每换一种GIS软件就要学一种新的二次开发语言,比如Arc/Info的AML、MapInfo的 MapBasic、MicroStation的MDL等,这些我们在项目中都用过,甚至后来还跟王尔琪(现任超图公司副总裁)一起翻译过一本《MDL开发 教程》。当时的GIS软件没有现在所见即所得(What you see, what you get)的界面设计能力,一个对话框的位置、大小,以及对话框上各种界面元素的位置和大小都只能在代码中用数字来标定,通过不断观察运行后的程序效果,不 断修改代码中的各种数字来调整界面,做好一个对话框就要花很多工夫。
尽管用过不少GIS二次开发语言,那时我仍对C++非常 痴迷,没有间断自学C++编程。学习一种开发语言最好的办法就是给自己定一个目标,做出一个软件来,于是我利用空余时间写了个叫MapStudio的软件 练手。从现在的角度看,它还不能叫软件,充其量只是程序而已。MapStudio有些GIS初步功能,可以转入其他GIS软件的数据格式,并配置各种专题 地图,还增加了一些在商业化的GIS软件中很难实现的特殊的动态标注符号,这个程序后来成为我们最初的组件式GIS软件的配图工具。
接 下来发生的另一件事,触发了我们开发组件式GIS软件的动机。1996年的一天,钟老师从美国出差回京,花一两百美元买了一套某国外GIS组件软件的 Beta测试版。这个GIS软件的新品种立刻引起了我浓厚的兴趣,当即装上并使用Visual Basic练习二次开发。不用学习新的GIS软件专用二次开发语言、所见即所得的界面设计、与多媒体等其他组件无缝集成等一系列新特性让我对这种特别方便 的二次开发方式感到兴奋不已,当天晚上就熬到深夜。第二天一早把刚开发的应用程序向钟老师和其他同事们展示,大家都对一个晚上就可以上手开发的这套GIS 软件表示惊讶。
尽管这个GIS组件软件带来了令人兴奋的二次开发方式,但直到现在我一直也没有机会使用它开发一个真正的应用 系统,因为在接下来的几个月里,我以MapStudio的功能为基础开发了一个类似的程序—ActiveMap。ActiveMap采用 COM/ActiveX技术封装了GIS的基本功能,这成为日后SuperMap研发的基础。关于ActiveMap名称的来历,很显然,源于它所使用的 ActiveX控件技术。
GIS自主创新十年路(二) 牛刀小试
推 荐ActiveMap并没有被立即派上用场。当时我们正在给解放军驻香港部队开发一个香港综合地理信息系统,计划于1997年7月1日用于进驻香港行动的 辅助指挥,系统采用MapInfo + MapBasic开发。1997年年初,第一个版本送到部队征求意见,参谋们对军标标绘效果不满意,提了更高的要求。 经过一段时间研究,我感觉在MapBasic中开发动态军标是一个难题,就举荐采用前些日子写的ActiveMap 加Visual Basic来重新开发香港综合地理信息系统,即使ActiveMap从未经过应用检验,钟老师认为应该尝试这种GIS应用系统开发的新方式,于是欣然同 意。钟老师一向非常有远见,一年前他说“我们应该为解放军驻香港部队开发一个香港地理信息系统,他们一定需要!”那是我们还不知道驻港部队在哪里,跟他们 没有任何接触,因此都以为他随便说说,也没在意。没想到过了段时间,这个项目竟然在科学院和科技部的支持下启动了。
当时课题 组里能编程的只有我和尔琪两人,他负责香港系统复杂的MIS部分,开发工作量很大,我就只好一边完善ActiveMap这个GIS组件,一边进行香港系统 的GIS部分应用开发。由于中途换平台,项目时间比预期的更紧张,必须拼命加班赶进度,钟老师也陪着我们一直加班到深夜,然后一起骑车离开917大院沿着 黑漆漆的大屯路回家。当时我住在地球物理所(现在地理资源所的位置)院内的研究生公寓,好几次回去时院门已关闭,我只好从铁门上爬进去,钟老师和尔琪则在 外面把自行车递给我。尔琪住在公寓北侧的遥感所集体宿舍,绕过去不远就可以到,但钟老师住在好几公里以外的健翔桥,比我们更晚才能到家休息。当然,因为加 班太晚,在办公室桌上凑合休息一下的情况也是有的。这样持续加了几个月班,系统终于在1997年5月20日提交给驻香港部队,时任中国科学院院长的周光召 院士亲自出席了系统交接仪式。
作为SuperMap的前身,ActiveMap的第一个应用案例终于顺利完成。这个项目创造 了两个记录:国内军事项目中第一次使用组件式GIS软件,国内第一次采用GSM无线数据通讯技术把移动终端上的GPS坐标信息传输到服务器。7月1日,香 港正式回归祖国怀抱,不久传来消息说,香港综合地理信息系统在7月1日凌晨的部队进驻行动中发挥了重要作用,课题组所有同事深感欣慰,随后收到了来自驻港 部队的感谢函。
GIS自主创新十年路(三) 超图成立
完 成香港综合地理信息系统后不久,科学院为推动地理信息技术产业化,成立了中国科学院地理信息产业发展中心,任命钟耳顺研究员为中心主任。差不多同时,在产 业中心推动下成立北京超图地理信息技术有限公司,钟耳顺研究员任总经理,工商注册日期为1997年6月18日。公司成立时,我们租了科学院北郊研究生公寓 五层南端的几间学生宿舍办公,总共有员工六七人。
南宁国土管理信息系统是ActiveMap的第二个应用案例。国土行业业务 复杂,GIS应用较早,并且很有代表性,这个项目给了ActiveMap更好的磨练机会。该项目启动比香港项目早,但由于驻港部队项目时间紧迫,课题组与 南宁国土局的领导商量暂停该项目计划,先保障驻港部队项目,得到国土局领导的认同和支持。
项目最初并没有选定 ActiveMap作为项目的GIS开发平台,时任南宁国土局信息中心主任的杨如军既是领导,也是技术专家,他看到了组件式GIS的发展潜力,加上有驻港 部队项目案例成功在先,毅然同意我们采用ActiveMap开发系统,并与我们进行了非常有价值的讨论,对ActiveMap的完善提出了很多好的建议。 ActiveMap在南宁国土项目期间的进步很快,其中ActiveMap直接访问MicroStation DGN的空间数据引擎全部在那里完成,这成为后来SuperMap的多源空间数据无缝集成打下了基础。1998年年初,南宁国土项目顺利完成,也创造了国 内第一个基于组件式GIS的完整国土管理信息系统案例。
香港系统采用Visual Basic 4.0作为开发环境,南宁国土项目则采用Visual Foxpro,这两个项目为无疑为ActiveMap的发展提供了机会,也为以后的研发SuperMap打下基础。多年以后我还在想,如果当初 MapInfo在开发军标方面没有障碍,也许香港系统不会采用ActiveMap,如果当初没有香港系统,可能南宁不会采用ActiveMap,那么 ActiveMap也许就象许许多多学生们自己开发的GIS原型软件一样,湮灭在时间洪流中,也许没有后来的SuperMap了。
GIS自主创新十年路(四) 平台战略
经 过两个项目的开发实战,我们深刻体会到组件式GIS强大的生命力,认为基于组件的开发(Components Based Development, CBD)必将成为GIS领域未来十年最有影响的应用开发方式之一。尽管成功应用于两个项目,但ActiveMap离一个真正的GIS开发平台还有距离。想 要成为一个真正的GIS开发平台,就必须进行完善的产品化,要让其他单位的开发团队也能进行令人激动的应用系统开发,而不仅仅局限于我们自己在项目中使 用,而且外部用户要远远多于内部,这样才有生命力。
过去多年以来,国内出现了不少GIS平台软件,一些软件最后销声匿迹不是因为技术不够先进,而是因为缺乏足够数量的外部用户。当一个GIS平台软件定位在主要由自己单位的项目团队使用时,这种GIS平台软件的命运已经注定了被淘汰或边缘化。
1998 年年初,钟总做了两个重要决定:第一, ActiveMap不能仅满足于公司自己的项目开发需要,必须作为真正的GIS二次开发平台发展下去;第二,超图以GIS软件平台为公司未来的核心业务, 公司会继续承接部分行业项目来直接获取平台软件的需求,但更多地项目要发展二次开发商承接。这是超图公司非常重要的战略定位,也决定了超图未来的发展道 路。
在没有外部投资支持的情况下,钟总毅然决定成立比项目部更大的研发部,专门从事GIS平台软件研发。作为一个刚起步的小 公司,研发部在好几年内是无法直接产生经济效益,钟总下这么大的决心投入基础软件研发是非常需要胆识的。当年我博士刚毕业,一心沉浸在技术钻研中,对财务 一窍不通,当时自然也无法体谅这样的决策要面临多大的财务压力和挑战。直到04年我转到管理岗位,直接接触企业财务后,才为当时的决策所面临的财务风险感 到后怕。“革命”的第一阶段靠胆识,第二阶段靠智慧,第三阶段靠规范。如果没有钟总当初的魄力和胆识,今天的超图很可能还是一个GIS项目公司,绝不会成 为一个平台软件企业。
以项目养研发成为当时的策略。公司成立了两个业务部门,即项目部和研发部。放弃了北海规划局信息中心主 任之职的梁军(现任超图公司副总裁)来公司负责项目部,而我则有幸被任命负责研发部。研发部的规模从开始的几个人发展起来,逐步壮大。当时由于公司名气不 大,不能很快招聘到新员工,研发团队的建设进度较慢。大家各自发挥私人关系,通过同学和老师推荐,找来几个来北京师范大学和北京信息工程学院的实习学生, 后来这些实习学生中大部分毕业后留下来,成为现在的研发骨干。
在后来相当长一段时间内,我们都通过这样的方式招人,由于我和 尔琪都是北师大本科毕业的,公司距离北师大也不算很远,因此从北师大找人就很方便,我们曾多次打电话让学校的老师给我们推荐人,像现在研发和客服等部门的 好几个技术管理骨干都是北师大王静爱老师推荐的。想想以当年超图的条件,老师们愿意把优秀的毕业生推荐过来,这些同事也愿意选择超图,那要冒多大的风险! 感谢所有给超图推荐人才的老师们,感谢选择了超图的同事们!王康弘也是在这样的背景下从北师大硕士毕业上了钟老师的博士研究生,并被安排在项目部参与工程 项目开发,当时谁也没有想到这位搞技术的博士会成为以后负责平台软件销售的副总裁。
但如此一来,早期招来的新员工中,北师大毕业生的比例较大,以至于后来有人夸大其辞地讲,超图公司都是北师大的,其实当时那是不得已。当然,随着企业规模不断扩大,知名度逐步提高,新员工的毕业学校也逐步多元化,避免了“近亲繁殖”带来的诸多弊端。
ActiveMap 2.0是研发部成立后的第一个研发任务,目标是要打造一个专业的组件式GIS开发平台。很快,我们发现无论ActiveMap 1.0还是我最初接触的国外GIS组件软件在设计上都无法满足这个要求。这两个软件都属于轻量型开发平台,都只设计了一个控件,只能实现GIS软件全部功 能的一小部分。因此严格来讲,它们还算不上“组件式GIS”,只能算是“GIS组件”。二者的差别在于,“组件式GIS”由一系列“GIS组件”构成,每 个组件包含GIS的一部分(或一类)功能,这些组件之间可以协同工作,而且根据需要可以选择购买或不购买那些组件。基于组件的开发就是把几个需要的GIS 组件以及其他的软件组件如同搭积木一样组合起来,每个积木也许很小,但一堆积木就可以搭建更大的模型,而且这样的系统开发效率高、灵活自由。这是组件式 GIS为应用开发者带来的最令人激动的体验。很多年后,还有人瞧不起SuperMap这个小组件,认为不会有大出息,他们大概混淆了GIS组件与组件式 GIS之间的差别。 GIS自主创新十年路(六) 聚沙成塔
|
SuperMap 2000和SuperMap IS 1.0发布之后,eSuperMap 也在从原型到产品化的轨道上正常运行,再过几个月,SuperMap GIS的产品线即将建成。从产品研发的角度,似乎可以松口气了,接下来只需要把这一系列产品在应用的检验中逐步完善,就可以达成超图的平台软件发展战略目 标了。但在信息技术飞速发展的21世纪,唯一不变的就是变化本身,如果此时停下脚步,必将会被滚滚而来的IT车轮碾过,我们必须思考未来将有什么新的技术 变革!
4年前,超图抓住了GIS组件化的技术变革机遇,基于微软的COM/ActiveX技术开发 了SuperMap 2000,并以此作为国产GIS后来者进入GIS领域。但若不能抓住下一次技术变革的机遇,我们就会面临被新技术淘汰的危险!对于GIS厂商而言,要完成 一次大的技术变革,需要好几年的时间,并耗费大量人力和物力。GIS领域的国际老大哥ESRI从启动基于COM的ArcGIS 8到于1999年12月正式发布,花了将近4年时间;超图从ActiveMap到SuperMap 2000正式发布,也历经了差不多4年。而且产品从第一个版本正式发布到完善成熟,还需要几年。因此,如果不提前看到新的趋势并做好准备,当新技术已经成 为主流的时候在启动升级换代,为时已晚!
作为GIS研发人员,除了具备扎实的的地学知识以外,还应 有三只关注变化的眼睛:第一只眼关注用户需求变化,要随需而变,这是根本;第二只眼关注IT变化,不管GIS软件中蕴含多专业的地学知识,但它首先是软 件,IT的所有新的变化都可能给GIS软件带来不可低估的影响;第三只眼关注同业变化,此举不是为了要跟着先行者走,那是追星族,没有战略的表现,而是留 意同行举动背后蕴藏着什么样的用户需求变化,以便采取更有效途径去满足。前两只眼是预见性的,最为重要,第三只眼用于亡羊补牢,要尽量争取用前两只眼发现 问题和机会。那么,在GIS软件的应用方面有什么新的需求?在组件式GIS、WebGIS和嵌入式GIS之后,究竟还隐藏着什么新的技术变革?其实,就在 我们研发SuperMap 2000和SuperMap IS 1.0期间,一场巨大的技术变革风暴正在逼近我们!
1999 年12月,SUN公布了J2EE(即后来的Java EE)技术规范的第一个版本,这是一个瘦客户端的多层企业开发架构;2000年6月22日,微软公布了其.NET战略,.NET不仅要提供新的开发语言、 新的组建模型,更重要的也是要把Internet/Intranet建设成可以交换组件、共享服务的地方。这初看起来似乎没什么特别之 处,SuperMap IS之类的WebGIS不正式朝着这个方向发展吗?但实际上,其中蕴涵着几个对GIS有严重影响问题:
首 先,在这种面向服务的多层企业开发架构中,软件系统的计算重心从以PC/工作站为主的客户端,向服务器端偏移。但不巧的是,90年代中期以来,由于看到 PC和工作站的操作系统已经被Windows垄断的趋势,国内外的GIS厂商纷纷把源自Unix上的GIS 软件移植到Windows,并且都花了巨大代价,超图的产品内核也构建在Windows上。但当时服务器的操作系统仍是Unix和Linux的天 下,Windows就算以后在服务器上会有更大的进步,但也很难说几年后Windows也会垄断服务器端,如果GIS功能重心真的转移到服务器上,那么下 一代GIS必须解决跨操作系统的问题!
其次,即使在Windows操作系统上发展,.NET组件技术将逐步取代COM组件模型,那么超图和其他国内外同行刚刚在COM上构建的组件式内核岂不很快面临挑战?!
最后,J2EE和.NET,我们应该选择哪条路?
在 最后一个问题上,我们最初倾向于.NET。2001年年中,钟总找我商量中科院知识创新工程项目申报题目的事,我建议做《面向.NET框架的地理信息服务 关键技术预研究》,7月该项目获准得到支持。超图以该项目为基础提出了下一代SuperMap的研发计划,即SuperMap .NET计划。2002年年初,我们感到放弃J2EE就等于放弃Unix和Linux服务器市场,必须同时考虑支持J2EE和.NET!当时超图刚中标科 技部863招标课题《面向网络海量空间信息大型GIS》,该课题明确要求支持Unix。于是我们决定合并执行科技部和科学院的这两个项目,提出一套框架, 同时支持Unix、Linux和Windows操作系统、支持J2EE和.NET两套多层企业级服务架构、支持.NET组件和Java Beans组件对象模型。
为了达到上述目的,并能灵活应对未来新的技术变化,我们提出了 Universal GIS架构,即基于标准C++构建全新的跨平台GIS内核 ,我们称之为UGC(Universal GIS Classes),然后分别使用.NET技术和Java技术,基于UGC封装.NET组件和Java Beans组件,最后在此基础上开发Internet GIS和桌面GIS软件。整个体系就像一株鸳鸯树,UGC是共同的根基,主干分为Java和.NET两支,在每一支主干上分别生长着Internet GIS和桌面GIS等组成的树冠。参考了哲学中共相(Universal)和殊相(Particular)概念,Universal GIS后来被翻译为共相式GIS。关于共相式GIS的具体思考路径,以前写过专门文章介绍,此处不再详述。
Universal GIS是一个以不变应万变的技术架构,如果以后出现新的二次开发语言,或新的组件模型,甚至药支持新的操作系统,只需要进行相应的调试和封装,就可以快速 支持新技术,而内核可以保持相对稳定。实际上,各数据库厂商基本采用这种架构,数据库系统平台的内核基本上都采用C/C++编写,只不过需要在不同的操作 系统和硬件上编译调试,不管应用于.NET还是Java开发环境,提供相应的接口即可,内核不需重大改变。数据库一直在服务器端发展,所以这个体系一直延 续至今。而GIS则经历了从大型设备到PC的发展历程,而后又重回大型设备,GIS追着IT绕了个大圈。
这个技术架构看似简单,但要实现跨操作系统 ,GIS 软件比数据库的难度要高得多。数据库主要在服务器上提供数据管理功能,可视化功能要求不高(对CPU的计算压力较小),因此可视化部分完全可以用Java 之类的跨平台语言在内核的外围完成。而GIS则不同,不仅数据管理的计算负荷大,而且可视化的计算量也非常大,因此可视化不能采用Java在外围完成,必 须也在C++级实现。不同操作系统之间的可视化技术差别很大,因此一个完善的Universal GIS内核开发工作量,比在某种操作系统上重构一个GIS内核要大得多。加之GIS产品线长,产品种类多,因此整体开发工作量极其巨大。 (声明:本人无意比较GIS软件和数据库软件的技术含量高低,更无意贬低数据库这一伟大的软件平台。此处仅想说明,由于GIS在可视化方面的要求太高,导致GIS软件在实现跨操作系统方面 的复杂程度更高,仅此而已)
从 2002年提出Universal GIS架构,到2005年公开发布这个架构,2006年年初发布第一个基于该架构的产品SuperMap IS Java 1.0,前后历经将近4年 时间,而且产品线还远远没有完成。到2007年上半年,除SuperMap IS Java已经升级到1.2以外,还没有更多基于该架构的产品发布。因此有朋友在网上提出质疑:超图是不是仅仅在炒概念?共相式GIS研发计划是否能进行到 底?借此机会我想告诉大家,这个计划不仅没有被放弃,而且进展顺利。时值超图公司成立十周年之际,从2007年年底开始,很快就会有一系列基于 Universal GIS架构的产品陆续跟大家见面。
五六年的研发时间,数千万人民币的资金投入,使得Universal GIS成为超图历史上投入最大的研发项目,相信该项目将会给业界带来令人激动的成果。