hengyu
路人甲
路人甲
  • 注册日期2004-01-08
  • 发帖数65
  • QQ24637884
  • 铜币406枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:20884回复: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
liu76xt
论坛版主
论坛版主
  • 注册日期2004-05-26
  • 发帖数262
  • QQ
  • 铜币499枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-09-02 08:29
<P>首先支持楼主,帖子写得很是精彩!楼主的发展历程也堪称道<img src="images/post/smile/dvbbs/em04.gif" /><img src="images/post/smile/dvbbs/em04.gif" /></P>
<P>我们的选择是ArcIMS的HTML Viewer方式进行开,说实在的当时也没有什么具体的理由,就是HTML Viewer方式功能强大,可定制性较强,有现成的模板可以很快上手,好在用户也没有要求在线数据编辑。我们用的是ArcIMS和ArcSDE,数据存放到Oracle中</P>
<P>对于楼主的几个问题,俺也参与聊聊:</P>
<P>“然而这种好景不长,在开发等值线的时候,因为需要散列无数(仅形容很多)的点使之平滑,在画线的过程中服务端速度遭遇到严重的瓶颈,一个含等值线的地图需要很长时间才能显示发布,这个功能形同虚设,成为演示过程中难言的痛。”
</P>
<P>
等值线、面的生成就要耗时间的,我们是在后台计算,动态更新预先生成的历史等值线、面层的空间数据(作为图层加载),刷新地图后显示计算完成的等值线、面效果图(500个点,从开始计算到最终显示大约需要15秒左右的时间)。</P>
<P>“同时又遇到了另一个问题,就是需要从数据库中读取3000多个点并画到地图上作为点分布图,使用ACETATE LAYER方式同样遇到速度瓶颈(不要说用ArcSDE,毕竟这个还是很贵的,能不用就不用),多用户并发访问时,每次地图刷新都很慢,开发陷入了一个可预期的性能危机。”</P>
<P>如果不选有ArcSDE,有时候对于空间数据的处理可能会有一些麻烦,就像你后来所讲的(VML或SVG技术的引入)ArcIMS并不能完成所有的功能,所以必须进行扩展,而恰好它提供了较好的扩展方式(XML),如果要作为Acetate Layer显示大量的地图要素显然会有问题,因为AcetateLayer的加载也是要刷新地图,做地图请求的。比如在处理同时实事跟踪多个GPS目标的时候,我们没有将路径和跟踪目标作为Acetate Layer加载,而是采用了JS+VML+DHTML的技术,当然也用到了ArcSDE(避开ArcIMS应用服务器)通过ArcSDE二次开发获取相关的坐标信息或者范围信息。--里面设计到了经纬度到屏幕坐标的转换,地图刷新和客户端VML对象的同步问题等等,比较复杂,但是也是一种解决方法吧。</P>
<P>Java Applet就不敢多说了,用户当时就把它一棍子打死了,呵呵,不用。</P>
<P>如果是在广域网上发布可能真的是难于说服用户。</P>
<P>对于SVG和VML以及Flash的优劣,网上早有一些人在评论,各执一词,而W3C的动作也太缓慢了,让人受不了。综合了一些看法,结合自己的实际使用我们现在用的较多的是VML(语法简单,不需要任何插件,并且作为客户端的脚本和ArcIMS的Javascript以及 扩展的JSP+Servlet的实现之间的交互比较简单,而SVG可是要插件的哦,交互性也就差一点,SVG的优点咱就不说了)。</P>
<P>现在的应用还是很不成熟, 借楼主的宝地聊聊,希望有经验的都来参与讨论一下。
</P><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em11.gif" /><img src="images/post/smile/dvbbs/em11.gif" />
[此贴子已经被作者于2004-9-2 9:04:52编辑过]
| ------------- | 白云悠悠矶头月涌千骏过, 往事渺渺江上风情一燕来。 | ------------- | [img]http://www.gisempire.com/bbs/showimg.asp?BoardID=3&filename=2004-9/200491972356282.gif[/img]
举报 回复(0) 喜欢(0)     评分
nc8000
路人甲
路人甲
  • 注册日期2004-08-11
  • 发帖数42
  • QQ
  • 铜币237枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-09-02 13:53
<P>感谢楼上的两位将经验拿出来与大家分享。</P><P>我作GIS也有好长时间了不过一直都C/S方式,现在公司要用ArcIMS做WebGIS,我正准备学习,看到楼上两位的发言好像使用Applet没有前途,不知道是不是这样的?</P><P>请问,使用XML是否能在浏览器端完成空间分析的功能呢?</P><P>另外如果有SVG的资料希望大家能拿出来分享一下,谢谢!</P>
举报 回复(0) 喜欢(0)     评分
hengyu
路人甲
路人甲
  • 注册日期2004-01-08
  • 发帖数65
  • QQ24637884
  • 铜币406枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2004-09-02 15:16
<P>请问你的空间具体指的是缓冲区分析吗,如果是,那就肯定可以实现?</P>
举报 回复(0) 喜欢(0)     评分
destnity
路人甲
路人甲
  • 注册日期2004-03-25
  • 发帖数341
  • QQ
  • 铜币272枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2004-09-02 15:16
<P>不错的贴子。虽然不做webGIS, 但看了也收获不少。</P><img src="images/post/smile/dvbbs/em05.gif" />
签 名: 不能超过 250 个字符 文字将出现在您发表的文章的结尾处。
举报 回复(0) 喜欢(0)     评分
hengyu
路人甲
路人甲
  • 注册日期2004-01-08
  • 发帖数65
  • QQ24637884
  • 铜币406枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于: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)     评分
samol
路人甲
路人甲
  • 注册日期2003-10-10
  • 发帖数49
  • QQ
  • 铜币235枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2004-09-07 16:06
<img src="images/post/smile/dvbbs/em06.gif" />
举报 回复(0) 喜欢(0)     评分
liu76xt
论坛版主
论坛版主
  • 注册日期2004-05-26
  • 发帖数262
  • QQ
  • 铜币499枚
  • 威望0点
  • 贡献值0点
  • 银元0个
7楼#
发布于:2004-09-08 16:57
<P>给该贴加精希望楼主能够继续关注相关内容,发表自己的见解;</P>
<P>给予奖励:</P>金钱10;魅力2;经验5
[此贴子已经被作者于2004-9-8 17:00:24编辑过]
| ------------- | 白云悠悠矶头月涌千骏过, 往事渺渺江上风情一燕来。 | ------------- | [img]http://www.gisempire.com/bbs/showimg.asp?BoardID=3&filename=2004-9/200491972356282.gif[/img]
举报 回复(0) 喜欢(0)     评分
hengyu
路人甲
路人甲
  • 注册日期2004-01-08
  • 发帖数65
  • QQ24637884
  • 铜币406枚
  • 威望0点
  • 贡献值0点
  • 银元0个
8楼#
发布于: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)     评分
smileapple
路人甲
路人甲
  • 注册日期2004-09-13
  • 发帖数46
  • QQ
  • 铜币47枚
  • 威望0点
  • 贡献值0点
  • 银元0个
9楼#
发布于:2004-09-13 17:02
up
举报 回复(0) 喜欢(0)     评分
上一页
游客

返回顶部