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

内容更新:webgis上实时监控的快速实现方法

楼主#
更多 发布于:2004-01-09 09:01
<P>所谓实时监控,通俗点说法就是隔段时间页面自动刷新,地图上各个监控点对应有一个表格,表格内数据为最新的监控数据。
  如果地图使用图片的话,一个误区在于,如何在地图上(服务器端)动态添加表格,再生成图片。。其实关键在于转变开发的思想,把工作转移到客户端,用html来生成这个表格(因为无法直接贴图,所以没有图例)。本方法优点在于客户端只需浏览器才行,而很多地方都使用java applet实现,这样需要java虚拟机,不太适合广域网的实现。
  需要注意的几点:
  1、每张表格都是一个Layer层,通过对应监控点的地理坐标获得屏幕的绝对位置(一般工具都有从地理坐标转化为屏幕坐标的方法)。
  2、所有的表格都在一个大的Layer内。这样,关闭和显示等整体的控制比较方便。
  3、最好能利用对象集合或数组方式保存监控信息,用通过Layer的innerHTML属性将监控表格对应的HTML代码更新到大层中。
  4、放大缩小的时候,要判断是否处在实时监控状态,如果是,则重新运行实时监控对应的函数,这样就可以实现动态刷  新。
  因为整个过程代码量较大,不方便贴出,再加上本人笔触有限,未能很好表达清楚,以后会慢慢扩充说明。此方法不足之处在于监控表格容易交迭,不过这可以通过特定算法尽可能避免交迭。如有不同见解或需改进之处,欢迎来信指正探讨。</P>
<P>
     "国际刑警"版主发话了,我就再补充一些吧。</P>
<P>使用arcims方式进行webgis开发时,个人感觉客户端画图较难的是实时定位。什么意思呢,就是说当地图大小或位置发生变化时,客户端画的信息应该如何同步更新。最初的做法如下,服务端用数组保存画在客户端的点坐标,每次更新都用FromMapPoint方式获得屏幕坐标,然后以字符串方式传递后,再更新客户端的点位置。问题是解决了,但总觉得不爽,别扭的很。终于无意中知道了ToMapPoint和FromMapPoint的原理,于是自己在客户端写了个类似的函数,当然,主要是写类似于FromMapPoint,因为在地图放大缩小位移的过程中,动态点的地理坐标通常不会变,变的只是屏幕坐标。其实方法也是很简单的,只是我不愿意写代码,所以就描述一下开发过程:
(1)地图初始化获得初始的MapScreenWidth(地图屏幕宽度),MapWidth(地图地理宽度);获得比例尺scale=MapWidth/MapScreenWidth
(2)每次刷新都要将Map.Extent的四个属性保存在客户端,简单起见,暂且用(xMin,yMin,xMax,yMax)
(3)假设一点地理坐标为(x,y),则对应的屏幕坐标为xScreen = (x-xMin)/scale;yScreen=(yMax-y)/scale
(4)剩下看你客户端点是如何保存的,如果用图片的话,我用div 的 style中 left 和 top,把这两个值更换为xScreen和yScreen一下即可。
(5)只需在客户端用个循环即可把所有点位置更新,对应的监视表格也可刷新其位置。</P>
<P>以上方法在arcims的activeX Connector编码中通过。收笔了,不知道描述的是否详细,欢迎大家交流。</P>
<P>     </P>
[此贴子已经被作者于2004-9-3 17:17:39编辑过]
喜欢0 评分0
hengyu
路人甲
路人甲
  • 注册日期2004-01-08
  • 发帖数65
  • QQ24637884
  • 铜币406枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-08-31 15:58
<b><FONT color=#000066>to我是一个兵,源码已发,虽然晚了点,但还是希望有用。</FONT></b>
举报 回复(0) 喜欢(0)     评分
hengyu
路人甲
路人甲
  • 注册日期2004-01-08
  • 发帖数65
  • QQ24637884
  • 铜币406枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-09-03 17:32
补充一下,新增部分的实现原理的坐标转换其实是理想化的平面的转换,但由于地球人都知道地球是圆的,所以这个方法只能在地理位置比较小的情况下,比如说市级别的地图,省一级的可能有点误差,但应该不会很明显。
举报 回复(0) 喜欢(0)     评分
hengyu
路人甲
路人甲
  • 注册日期2004-01-08
  • 发帖数65
  • QQ24637884
  • 铜币406枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2004-09-07 10:56
<P>楼上的,源码这个东西本来是没什么,只是想看显示效果的话,牵涉的文件实在很多,所以就只讲了原理。</P><P>不过既然真想自己做开发,个人觉得自己多花点时间实际写下会更有收获。</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部