Posted by
蒋波涛
27 May,2010 Views
——关于《基于VBA的ArcObjects编程:面向任务的方法》的学习方法
与许多通用型和专业性软件不一样,用户对于通用的GIS平台软件似乎从来没有满意过,这种不满意不仅仅限于功能,还有许多在界面。毕竟,花了那么多钱购买的东西,看起来大家都是一样的,心里似乎总有点不舒服。因此用户,甚至是GIS开发人员自身对于GIS平台的二次开发总是充满了兴趣和热情,大家都希望能在“GIS平台”上打造“自己的产品和系统”。这也是诸如MO、MapX和ArcGIS Engine之类的二次开发包大行其道的原因之一。
是不是开发C/S版的GIS系统就一定要使用如ArcGIS Engine一类的二次开发包呢?至少在很长的一段时间内大家对此的认识都是肯定的。我也曾经一度非常热衷于这种开发方式——使用自己最擅长的语言C#,通过可视化的控件MapControl和PageLayoutControl,引入强大的ArcObjects组件,便可以打造出具有完全自定义界面的GIS系统或平台,何其妙哉!我先后用这种方式开发出多个程序,还出版了一本小书《插件式GIS应用框架的设计与实现》以飧读者。
路走多了,总是不免要向后看。对于这种开发方式,特别是对ArcGIS Engine这样产品使用状况的反思来源于我后来遇到一个重要的、涵盖GIS功能的业务系统。在这个系统中,数据使用ArcSDE库统一进行存储,不同的用户则分布在不同的区域,我们通过包裹成“框架”的MapControl直接调用ArcSDE库的数据——来充当业务的背景图——作用极其简单,可是开发方式的复杂程度,尤其是数据调用的速度慢到我们不能忍受的地步。无论怎样数据库调优,无论怎样修改程序,在面对多客户访问时,效率都非常低下。
另一个让我反思的原因是,我先后见过几个基于ArcGIS Desktop开发的系统,通过地图文档文件的定制,其界面和功能丝毫不逊于我见过的任何一个独立系统。这使我产生了一个疑问——ArcGIS Engine是不是被我们在滥用?!如果要简单高效地实现一个GIS系统,基于ArcGIS Desktop通过VBA或DLL插件的方式是不是更好一些,毕竟,Desktop软件集的功能是最为强大和稳定的。
但无论是ArcGIS的哪一种产品,其基础均为ArcObjects。因此,无论是学习哪一种产品的开发,怕是都绕不开ArcObjects这个“障碍”。而就ArcObjects这个主题而言,国内已经先后出版了不下十本左右的著作,但在2006年之前,当我开始学习ArcObjects时,除了Exploring ArcObjects那本“圣经”外,看得最多的就是Kang-tsung Chang(张康聪)教授的《Programming ArcObjects With VBA:A Task-Oriented Approach》——清晰、简单而又不失条理,通过40个章节的练习,全面系统地介绍了ESRI产品的核心组件。由于VBA是微软提供的一种内置式脚本语言,它能够充分利用ArcGIS Desktop的自身框架,使得我们在编写许多处理脚本时变得更加容易和方便,作为学习ArcObjects的起点,让读者会感觉到似乎毫无头绪的上千个AO组件似乎没有那么复杂。
而科学出版社最近推出的《基于VBA的ArcObjects编程:面向任务的方法》(Programming ArcObjects with VBA: A Task-Oriented Approach第二版的翻译版)则是前一本书的“加强版”,它延续了前一本书的一贯风格,以多个实际的GIS任务为中心,将众多的AO组件功能娓娓道来,不仅介绍了这些组件本身,更是将如何使用这些组件完成一项具体的任务进行了“解剖”。
除了良好的风格之外,这本书更是增加了坐标系、3D模块、Spatial分析模块、栅格数据、Geoprocessing和基于ArcGIS建模的丰富内容,蔚为大观。一方面,这当然是软件版本更新使得书籍内容更加饱满的缘故;而另一方面,这种与我惯常方式不同的著述方式,让我觉得这种学习曲线会更加平滑,值得更多刚开始接触ArcGIS开发的读者,甚至是具有一定经验的开发人员仔细研读。
除了原版图书的精良之外,陈健飞教授等人的翻译工作也是值得赞赏的,平实朴直,清晰明了,虽然在部分地方有“过度翻译”的问题,但瑕不掩瑜。对于科技书籍而言,准确地表现原作者的意图,才是对读者最大的尊重,而这也是本书的优点之一。
但值得注意的是,由于微软不再推广和更新VBA,即将推出的ArcGIS 10将成为最后一个支持VBA的版本,而Python语言将被作为一个更重点的脚本语言被推介,让我们期待能够有一本基于Python的ArcObjects编程书早日问世吧。
Related Items
Categories :
评论与随笔
Tags :
评论随笔 ArcObjects
用VBA就意味着你要买arcmap desktop,费用问题也是需要考虑的