hengyu
路人甲
路人甲
  • 注册日期2004-01-08
  • 发帖数65
  • QQ24637884
  • 铜币406枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:21031回复:60

原创:一个普通程序员初步学习arcims的心得与感受

楼主#
更多 发布于:2004-09-02 01:34
    用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) 总结
    由于现在很多设想还只是处于研发阶段,另外从初期到现在开发内容变化较大,而且重点都是放在客户端界面的实现上,所以在项目具体应用上的投入不是很多,整个项目进度相对不是很快,压力也可想而知。不过,能够在编程工作中不断发现问题和解决的方向,压力也就不算什么了。这就是我,一个初级程序员进入这个领域简单而快乐的收获。
喜欢0 评分0
hengyu
路人甲
路人甲
  • 注册日期2004-01-08
  • 发帖数65
  • QQ24637884
  • 铜币406枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-09-02 15:16
<P>请问你的空间具体指的是缓冲区分析吗,如果是,那就肯定可以实现?</P>
举报 回复(0) 喜欢(0)     评分
hengyu
路人甲
路人甲
  • 注册日期2004-01-08
  • 发帖数65
  • QQ24637884
  • 铜币406枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-09-07 11:26
<P>    to二楼版主,前段时间比较忙,没有来得及针对相关问题向你请教,从你使用的软件可以看出,你们的系统相对比较大,不太合适做些低成本(就是所谓的小型系统啦)的应用程序。当然这是题外话,不具体谈论了。
    之所以说这些,是因为牵涉到你说的下面这段话---
 等值线、面的生成就要耗时间的,我们是在后台计算,动态更新预先生成的历史等值线、面层的空间数据(作为图层加载),刷新地图后显示计算完成的等值线、面效果图(500个点,从开始计算到最终显示大约需要15秒左右的时间)。</P><P>    我不清楚是否考虑并发用户的访问,我不太了解arcsde的原理,但根据看到的一些概述应该有将数据库中的数据转成地图图层以及图层信息相关属性转成数据库的能力,我估计大概原理应该跟这些有关,但你们数据是以字符流的形式保存的还是其他?另外等值线(等值面)所在层究竟是什么类型?AcetateLayer应该达不到的,但如果真的能够达到你所说的15秒的时间,我想用户应该还是可以忍受的。当然,如果全部移植到客户端的java applet,服务器端获取要分析的数据并传到客户端,客户端进行分析并画图,这就不涉及到多用户的线程考虑了,还是很不错的哦。
    对于vml,我现在正在看,之所以没有直接上手svg,简单说来就是需要插件,感觉不爽,哈哈。而且如果真的只是应用于webgis,我感觉vml应该足够用了,不知道在定制符号样式方面有没有什么局限:)
    我用了下vml的group和coordsize,由于客户端的坐标信息都是相对的,实际上数据转化是比较麻烦的事情,尤其是从屏幕坐标转成相对坐标的时候。客户端保存的是不变的地图坐标,所以要不停的转啊转烦透。哎,再研究下吧,等学习完了,再和大家交流一下,另外,我觉得svg和vml其实原理差不多,就是你对特性的属性的熟悉程度。一步一步来吧。</P>
举报 回复(0) 喜欢(0)     评分
hengyu
路人甲
路人甲
  • 注册日期2004-01-08
  • 发帖数65
  • QQ24637884
  • 铜币406枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2004-09-09 09:21
<P>加精了??<img src="images/post/smile/dvbbs/em04.gif" />,虽然付出了些<img src="images/post/smile/dvbbs/em08.gif" />,但你的鼓励是我继续发贴的动力!前进。。。。</P>
<P>但有点不清楚,这些奖励有什么具体的作用啊:)</P>
[此贴子已经被作者于2004-9-9 9:21:58编辑过]
举报 回复(0) 喜欢(0)     评分
游客

返回顶部