logo资料库

webgis实习报告.doc

第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
资料共29页,剩余部分请下载后查看
学 生 实 习 报 告 实习名称: 学 号: 学生姓名: 指导教师: 专业班级: 院(部): 2013 年 12 月 10 日
实习成绩评定表 指导老师评语: 成绩: 指导老师: 2013 年 12 月 10 日
Web GIS 实习报告 一.实验目的 1.了解WebGIS的基本功能以及各种模式构成; 2.使用VS创建并生成.NET Web应用程序; 3.掌握基于ArcServe建立地图发布系统的技能。 4.基于.NET 平台进行 WebGIS 开发。 二.实验要求 1.熟悉WebGIS模式; 2.熟悉用ArcGis Server Manager或者ArcCatalog发布Map Service并预览。 3.熟悉ArcSever的控件及功能; 4.建立客户端的地图发布网页; 5.在IIS中发布并预览。 三.实验软件 1.安装 iis 服务; 2.安装 VS; 3.安装 IE 浏览器; 4.安装 Arcgis desktop 和 Arcgis Sever; 四.实验内容 1.实验一. Web Mapping Application; 2.实验二.callback; 3.实验三. AddGraphics; 4,实验四. QueryNewWindow
五.实验步骤及实验结果 1.实验一. Web Mapping Application 1)实验步骤: (1)用 ArcGis Server Manager 或者 ArcCatalog 发布一个自定义名字的 Map Service,并且把这个 Service 启动起来; (2)新建名为 MappingApp 的 ASP.NET Web 应用程序,即普通的 Web 应用程序; ( 3 ) 在 Default.aspx 中 放 置 需 要 的 控 件 : 1 个 Map 、 1 个 Toolbar 、 1 个 MapResourceManager、3 个 FloatingPanel、1 个 OverviewMap、1 个 Toc、 1 个 Navigation; (4)OverviewMap、Toc、Navigation 分别放置在 3 个 FloatingPanel。 (5)设置 MapResourceManager1,点击 MapResourceItem 填出对话框,点击添 加按钮新增一个 MapResourceItem0 然后点击 Definition 属性弹出对话框, 设置如下,Type:ArcGIS Server Local;Data Source:myssis(我的机器名); Resource:(default)@world(点击按钮选择上面发布好的叫 world 的 Map Service),完成设置。 ( 6 ) 设 置 Map1 控 件 的 MapResourceManager , 在 属 性 栏 下 拉 选 中 MapResourceManager1。 ( 7 ) 设 置 OverviewMap1 的 Map 属 性 为 Map1 , MapResourceManager 属 性 为 MapResourceManager1,OverviewMapResource 属性为 MapResourceItem0。 (8)设置 Toc1 的 BuddyControl 属性为 Map1。 (9)设置 Navigation1 的的 Map 属性为 Map1,可以通过设置 DisplayCharacter 属性改变显示的样子。 (10)MapResourceManager 控件需要添加 ESRI.ArcGIS.ADF.Web.DataSources 引 用 , 在 vs 右 边 的 资 源 管 理 器 右 键 点 击 " 引 用 " 然 后 添 加 引 用 找 到 ESRI.ArcGIS.ADF.Web.DataSources 确定即可。 (11) 设 置 Toolbar1 , BuddyControlType 属 性 为 Map,ToolbarStyle 属 性 为 ImageOnly, BuddyControl 属性为 Map1,ToolbarItems 属性:在弹出对
话 框 中 把 Map Navigation 下 的 MapZoomIn 、 MapZoomOut 、 MapPan 、 MapFullExtent 都添加,不需要做其他设置。 (12)调试运行,本实验不需要添加代码即可完成了基本的地图功能。 2)实验结果:
2.实验二. Callback 1)实验步骤: (1)用 ArcGis Server Manager 或者 ArcCatalog 发布一个自定义名字的 Map Service,并且把这个 Service 启动起来; (2)新建名为 callback 的 ASP.NET Web 应用程序,即普通的 Web 应用程序; (3)Default.aspx 页面中加入 MapResourceManager 控件 ID 为 Map Resource Manager1,并且设置 MapResourceItem 的属性;Map 控件 ID 为 Map1, MapResourceManager 属性为 MapResourceManager1。 (4)在地图控件的 4 个边分别添加 LabelW、LabelN、LabelE、LabelS DIV 控件; (5)做当地图视图范围发生变化时更新 4 个边的 LabelW、LabelN、LabelE、LabelS DIV 控件坐标显示,显示的是地图每个边的坐标,给 Map1 控件添加 protected void Map1_ExtentChanged(object sender, ExtentEventArgs args)事件, 然后编写相应的代码: protected void Map1_ExtentChanged(object sender, ESRI.ArcGIS.ADF.Web. UI.WebControls.ExtentEventArgs args) 2 4 ESRI.ArcGIS.ADF.Web.Geometry.Envelope env = args.NewExtent; {//获取地图控件的框 SortedList slist = new SortedList(); //using System.Collections 6 7 9 slist.Add("n", env.YMax.ToString("N"));//最北的坐标 slist.Add("e", env.XMax.ToString("N"));//最东的坐标 slist.Add("s", env.YMin.ToString("N")); //最南的坐标 slist.Add("w", env.XMin.ToString("N"));//最西的坐标 IEnumerator ide = slist.GetEnumerator(); 15 //控件要增加 using System.Collections; foreach (KeyValuePair key in slist) { object[] o = new object[1]; o[0] = key.Value.ToString(); //CallbackResult 参数说明:控件类型如 div,控件 id,内容类型,内容 //CallbackResult 无刷新的更新页面内容 17 18 20 21 22 23 ToString(), "innercontent", o);//using ESRI.ArcGIS.ADF.Web.UI.WebControls; 24 (6) 在页面上添加 Toolbar 控件 ID 为 Toolbar1,BuddyControls 属性为 Map1, CallbackResult crn = new CallbackResult("div", "Label" + key.Key. Map1.CallbackResults.Add(crn);}}
同时添加 ZoomIn、ZoomOut、Pan、FullExt 四个 Map Navigation 按钮,然 后添加一个 Tool 按钮 Name 属性为 CenterAt,ClientAction 属性为 Point, ServerActionAssembly 属性为 Callback,ServerActionClass 属性为 Callback.CustomTool; { public void ServerAction(ToolEventArgs args) {public class CustomTool : IMapServerToolAction (7)新建 CustomTool.cs 类,实现 IMapServerToolAction 接口,具体代码如下: 1 namespace Callback 2 4 6 8 9 10 (8)重新定位地图中心的功能完成了,而已运行试验一下效果。 PointEventArgs pargs = (PointEventArgs)args; if (map != null && pargs != null) { map.CenterAt(pargs.ScreenPoint); //重新定位地图中心 }}} } {Map map = (Map)args.Control; (9)在 Default.aspx 页面上添加一个 Menu 控件 ID 为 Menu1,同时添加 2 个子 项 Asia 和 Africa, (10)实现上面菜单的 javascript 函数 ZoomToLocationClient,在页面的结束 处添加代码入下:
6 9 11
(11)Default.aspx 切换到代码视图开始编写服务端的代码,实现无刷新必须 实现 System.Web.UI.ICallbackEventHandler 接口,实现 ICallback Event Hand ler 接口就必须实现 GetCallbackResult()和 RaiseCallbackEvent(string eve ntArgument)这 2 个方法具体的代码和 说明入下: { public partial class _Default : System.Web.UI.Page,System.Web. { public string sCallBackFunctionInvocation;//客户端脚本段 1 namespace Callback 2 UI.ICallbackEventHandler 4 6 8 9 11 //返回给客户端的内容 private string mapstring; protected void Page_Load(object sender, EventArgs e) { //GetCallbackEventReference 生成客户端脚本 sCallBackFunctionInvocation = Page.ClientScript.GetCallbackEventR
eference(this, "message", "processCallbackResult", "context", "postBa ckError", true); } 15 16 GIS.ADF.Web.UI.WebControls.ExtentEventArgs args) 17 19 ESRI.ArcGIS.ADF.Web.Geometry.Envelope env = args.NewExtent; SortedList slist = new SortedList(); protected void Map1_ExtentChanged(object sender, ESRI.Arc {//获取地图控件的框 slist.Add("n", env.YMax.ToString("N"));//最北的坐标 slist.Add("e", env.XMax.ToString("N"));//最东的坐标 slist.Add("s", env.YMin.ToString("N")); //最南的坐标 slist.Add("w", env.XMin.ToString("N"));//最西的坐标 IEnumerator ide = slist.GetEnumerator(); foreach (KeyValuePair key in slist) o[0] = key.Value.ToString(); {object[] o = new object[1]; //CallbackResult 无刷新的更新页面内容 CallbackResult crn = new CallbackResult("div", "L 33 35 //CallbackResult 参数说明:控件类型如 div,控件 id,内容类型如 content, innerco ntent, javascript,image ,内容 37 38 abel" + key.Key.ToString(), "innercontent", o); 39 42 45 46 47 50 //接收客户端的请求,根据请求字符串 eventArgument 不同做不同的处理 52 public void RaiseCallbackEvent(string eventArgs) 53 57 (12)把服务端生成的脚本段 sCallBackFunctionInvocation 写入到页面中, //把处理结果返回给客户端 public string GetCallbackResult() Map1.CallbackResults.Add(crn);}} .. } { // #endregion}} #region ICallbackEventHandler 成员 {return mapstring;//}??? } Default.aspx 切换到 html 视图在 ZoomToLocationClient(val)方法中添 加如下代码: function ZoomToLocationClient(val) { var message = 'zoomtolocation'; 3 5 6 7 8 allbackResult,context,postBackError,true) 9 (13)在 RaiseCallbackEvent(string eventArgs)方法中处理 ZoomTo Location message += ',' + val; var context = 'Map1'; //把服务端的生成的脚本段 sCallBackFunctionInvocation 输出 //输出内容:WebForm_DoCallback('__Page',message,processC <%=sCallBackFunctionInvocation%>}
分享到:
收藏