一个普通程序员初步学习arcims的心得与感受-
- 知识体系
- 2005-08-30
- 63热度
- 0评论
用arcims做webgis的应用算来也有一段时间了,从最初的一无所知到现在的初步了解,期间有所经历,把一些感受写出来,希望对从事或爱好这个领域的人有所帮助。也欢迎大家作此方面的交流。
(1)语言的选择
当初所知能够选择的语言种类不是很多,因为个人知识面的原因,记忆中除了arcims就还有maptreme了。之所以最后定下arcims,纯粹是因为它在我们项目领域的应用比较广泛而已。
arcims可以利用的语言很多。还有现成的模板套用,比如说html viewer,记得当时使用的时候还感觉这个功能挺多的,而且服务端几乎不用去管,只需学习下html viewer的帮助和arcxml就可以实现相对很健壮的系统。可是我们公司以前都是自主研发gis平台,而且基于价格的原因,不太愿意依赖别人的东西,正是这种思想引导下,我们采用了activeX connector的方式,一方面过去习惯于使用组件面向对象的方式编程,另一方面有助于快速理解arcxml的结构(个人感觉activeX connector比arcXML更容易上手,而且更容易记住其层次关系,虽然activeX connector的功能确实不强)。
(2)开发的重点
对我们最初开发来说,运行速度不是考虑问题的主要因素,最重要的是有个东西出来可以演示。另外在我看来,只要能够画点线面,其他的都可以自己搞定,而且熟悉gis的人应该知道,这个过程其实并不难。
从activeX的帮助文档开始,开始了arcims的应用开发,最初的过程很快,地图基本操作的功能一个月左右的时间就完成了。开发中感觉稍花点时间的就是鹰眼,测距,侧面积,多图层模糊检索,以及多层的缓冲区分析。我没有研究html viewer,一方面时间不允许,另一方面也不太想深入到繁琐的代码中去,不过好在有开发MapX的经验,所以更多的只是复制一下编程上的技巧而已,基本也都顺利过关。
然而这种好景不长,在开发等值线的时候,因为需要散列无数(仅形容很多)的点使之平滑,在画线的过程中服务端速度遭遇到严重的瓶颈,一个含等值线的地图需要很长时间才能显示发布,这个功能形同虚设,成为演示过程中难言的痛。
同时又遇到了另一个问题,就是需要从数据库中读取3000多个点并画到地图上作为点分布图,使用ACETATE LAYER方式同样遇到速度瓶颈(不要说用ArcSDE,毕竟这个还是很贵的,能不用就不用),多用户并发访问时,每次地图刷新都很慢,开发陷入了一个可预期的性能危机。
这时我们公司有个java强人提出用java applet方式实现客户端画动态点线面,并用了一个月左右的时间实现了主要功能和无比强大的专题,从使用结果看,除了在启动的过程中因为数据从服务端传递到客户端的原因较慢外,一旦加载成功后速度非常快。问题得到了初步的解决。
但 java applet还是要加载虚拟机,传递解压缩文件,启动速度始终有瓶颈,所以更多在局域网内使用,广域网上由于限制太多,因此现在主要想用svg和vml(其实开始已经用到一些简单的实现了,比如缓冲区的画圆,矩形拉框等)替代java applet实现部分画图的功能。但使用java applet可以将大量的分析过程移植到客户端,减轻服务器的运算量以及服务器与客户端的数据传递,在很多场合具有不可替代的优势。所以我感觉如果用svg和xml,最好是比较纯粹的画图,不太复杂的算法可以用javascript实现。svg和vml的好处我就不多说了,网上有很多相关说明,其中感觉vml能与html紧密整合,但功能不太强,而且微软不再提供技术支持;svg功能强大,但由于是纯粹的xml,所以不太容易从原来的系统平滑过渡。
(3) 总结
由于现在很多设想还只是处于研发阶段,另外从初期到现在开发内容变化较大,而且重点都是放在客户端界面的实现上,所以在项目具体应用上的投入不是很多,整个项目进度相对不是很快,压力也可想而知。不过,能够在编程工作中不断发现问题和解决的方向,压力也就不算什么了。这就是我,一个初级程序员进入这个领域简单而快乐的收获。