以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 SVG/GML/VRML/X3D/XAML 』  (http://bbs.xml.org.cn/list.asp?boardid=21)
----  车辆跟踪在WebGIS里的实现  (http://bbs.xml.org.cn/dispbbs.asp?boardid=21&rootid=&id=28161)


--  作者:gengwei80
--  发布时间:3/6/2006 8:57:00 AM

--  车辆跟踪在WebGIS里的实现
车辆跟踪在GIS的应用很广,在以往的C/S里实现这个功能,一般是用程序监视位置信息数据库里的定位信息,再在跟踪层上画出来。而在B/S上由于结构的不同,实现的方式也与C/S有一定差别,要考虑的因素也多一些。
  现从以下几个方面对车辆跟踪功能在Web GIS上的实现进行讨论:
  1.说明结构,列出实现方案;
  2.分析功能,选择最优方案;
  3.功能扩展。

1. 说明结构,列出实现方案
  采用B/S方式,车辆位置在服务器端(以下称server)上,而客户端(以下称client)想要得到车辆的位置,就要在需要时到server上取数据,这个server与client的交互必不可少,少了这个交互,就没办法做跟踪了。所以,交互时client要做什么,server要做什么成了我们讨论问题解决问题的重点。
server上有地图服务(以下称smap)和Web服务(以下简称sweb),一般来说,client的请求都是先到sweb再由sweb转到smap的。
  根据以上说明,跟踪的实现可有以下实现方式:
  a. 在smap上实现。读数据库,把要跟踪的点位置在跟踪层上画出来;
  b. 在sweb上实现。用动态页访问数据库,生成跟踪结果;
  c. 在client上实现。直接用JavaScript在页面上画跟踪位置。

2. 分析功能,选择最优方案
  需要说明的是,在B/S中server负荷及客户端的访问效果应该是重点考虑因素。
  server负荷:车辆跟踪在WebGIS中的应用一般需求是多人对多个车位置,做间隔性的查看。所以这样的交互,一般是,server负荷=client数*跟踪时间间隔。
  客户端的访问效果:我们会在下面做分析。

  详细分析如下:
  (1) 采用a方案
  上面提到了,“一般来说,client的请求都是先到sweb再由sweb转到smap的”,如果在跟踪层上画,就要client把请求发给sweb,sweb把请求转给smap,smap取地图信息画图,smap取跟踪信息定位,smap生成地图,smap通知sweb,地图已生成,sweb把地图显示给client。从上面的流程可以看出,这种跟踪方式已经比正常做一次地图操作的代价还大了,而上面又提了"server负荷=client数*跟踪时间间隔"如果用这种方式,假定用户数是50,跟踪时间时隔是2秒,那么,server的负荷就是1500/分,且server要做smap服务和sweb服务,负荷太大了,不可取。
  (2) 采用b方案
  这个方案比a方案从性能上来说要好一些了,按b方案,应该只是client与sweb的交互,结果画在页面上。这样虽然不是画在地图上,而是用DIV来画,不过效果不比a方案做出来的差,还可以把一些属性信息也加到DIV里,做出鼠标放在DIV上显示详细信息等效果。server负荷虽然在访问次数上没变,但由于smap不用工作了,所以server负荷也应该比a方案的要小。但是这种方案还是有一个弱点,就是上面说的要考虑两个因素里的“客户端的访问效果”,页面要提交,就算地图不换,仅提交页面,自然页面有闪动,用户在跟踪时,如果还是假设跟踪时间时隔是2秒,那么页面两秒闪动一下,效果很不好,还有一个就是在客户端的一些操作如拉框放大,当页面提交时就会被停止,这是没办法忍受的。
  (3) 分析c方案
  这个方案是一个推荐方案,从server负荷到客户端的访问效果都达到了最好,不过上面说到“server与client的交互必不可少”,所以我们这里选择使用XML来解决server与client的交互问题。在server上有一个服务负责把跟踪信息生成XML表,客户端用JavaScript构造XML对象把server上生成的XML取过来,在client上画这个XML里描述的位置信息。
  需要注意的,在client上画定位点时,坐标是像素单位,而一般在server上得到的是地理坐标单位,需要进行换算,并且要判断坐标是否超出了地图窗口,超出的点不绘制。
3. 功能扩展
  (1) client的扩展
  加上鼠标移动到动态目标上时显示提示信息;
  用户可以在XML表中加上一些字段,来显示动态目标的名字等信息;
  动态标签,可在动态目标的旁边增加一个标签,这个标签是动态目标的一个属性,如做一个采油站的油量监控。
  (2) server扩展
  可以用动态页的方式生成一个XML;
  也可以用一个程序监听数据库的车位置变化,在server上不断生成cars.xml。


--  作者:卷积内核
--  发布时间:3/6/2006 10:37:00 AM

--  
值得研究
--  作者:zhangjp999
--  发布时间:5/23/2006 1:18:00 PM

--  
思路不错
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms