ArcGis Server开发Web GIS新手体验

上传人:油条 文档编号:28513080 上传时间:2018-01-17 格式:DOC 页数:16 大小:86KB
返回 下载 相关 举报
ArcGis Server开发Web GIS新手体验_第1页
第1页 / 共16页
ArcGis Server开发Web GIS新手体验_第2页
第2页 / 共16页
ArcGis Server开发Web GIS新手体验_第3页
第3页 / 共16页
ArcGis Server开发Web GIS新手体验_第4页
第4页 / 共16页
ArcGis Server开发Web GIS新手体验_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《ArcGis Server开发Web GIS新手体验》由会员分享,可在线阅读,更多相关《ArcGis Server开发Web GIS新手体验(16页珍藏版)》请在金锄头文库上搜索。

1、以下针对于 windows 操作系统.net 开发环境)ArcGIS Server 是 ESRI 公司最新推出的服务器端品,主要可以实现两大功能:、强大的 Web GIS 系统的开发;、分布式 GIS 系统的开发;ArcGIS Server 其内核与 ArcGIS Desktop 和 ArcGIS Engine 一样,都是 ArcObjects 库。其所谓的 Web GIS,其实无非就是用 Web 技术来封装 ArcObjects 而已;而分布式的开发则是通过 DCOM 来实现的。ArcGIS Server 的安装非常简单,先安装 ArcGIS Server,然后安装 DotNet ADF,最

2、后用ArcCatelog 添加一个 Server,然后再添加一个 ServerObject,这样就可以进行开发了添加一个 ServerObject 需要一个 mxd 或 pmf 文件,用来保存和管理需要发布的数据。好了,现在可以开始开发了。打开 Visual Studio 2003,打开新建项目对话框,发现 ESRI 公司已经为我们准备好了一些 ArcGIS Server Projects 的模板,包括 Map Viewer Web Application,Page Layout Web Applicaiton 等等,我们就建一个 Map Viewer Web Application 吧,选中

3、它,输入项目名称,然后点击“确定” 按钮,我们发现一个已经包含了基本数据浏览和查询功能的 Web GIS 程序已经建好了。打开 Default.aspx 文件,发现网页包含一个 Map 组件,一个 Toolbar 组件,一个 TOC组件,一个 OverviewMap 组件等等。看来与 C/S 开发模式下很像嘛,爽啊。其中 Map 组件和 OverviewMap 组件有两个必填属性:Host 和 ServerObject,就分别对应着我们在ArcCatelog 中添加的的 Server 和 ServerObject,输入它。然后设置 TOC 组件和 Toolbar 组件的 Buddy 属性,大功

4、告成!运行!咦,发生错误,定睛一看,原来是访问拒绝,这是怎么回事呢?记得以前看到一篇文章,说在 A 中使用 COM 组件,经常由于权限原因,产生访问拒绝,而ArcGIS Server 本身就是对 ArcObjects 这些 COM 组件的再封装,看来就是这么回事了。找出这篇文章来,原来要在 Web.config 中加入一行就可以了:再运行,一个漂亮的 WebGIS 展现在眼前。可以浏览,查询,图层管理,鹰眼导航,还有指北针.(后来发现页面上还一个组件叫 impersonation 没用上,看了一下它的属性,只有一个identity,点击它,你会发现 .呵呵,原来这个组件就是用来干这个事的,晕,

5、又浪费了我两个小时的宝贵时间.)我们知道,.net adf 提供的 map 组件、toc 组件等都是标准的 组件。这些组件在运行时,会生成相应的 html 代码,将自己展现出来。一般还会通过 ViewState 来保存状态,并生成_doPostBack(javascript)函数,在必要的时候,通过 javascript 来调用该函数,将客户端数据返回来服务器端,从而激发服务器的响应。总之,我们通过分析生成的 html 页面,应该可以大致窥见 组件是怎么运行的。好,我们现在按 F5 运行首页,然后在浏览器中查看网页的源代码,赶快看下一吧: 1、首先会看到 ID,MapIdClick,sta

6、rt 等 javascript 函数,这些函数是模板为我们生成的,在 default.aspx 文件中定义的。 ID 函数中有两行: var iddiv = document.getElementById(MapDiv_Map1); if (iddiv!=null) iddiv.onmousedown = MapIdClick; 可以看到,这几个函数的作用是对地图的 Identify(点击查询)作出处理。 为什么要放在这里呢,为什么单单只有点击查询的 javascript 要在这里定义呢,其它如放大、缩小、平移为什么不在这里处理?这是因为 Toolbar 组件对放大、缩小、平移等提供了默认的处

7、理方式,而 identify 没有,这样可以更方便进行扩展。在后面的代码中有一行,可以看到,这个调用是模板为我们生成的(并且这个调用是可以修改的) 。待会我们在进一步分析中可以看到这一点。 2、再向下,是几个隐藏域,其中包含_VIEWSTATE 隐藏域,还有_doPostBack 函数,这些是 组件生成的,作用是向服务器提交数据,从而与服务器进行交互。 3、往下我们看到了一些引入 js 脚本文件的代码: 可以看到,共引入了四个 js 脚本文件,这些文件的地址也比较奇怪,不是与当前网站在同一个虚拟目录下,而是在http:/localhost/aspnet_client/esri_arcgis_

8、server_webcontrols/9_1/JavaScript 目录下。在c:/inetpub/webroot/aspnet_client/esri_arcgis_server_webcontrols/9_1/JavaScript/文件夹下可以找到这些文件。原来,为了重用的方便,在安装 Arcgis Server 时,安装程序就已经建立了一个虚拟目录,用于提供这些共享的资源。在这个文件夹上一级目录中,还可以看到 images和 treeimages 两个子目录,以及 treeview.htc 文件。 知道了这些 javascript 文件的藏身之所,各位可以把这些 javascript 文

9、件逐个看一遍,可以发现其作用主要是与浏览器进行交互。 4、再往下,是 TOC 组件的 Html 代码,代码片断如下: 道路注记 这一段代码有一个特别之处就是 ImageUrl=ESRI.Web.Controls.MIMEImage.aspx.,这个 ESRI.Web.Controls.MIMEImage.aspx 是什么东东,是一个网页吗?在机器里找一下,发现根本就不存在这个网页,那它又是何方神圣,竟然可以作为一个图片的地址?我们先往下看看。 5、 是鹰眼导航图的代码。怎么只有一个空的 Div 层和一个空的表格呢?唉,比较简单,我懒得分析了,同志们自己去找吧 6、再往下是 Toolbar 组件

10、的代码,没什么特别的: 7、再下面是生成地图组件的代码: MapsmapCounter = new MapCreation(Map1,0,mapCounter,0,0,502,378,MapDiv_Map1,Black,2); mapURLmapCounter = ESRI.Web.Controls.MIMEImage.aspx?ImgID=Default.aspx-Map1 MakeMapDiv(mapCounter, Map1,ESRI.Web.Controls.MIMEImage.aspx?ImgID=Default.aspx-Map1 mapCounter+; MapDragRecta

11、ngle(Map1,ZoomIn, true); 又看到了 MIMEImage 这个东东!它究竟是什么东东呢? 如果对 不是很熟悉的话,要破解这个秘密可能确实比较困难。 在 中,所有的请求,都是通过 httpHandler 来进行处理的。那 httphandler 又是什么东东呢?其实只要实现在 IHttpHandler 接口的类,都可以作为一个 HttpHandler。在web.config 或 machine.config 文件中,可以定义哪些请求可以由哪个 httphandler 来处理。查看一下 web.config 文件,没有这些声明。那就看一下 mapchine.config

12、文件吧,这个文件在WINDOWSMicrosoft.NETFrameworkv1.1.4322 目录下,用记事本打开它,查找ESRI.Web.Controls.MIMEImage.aspx,好家伙,果然在这里啊! 原来 ESRI.Web.Controls.MIMEImage.aspx 请求是能过ESRI.ArcGIS.Server.WebControls.ImageHandler 来处理的。在 Visual Studio 中,使用对像浏览器查看一下 esri.arcgis.server.webcontrols.dll 文件,可以看到 ImageHandler 类,果然实现了 IHttpHand

13、ler 接口。呵呵,其实很简单嘛,我们也完全可以自己写一个类,来执行自定义的请求。在(二)中我们分析了 HTML 代码,也就基本弄清了.net adf 怎样封装客户端的交互,以及客户端怎样与服务器端进行交互。下面我们再看一看服务器端的开发方式是怎样的,实际是就是进入了比较简单的实战。用其它工作开发 Web GIS 的朋友如果能够了解一下 AGS的实现,一定会有很的大启发,你会在其中学到一些封装客户端、服务器端以及两者交互的技巧,怎样做到既封装一些常用的功能,又不妨碍我们进行功能的扩充。 好了,废话少说,开始我们新的体验吧。 在(一)中我们已经说了,.net adf 提供了一系列的模板,这些模板

14、又根据不同的需要,封装了一些常用的功能。我们的开发一般是从这些模板开始的。如果我们对这些模板生成的程序已经很熟了,当然也可以不需要这些模板,但如果你是新手,请从模板开始,这样可以避免走很多弯路。 首先,我们启动 Visual Studio 2003,新建一个项目,在新建对话框中,在“项目类型”中可以看到 ArcGIS Server Projects 这一项,选择语言 Visual C#,在右边的模板列表中可以看到有七种模板可供选择,每种模板可用于新建不同用途的应用,如下图所示: 我们先新建一个 Map Viewer Web Application,也就是地图浏览程序。我们待会通过分析可以看到这

15、个地图浏览程序是怎样实现的,以及怎样扩充自己的功能。 新建了一个 Map Viewer Web Application 之后,界面如下图所示。可以看到,.net 为我们新建了一个 web 工程。工程包括三个页面,default.aspx,errorpage.aspx 和 identify.aspx。其中,default.aspx 是主界面,errorpage.aspx 用于出错信息的显示,identify 用于点击查询操作的结果的显示。下面我们主要分析default.aspx 这个网页。 这个网页的的上部分是一个 banner,不用管。下部分由七个 组件构成。这七个组件分别是: 、Map 组

16、件:地图组件。有两个关键属性: Host 和 ServerObject,不用我说,也知道这是什么意思。 、Toc 组件:图层控件组件(table of contents)。有一个关键属性 BuddyControl,即与哪个 Map 组件相关联。 、Toolbar 组件:工具条组件。有一个关键属性 BuddyControls,表示可以绑定多个 Map组件或 PageLayout 组件。 、OverviewMap 组件:导航图组件。有三个关键属性 Host,ServerObject 和BuddyControl。 、Impersonation 组件:身份验证组件。有一个关键属性 identity,用于设计怎么登录到服务器,拥有操作的权限。 、NorthArrow 组件:指北针 、ScaleBar 组件:比例尺组件,有一个关键属性

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号