首页 > 范文大全 > 正文

基于WebGIS的信息化系统人机交互技术研究

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于WebGIS的信息化系统人机交互技术研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:利用技术和GIS技术,有效组合Web开发时的服务器端策略和客户端策略,研究对信息化系统设备设施的监视、控制和管理的基于webgis的人机交互技术,实现地图缩放和鹰眼等功能,并且能显示设备设施的实时信息并对其进行实时监控。

关键词:GIS;;人机交互;监控;管理

中图分类号:TP393 文献标识码:A文章编号:1009-3044(2011)22-5480-04

Research of Human-machine Communicative Technology in the Information System Based on WebGIS

WANG Rong-hao1, WANG Chuan1, CHEN Dong-hao2, YANG Qi-liang1

(1.Engineering Institute of Engineering Corps, PLA University of Science and Technology, Nanjing 210007, China; 2.Engineering Institute of NorthSea, Qingdao 266012, China)

Abstract: This thesis develops the WebGIS-based human-machine communicative system that can monitor, manipulate and administrate devices or infrastructure in the information system by means of using the technology of and GIS and integrating effectively the strategies of client-side and server-side. The purpose of the system is to make it possible to not only realize the functions of resizing the map and navigation but also show the current information of the devices or infrastructure and at the same time monitor them.

Key words: GIS; ; human-machine communicative; monitor; administrate

1 研究背景

在工程信息化建设和管理中,我们需要及时掌握工程所在处的地理信息、工程内部设备位置、工程中摄像头监控等信息。如果采用C/S技术,则需要客户机上安装客户端应用程序才能够完成各种功能,这给我们带来很大的不便。B/S结构最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。B/S架构的软件只需要管理服务器就行了,所有的客户端只需安装浏览器,根本不需要做任何的维护。只要有一台能够上网的电脑或者能连接到网络的PDA设备甚至手机就能使用,客户端零维护。系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。

WebGIS技术是基于Web的地理信息系统,在实现实时监控和实时道路信息方面有着良好的用户体验和可视化效果。用过Goolgle地图的人就会发现WebGIS的便捷性和有效性。使用B/S策略开发基于Web的GIS系统,使管理者和决策者随时随地掌握工程现场的各种道路信息、设备信息、监控信息等,方便其及时做出决策。

2 系统功能设计

WebGIS的开发技术很多,我们用MapInfo公司开发的基于MapXtreme技术来设计WebGIS软件以完成所需的功能。MapXretme平台提供了一个高度可视化的、直观的组件,便于将地图功能集成到任何Web应用中,可以和.NET平美结合,可以支持在一个集中管理的服务器上运行地图应用,降低了硬件和管理成本,同时极大地提高了应用性能、可靠性和安全性。

1)地图

将矢量地图通过MapXtreme技术转化成GIF或者其他栅格图像,使用户可以通过www浏览器访问地图。MapXtreme支持java,可以完成多平台的地图缩放、平移操作。由于传递到客户端(浏览器端)的只是一幅经过高度压缩的栅格图像,而真正的矢量图像仍保留在服务器端,减少了网络传输负担,并且降低了原始数据被盗用的可能。

2)信息可视化

通过地图表达声音、图像、文字等信息,直观而且信息量丰富。

3)MapXtreme的地图化功能

① 专题图:利用晕渲、等级符号、独立值、点密度、饼图、直方图进行区域值的显示;

② 对象处理:合并、缓冲、相交、删除对象(点、线、面)、返回结果数据;

④ 绘制图层:允许开发人员绘制定制的地图对象,如尺标、天线传送方向箭头;

⑤ 查找:通过州名、ZIP码、城市名、街道名或客户名进行查找;

⑥ 广泛的数据源:使用通用的数据界面,包括ODBC、DAO、ClipBoard和OLE Data界面访问数据。

通过MapXtreme,用户可以在Web上基于电子地图的应用系统。所有的最终用户只需要安装浏览器即可访问服务器端的数据,用户可以很方便的对地图进行放大、缩小、漫游、查询、统计等操作。此外,MapXtreme还提供了许多强大的地图化功能,满足用户的不同层次的需要,包括:专题图、缓冲区分析、对象(地图)编辑、绘制图层、查找、直接读取LotusNotes、图层控制、空间选择、访问各种数据源等。

3 系统实现

单纯的服务器策略和客户端策略都有明显的局限性。当服务器策略涉及频繁的数据传输时,它们的效率受到网络宽带和网络负荷的严重影响。而在客户端策略中,当处理请求和处理能力不一致时,受计算能力的影响,某些任务可能运行缓慢,甚至根本无法完成。服务器端策略和客户端策略的有效组合则可以为问题的解决提供一个很好的方案。当涉及大量的数据操作和复杂分析任务时,可以让计算能力很强的服务器来处理。当涉及用户交互较多的任务时,可以用客户机进行处理。在这种情况下,服务器和客户机可以共享它们的性能和数据处理能力,从而合理的分配数据处理程序,使系统的整体性能最优。

1)地图制作

将图片光栅化后作为地图的底图。栅格图像转化为矢量图,将栅格图像进行配准,确定地图上各点的经纬度。然后根据图像配准布局地图,在栅格背景图的基础上通过MapInfo的画图工具做出各个图层,如道路,水路,植被等。

2)事件图层的管理控制

将事件信息写入地图的表中,在主程序中通过编写代码实现事件信息的查询、触发等。

3)优化WebGIS运行速度的方法

① 对每个图层设置Zoom范围;

② 启用COM+的Session池;

③ 启用Cache;

④ 用文件方式存储地图数据,将地图.tab文件存储在.mws工作空间当中。

4 关键技术

1)地图加载及放大、缩小、拖动等功能的实现

private Map GetMapObj(string mapAlias)

{ Map map = null;

if (mapAlias == null || mapAlias.Length

{ map = MapInfo.Engine.Session.Current.MapFactory[0];

}else

{ map = MapInfo.Engine.Session.Current.MapFactory[mapAlias];

if (map == null) map = MapInfo.Engine.Session.Current.MapFactory[0];

} return map;

}

private bool IsDirtyMapXtremeSession()

{ return (MapInfo.Engine.Session.Current.CustomProperties["DirtyFlag"] != null);

}

private bool IsUsersFirstTime()

{ return (HttpContext.Current.Session[StateManager.GetKey("Zoom")] == null);

}

public static void BeginRequest(System.Web.SessionState.HttpSessionState session, string mapAlias)

{ if (StateManager.GetStateManagerFromSession() == null)

{

StateManager.PutStateManagerInSession(new AppStateManager());

MapInfo.WebControls.MapControlModel controlModel = MapControlModel.GetModelFromSession();

}

StateManager.GetStateManagerFromSession().ParamsDictionary [StateManager.ActiveMapAliasKey] = mapAlias;

StateManager.GetStateManagerFromSession().RestoreState();

} public static void EndRequest()

{

StateManager.GetStateManagerFromSession().SaveState();

} #endregion

}

2)基于MapXtreme的鹰眼技术

鹰眼是除了主视图外的一个小视图窗口,用来显示全图,并用1个矩形表示大图的地图边界。点击鹰眼窗口时,地图自动定位到相应位置,当地图视图(包括缩放比例和中心)发生变化时,鹰眼上的导航矩形框相应变化,以指示用户当前所处的位置。

鹰眼的实现思路:在同一页面表单上放置2个MapControl控件,分别为地图主窗口(mainMapControl)和鹰眼窗口(overviewMapControl),地图主窗口用于显示实际的地图,鹰眼窗口则需要将地图按合适的比例尺显示,然后在鹰眼窗口上创建1个图层,在该图层上添加1个矩形对象FeatureGeometry,该矩形的大小随着主图边界而变化。由于两个窗口的大小不同,需要经过1次比例转换,因此首先定义1个setView( )方法,该方法用于实现地图数据自适应任意大小地图窗口。当地图主窗口中的图形被缩放或者平移之后,在鹰眼窗口已有图层中加入1个临时层,在临时层上动态生成1个蓝色矩形,显示地图主窗口中显示的图形在整体地图中所处的位置。

系统中鹰眼功能的具体实现步骤如下:

① 判断用户是否对主地图窗口进行了缩放或平移操作,若没有变换则鹰眼窗口内容不变,若有变换则获取主地图窗口显示的地图范围。然后创建1个矩形对象并设置其颜色和宽度属性,创建窗口样式并设置样式属性;

② 判断鹰眼窗口的图层中是否已经存在临时图层,若存在则先清空临时图层中的所有对象;若不存在则创建1个临时图层并将临时图层加入到鹰眼窗口图层中;

③ 将矩形对象插入临时图层。到此系统即完成了鹰眼窗口的地图视图变换。

④ 通过让 Overview(概览图)和主地图使用相同的地图,我们可以将服务器上的计算负载降低到最低限度;仅在内存中保存一个地图可以降低应用程序的内存占用率,只有在地图发生更改时才需要渲染两次,一次用于渲染主地图,一次用于渲染概览图。

3)鼠标中键缩放功能的实现

MapXtreme 2008中,在Windows应用程序中自带鼠标中键缩放的功能,而在Web应用程序中却没有,如果能够实现会显得更加人性化。根据MapXtreme平台的组件开发技术原理,编写代码如下:

① 在页面的之前添加如下JavaScript代码:

function map_image()

{ var Img = document.getElementById("MapControl1_Image");

if (Img != null)

{ Img.attachEvent('onmousewheel', GetMouseWheelEvent());

}

}function GetMouseWheelEvent()

{ var mapImage = document.getElementById("MapControl1_Image");

var url = "MapController.ashx?Command=WheelZoom&Width=" + mapImage.width + "&Height=" + mapImage.height+ "&ExportFormat=" + mapImage.exportFormat + "&Ran=" + Math.random() + "&wheelvalue=" + event.wheelDelta;

if (mapImage.mapAlias)

url += "&MapAlias=" + mapImage.mapAlias;

try

{mapImage.src = url;

}

catch (e)

{ alert("Error!");

}}

② 在自定义的后台代码文件EagleEyes.cs中添加如下类:

[Serializable]

public class WheelZoom : MapBaseCommand

{ public WheelZoom()

{

Name = "WheelZoom";

} public override void Process()

{ int wheelvalue = int.Parse(System.Convert.ToString (HttpContext. Current.Request["wheelvalue"]));

MapControlModel model = MapControlModel. GetModelFromSession();

model.SetMapSize(MapAlias, MapWidth, MapHeight);

try

{MapInfo.Mapping.Map map = model.GetMapObj(MapAlias);

MapInfo.Geometry.Distance d;

if (wheelvalue > 0)

{d = new MapInfo.Geometry.Distance(map.Zoom.Value * 0.9, map.Zoom.Unit);

}else

{d = new MapInfo.Geometry.Distance(map.Zoom.Value * 1.1, map.Zoom.Unit);

}map.Zoom = d;

}

finally

{ System.IO.MemoryStream ms = model.GetMap(MapAlias, MapWidth, MapHeight, ExportFormat);

StreamImageToClient(ms);

}} }

③ 在页面加载处注册Command:

if (Session.IsNewSession)

{MapInfo.WebControls.MapControlModel controlModel = MapControlModel.GetModelFromSession();

mands.Add(new GetOverviewMapCommand());

mands.Add(new Info());

mands.Add(new WheelZoom());

}

4)地图视频监视事件的实现

将设备信息写入到地图文件中,自定义信息查询组件,当鼠标单击信息工具时获取图元的各种信息并显示。信息查询组件的开发技术原理与鼠标中键缩放功能的组件开发技术原理大体一致,这里不再赘述。

5 总结

本文介绍了利用MapXtreme技术和.NET平台开发信息化WebGIS系统的流程,实现了地图鹰眼、鼠标中键缩放、实时监控、设备信息监控等功能,详细阐述了实现过程中的关键技术,所开发的系统为管理和决策者提供了实时信息,方便其快速准确地做出决策。

参考文献:

[1] 王桥,张宏,李旭文,等.水资源地理信息系统[M].北京:科学出版社,2004.

[2] 孟令奎,史文中,张鹏林,等.网络地理信息系统原理与技术[M].北京:科学出版社,2005.

[3] 张建新,赵黎民.基于3S技术的县级土地利用数据库建设[J].国土资源科技管理,2008,25(4):67-70.

[4] 2.0揭秘[M].北京:人民邮电出版社,2007.

[5] Karli.C#入门经典[M].3版.北京:清华大学出版社,2006.

[6] 哈特 2.0经典教程[M].北京:人民邮电出版社,2007.

[7] Christian Nagel,Bill Evjen,Jay Glynn.C#高级编程[M].7版.李铭,译.北京:清华大学出版社,2010.

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文