开篇:润墨网以专业的文秘视角,为您筛选了一篇开源版MapGuide的源码分析及功能增强研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘要 随网络技术的日新月异,基于Web的应用已经成为了必然的趋势,网络已经成为GIS的下一代平台。而开源运动的兴起,越来越多的软件加入到开源软件阵营,Autodesk的mapguide就是其中的一个杰出代表。本文作者对MapGuide Viewer API函数的源码进行了深入分析与优化,增加了鹰眼等高级功能,并在此基础介绍了开发系统的基本流程。
关键字 MapGuide Viewer API;开源;WebGIS
0、引言
目前WebGIS的应用持续升温,其主要原因是WebGIS直观表现效果好、通俗易懂、易于操作,许多公司、企业、事业单位等的网站甚至个人网站都欲推出自己的网络地图服务。商业型WebGIs平台技术支持好,建设风险相对比较低,但价格昂贵,对于普通中小型公司而言,光采购WebGIS平台软件就是一笔不小的开支,开源相对于商业型的WebGIS平台软件来说优势在于免费使用、开放源代码,用户可以在一定授权条件下对源代码进行修改,使用者可以节省不少用于购买提供商提供的平台软件的投资;相对于Google Maps等地图服务API来说,开源WebGIS软件可以通过中间件(FDO,GDAL)轻松访问空间数据库和文件数据库来订做查询分析功能。
1、MapGuide开源版概述
MapGuide最初由Argus Technologies公司于1995年开发。MapGuide 6.5和以前版本在部署、快速应用开发、数据连通、可伸缩性和总体性能上表现优越,但也存在如不能跨平台、应用程序依赖于客户端插件等缺点 为了解决上述缺点,并适应新技术潮流,2004年Autodesk公司专门小组以标准C语言对其进行重新编译并在LGPL的授权下开放源代码,2006年3月份把源代码赠送给开源地理空间基金会并最终命名为MapGuide Open Source,同年Autodesk公司在MapGuide Open Source核心代码基础上推出商业版MapGuide,即新版的MapGuide和MapGuide6.5及以前版本是采用完全不同技术,是两个完全不同的产品 。从MapGuide发展演变情况来看,开源版和商业版采用相同软件架构,速度效率功能也相似,开源版只是支持的数据格式略微少些。Autodesk公司地理空间行业的开源产品和技术同时包括FDO,SDF,DWF,利用这些产品和技术能够与其他的开源技术一起构建一个完全开源的WebGIS应用系统,同时也能与商业软件一起工作,用于实现功能丰富、拥有更多服务和质量可靠的商业应用。
2、MapGuide Viewer API函数的源码分析与增强
MapGuide Viewer API是用户和Viewer交户的一个JavaScript函数库,Viewer API就是指DWF Viewer和AJAX Viewer的API。目前,这些API分布在了Main Frame、tbFrame,mapFrame、formFrame、sbFrame中。Mapguide 系统是由后台aspx文件调用一系列的模板Templ文件生成系统框架平台。Templ文件存放在viewerfiles文件夹中为客户端HTML编码,其中还有基础js文件如:browserdetect.js等,最主要的几个Templ为ajaxmappane.templ、mainframe.templ,这两个文件里面有整个系统的主要函数、前台界面、事件等;aspx文件存放在mapviewernet文件夹中为服务器编码,基中最主要的几个aspx为ajaxviewer.aspx、mainframe.aspx、mapframe.aspx通过这几个基础文件调用相应的前台Templ文件从而生成框架平台。
2.1、主框架方法
(1)、ExecuteCommand (index)
执行一个当前网络布局中定义的命令。Index 一个从零开始的命令列表索引。如果index超出范围,则没有命令被执行。下面代码是执行一个移动命令。
var pan = parent.ViewerFrame.ExecuteCommand(0);
2.2、窗体框架方法
(1)、Submit(url , params , target)函数用法
提交一个post 请求到服务器。url向服务器发送请求的url 地址。Params是 一个数组,其中包含请求的参数。每个参数指定为一个字符串,其中每对占用两个连续的数组元素的名称值对。 Target是目标框架,分别为:tbFrame 工具栏框架;mapFrame地图区域包括图层与属性框架框架;formFrame窗体框架;scriptFrame 脚本框架;taskbar任务工具栏;TaskFrame任务框架,包含任务面板框架; sbFrame 状态栏,目标也可以是一个现有的弹出框窗口的名称。下面的示例调用了两个参数,并在任务框架中显示脚本的结果。
xmlSel = mapFrame.GetSelectionXML();
params =new Array(“UNITS”,“SquareFeet”,“SEL”,xmlSel);
formFrame.Submit (“../ MiscScripts / Sk.php“,params,“taskPaneFrame”);
2.3地图框架方法
(1)、DigitizePolygon (handler)函数用法
数字化一个面参数,Handler 是一个函数,用此函数来获取面的坐标。
2.4 鹰眼实现
实现鹰眼功能,首先要扩充一个实地坐标转换屏幕坐标的js函数MapUnitstoScreen,然后在OnMouseUp事件中编写由鹰眼框控制地图窗体的代码,在RequestMap函数中编写由地图窗体控制鹰眼框移动的代码,最后新建一个后台aspx文件eagleview.aspx,在此文件中编写后台代码加载鹰眼布局图。由鹰眼框控制地图窗体的前台核心代码如下:
3、系统实现流程
(1)系统界面图(见图3):服务器段代码如下所示,首先引入命名空间
其中:127.0.0.1:80为服务器IP,SESSION=参数为当前会话Id,WEBLAYOUT= 参数为WEBLAYOUT资源路径。
(2)业务逻辑功能定制,分三步:① 初始化站点;② 获取客户端请求,调用相关API访问MapGuide Server完成分析操作;③ 显示返回结果,如在任务面板里面显示操作结果。
四、结束语
通过对前台源码的优化与功能的增强使MapGuide开源版更加强壮、完善具有很强的可塑性,从而生成属于自己版权的WebGis软件。MapGuide开源版,开发效率高的特点是其他开源WebGIS平台所不具备的优势,跨平台支持多种语言开发,在开源领域难逢敌手,另外由于MapGuide有开源和商业两种版本,从开源到商业版(获得更多商业支持)转移方便。缺点是连接人数多时内存消耗大,但相信随着版本升级执行效率会有好的解决方法。
注:文章中涉及的公式和图表请用PDF格式打开