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

更新时间:2023-08-19 16:53:01 阅读量: 高中教育 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1009-3044

与技术电脑知识与技术ComputerKnowledgeKnowledgeandandTechnologyTechnology电脑知识No.22,August2011.E-mail:kfyj@第7卷第22期(2011年8月)Tel:+86-551-56909635690964基于WebGIS的信息化系统人机交互技术研究

王荣浩1,王川1,陈东浩2,杨启亮1

(1.解放军理工大学工程兵工程学院,江苏南京210007;2.海军北海工程设计院,山东青岛266012)

摘要:利用技术和GIS技术,有效组合Web开发时的服务器端策略和客户端策略,研究对信息化系统设备设施的监视、控制和管理的基于WebGIS的人机交互技术,实现地图缩放和鹰眼等功能,并且能显示设备设施的实时信息并对其进行实时监控。关键词:GIS;;人机交互;监控;管理中图分类号:TP393文献标识码:A文章编号:1009-3044(2011)22-5480-04

ResearchofHuman-machineCommunicativeTechnologyintheInformationSystemBasedonWebGIS

WANGRong-hao1,WANGChuan1,CHENDong-hao2,YANGQi-liang1

(1.EngineeringInstituteofEngineeringCorps,PLAUniversityofScienceandTechnology,Nanjing210007,China;2.EngineeringInstituteofNorthSea,Qingdao266012,China)

Abstract:ThisthesisdevelopstheWebGIS-basedhuman-machinecommunicativesystemthatcanmonitor,andGISandintegratingeffectivelythestrategiesofclient-sideandserver-side.Thepurposeofthesystemistomakeitpossibletonotonlyrealizethefunctionsofresizingthemapandnavigationbutalsoshowthecurrentinformationofthedevicesorinfrastructureandatthesametimemonitorthem.

Keywords:GIS;;human-machinecommunicative;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的地图化功能

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

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

③对象编辑:生成、修改、删除;

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

收稿日期:2011-06-25

基金项目:中国人民解放军理工大学预先研究基金(No.20110316)

作者简介:王荣浩(1985-),男,江苏南京人,讲师,主要研究方向为计算机控制系统;王川,男,河南驻马店人,本科,主要研究方向为

计算机网络;陈东浩,男,江苏南京人,工程师,主要研究方向为计算机应用;杨启亮,男,河南信阳人,讲师,主要研究方向

为软件工程。

5480计算机工程应用技术本栏目责任编辑:梁书

第7卷第22期(2011年8月)ComputerKnowledgeandTechnology电脑知识与技术⑤查找:通过州名、ZIP码、城市名、街道名或客户名进行查找;

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

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

3系统实现

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

1)地图制作

将图片光栅化后作为地图的底图。栅格图像转化为矢量图,将栅格图像进行配准,确定地

图上各点的经纬度。然后根据图像配准布局地图,在栅格背景图的基础上通过MapInfo的画图

工具做出各个图层,如道路,水路,植被等。

2)事件图层的管理控制

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

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

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

②启用COM+的Session池;

③启用Cache;

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

4关键技术图1COM+池的结构体系

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

用MapInfo.Web.UI.WebControls,把地图控件拉入Web窗体后,点击右键打开控件的属性窗口,从这里加载.mws文件。用Map-Info.WebControls,把地图控件拉入Web窗体后,MapXtreme会自动在Web.config文件中写入加载.mws文件的配置语句:

<addkey="MapInfo.Engine.Session.Workspace"value="c:\ProgramFiles\MapInfo\MapXtreme\6.8.0\Samples\Data\World.mws"/>将.mws文件以及相关的.tab、.dat等MapInfo地图文件都放在当前开发的站点目录下,手动修改value值,把欲加载的工作空间路径及文件名写进去,再把放大、缩小、移动等工具控件拉入Web窗体,编译生成.dll文件,一个最简单的网络地理信息系统就可以运行了。

<addkey="MapInfo.Engine.Session.Workspace"value="..."/>这一条语句可以加载多个工作空间,只要在不同的工作空间之间用分号分隔开就行了。各个工作空间中地图的别名不要重名,否则会发生错误。

MapXtreme2008中,要为所使用的工具添加其它交互用法,首先要编写状态管理程序。状态管理程序继承StateManager类,这个类属于MapInfo.WebControls命名空间。在MapXtreme2008中,各种功能的实现都是通过开发自

定义组件来实现的,组件开发流程如图2所示。

状态管理程序(AppStateManager)代码实现如下:

publicclassAppStateManager:StateManager

{publicAppStateManager()

{}

publicoverridevoidRestoreState()

{stringmapAlias=ParamsDictionary[ActiveMapAliasKey]asstring;

Mapmap=GetMapObj(mapAlias);

if(IsUsersFirstTime())

{if(IsDirtyMapXtremeSession())

{RestoreDefaultState(map);图2组件开发流程图}

else

{SaveDefaultState(map);

}}

else

{if(IsDirtyMapXtremeSession()==false)

{SaveDefaultState(map);

RestoreZoomCenterState(map);

ManualSerializer.RestoreMapXtremeObjectFromHttpSession("Selection");

}

本栏目责任编辑:梁书计算机工程应用技术5481

ComputerKnowledgeandTechnology电脑知识与技术第7卷第22期(2011年8月)

}

publicoverridevoidSaveState()

{stringmapAlias=ParamsDictionary[ActiveMapAliasKey]asstring;

Mapmap=GetMapObj(mapAlias);

if(map!=null)

{SaveZoomCenterState(map);

ManualSerializer.SaveMapXtremeObjectIntoHttpSession(MapInfo.Engine.Session.Current.Selections.DefaultSelection,"Selection");

}}

privatevoidSaveDefaultState(Mapmap)

{HttpApplicationStateapplication=HttpContext.Current.Application;

if(application["DefaultZoom"]==null)

{

application["DefaultSelection"]=ManualSerializer.BinaryStreamFromObject(MapInfo.Engine.Session.Current.Selections.De-

faultSelection);

application["DefaultCenter"]=map.Center;

application["DefaultZoom"]=map.Zoom;

}

MapInfo.Engine.Session.Current.CustomProperties["DirtyFlag"]=true;

}privatevoidRestoreDefaultState(Mapmap)

{

HttpApplicationStateapplication=HttpContext.Current.Application;

MapInfo.Engine.Session.Current.Selections.DefaultSelection=

(MapInfo.Engine.Selection)ManualSerializer.ObjectFromBinaryStream(application["DefaultSelection"]asbyte[]);

map.Zoom=(MapInfo.Geometry.Distance)application["DefaultZoom"];

map.Center=(MapInfo.Geometry.DPoint)application["DefaultCenter"];

}

#regionUtilityclassesforAppStateManagement.These,ingeneral,donot

havetochange.

privateMapGetMapObj(stringmapAlias)

{Mapmap=null;

if(mapAlias==null||mapAlias.Length<=0)

{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];

}returnmap;

}

privateboolIsDirtyMapXtremeSession()

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

}

privateboolIsUsersFirstTime()

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

}

publicstaticvoidBeginRequest(System.Web.SessionState.HttpSessionStatesession,stringmapAlias)

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

{

StateManager.PutStateManagerInSession(newAppStateManager());

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

}

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

StateManager.GetStateManagerFromSession().RestoreState();

}publicstaticvoidEndRequest()

{

StateManager.GetStateManagerFromSession().SaveState();

}#endregion

}

2)基于MapXtreme的鹰眼技术

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

鹰眼的实现思路:在同一页面表单上放置2个MapControl控件,分别为地图主窗口(mainMapControl)和鹰眼窗口(overviewMap-Control),地图主窗口用于显示实际的地图,鹰眼窗口则需要将地图按合适的比例尺显示,然后在鹰眼窗口上创建1个图层,在该图层上添加1个矩形对象FeatureGeometry,该矩形的大小随着主图边界而变化。由于两个窗口的大小不同,需要经过1次比例转换,5482计算机工程应用技术本栏目责任编辑:梁书

第7卷第22期(2011年8月)ComputerKnowledgeandTechnology电脑知识与技术因此首先定义1个setView()方法,该方法用于实现地图数据自适应任意大小地图窗口。当地图主窗口中的图形被缩放或者平移之后,在鹰眼窗口已有图层中加入1个临时层,在临时层上动态生成1个蓝色矩形,显示地图主窗口中显示的图形在整体地图中所处的位置。

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

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

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

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

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

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

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

①在页面的</form>之前添加如下JavaScript代码:

functionmap_image()

{varImg=document.getElementById("MapControl1_Image");

if(Img!=null)

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

}

}functionGetMouseWheelEvent()

{varmapImage=document.getElementById("MapControl1_Image");

varurl="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]

publicclassWheelZoom:MapBaseCommand

{publicWheelZoom()

{

Name="WheelZoom";

}publicoverridevoidProcess()

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

MapControlModelmodel=MapControlModel.GetModelFromSession();

model.SetMapSize(MapAlias,MapWidth,MapHeight);

try

{MapInfo.Mapping.Mapmap=model.GetMapObj(MapAlias);

MapInfo.Geometry.Distanced;

if(wheelvalue>0)

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

}else

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

}map.Zoom=d;

}

finally

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

StreamImageToClient(ms);

}}}

③在页面加载处注册Command:

if(Session.IsNewSession)

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

mands.Add(newGetOverviewMapCommand());

(下转第5486页)mands.Add(newInfo());

本栏目责任编辑:梁书计算机工程应用技术5483

ComputerKnowledgeandTechnology电脑知识与技术第7卷第22期(2011年8月)内存资源是否满足作业要求。Tasktracker上的空闲资源数量值可以通过tasktracker的内存资源总量减去当前已经使用的内存数量得到,而后者包含在tasktracker向jobtracker发送的周期性心跳信息中。目前,基于内存的调度只能在linux平台下起作用,关于内存调度的相关参数可以通过配置文件来设置。

3)公平份额调度算法(FairScheduler)

FairScheduler是由Facebook公司提出的,为了解决Facebook要处理生产型作业(数据分析、HIVE)、大型批处理作业(数据挖掘、机器学习)、小型交互型作业(HIVE查询)的问题。同时满足不同用户提交的作业在计算时间、存储空间、数据流量和响应时间上都有不同需求的情况下,使hadoopmapreduce框架能够应对多种类型作业并行执行,使得用户具有良好的体验,所以Facebook提出了该算法。

FairScheduler的设计思想是,尽可能保证所有的作业都能够获得等量的资源份额。系统中只有一个作业执行时,它将独占集群所有资源。有其他作业被提交时就会有TaskTracker被释放并分配给新提交的作业,以保证所有的作业都能够获得大体相同的计算资源。

这三种调度算法存在一定的缺陷,目前hadoop集群作业调度算法已近成为是研究的重点之一,例如适用于异构集群的调度器LATE和适用于实时作业的调度器DeadLineScheduler和Constraint-basedScheduler都提出了新的处理机制。

5结论

总体来说,对于Hadoop平台,现在主要有三种优化思路,分别为:从应用程序角度角度进行优化,从参数配置角度进行优化,从作业调度算法角度进行优化。对于第一种思路,需要根据具体应用需求而定,同时也需要在长期实践中积累和总结;对于第二种思路,大部分采用的方法是根据自己集群硬件和具体应用调整参数,找到一个最优的。对于第三种思路,难度较大,但效果往往非常明显。

参考文献:

[1]ZahariaM,BorthakurD,SarmaJS,et,al.Jobschedulingformulti-usermapreduceclusters[C].EECSDepartment,UniversityofCalifornia,Berkeley,Tech.Rep,Apr2009.

[2]TianC,ZhouH,HeY.Adynamicmapreduceschedulerforheterogeneousworkloads[C]//Proceedingsofthe2009EighthInternationalConferenceonGridandCooperativeComputing,ser.GCC'09.Washington,DC,USA:IEEEComputerSociety,2009:218-224.

[3]/blogs/hadoop/posts/2011/02/mapreduce-nextgen/.

[4]XuhuiLiu,JizhongHan.ImplementingWebGISonHadoop:AcasestudyofimprovingsmallfileI/OperformanceonHDFS[Z].CLUSTER,2009:1-8.(上接第5483页)

mands.Add(newWheelZoom());

}

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

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

5总结

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

参考文献:

[1]

[2]

[3]

[4]

[5]

[6]

[7]王桥,张宏,李旭文,等.水资源地理信息系统[M].北京:科学出版社,2004.孟令奎,史文中,张鹏林,等.网络地理信息系统原理与技术[M].北京:科学出版社,2005.张建新,赵黎民.基于3S技术的县级土地利用数据库建设[J].国土资源科技管理,2008,25(4):2.0揭秘[M].北京:人民邮电出版社,2007.Karli.C#入门经典[M].3版.北京:清华大学出版社,2006.哈特2.0经典教程[M].北京:人民邮电出版社,2007.ChristianNagel,BillEvjen,JayGlynn.C#高级编程[M].7版.李铭,译.北京:清华大学出版社,2010.

5486计算机工程应用技术本栏目责任编辑:梁书

本文来源:https://www.bwwdw.com/article/ba7j.html

Top