如何使用ArcIMS .NET Link

10 篇文章 0 订阅
ArcIMS是采用标准网络协议开发的分布式互操作多层的地图软件产品。Web服务器通过连接器(connector)访问ArcIMS的应用服务器(Application Server)和空间服务器(Spatial Server),动态产生地图。ArcIMS提供多种连接器:servlet、Java、ColdFusion、 ActiveX以及随同ArcIMS 9发布的——.NET Link。

本文将讨论如何用.NET Link定制ArcIMS的客户端。ArcIMS 9要求有.NET Framework 1.1和.NET Framework 1.1 SDK的情况下才能安装.NET Link和开发帮助。

为什么要使用.NET Link

有了.NET Link,与ArcIMS的交互可使用.NET语言,如VB.NET或C#。Active Server Pages .NET (ASP.NET)是使用.NET构建网页的技术。与JavaScript等在客户端执行代码不同,.NET的代码在服务器端执行,这带给开发者诸多好处。

第一,实际上,通过Internet只传送服务器端代码执行的结果。这样支持瘦客户端,减少客户端处理和网络下载的时间。

第二,服务器端代码有权限可以访问服务器的文件系统和数据库。如果开发者需要创建一个根据用户在地图上的点击,向数据库添加新信息的网站,就必须要在服务器端进行处理。与其它的WEB开发环境相比,ASP.NET的好处是由Visual Studio .NET等开发环境提供的事件驱动机制。在Visual Studio .NET中写代码很简单,例如只用把按钮拖动到表单(form)上,再写点击该按钮后在服务器端执行的代码。而表单如何传递到服务器,如何运行代码等细节都由事件驱动机制来处理。

使用.NET Link

虽然.NET Link有几个对象可用于接发ArcXML,或产生几个预定义的ArcXML请求,但最主要的对象是ServerConnection。ServerConnection可定义到应用服务器(Application Server)和ArcIMS服务(Service)的连接,用于接发请求。Listing 1中用了ServerConnection。


图1 采用ServerConnection的send方法发送ArcXML请求

要发送一个ArcXML请求,使用ServerConnection的send方法:conn.Send(sAXL) sAXL变量是包含完整ArcXML请求的字符串。AXLRequests对象可创建几个预定义的ArcXML请求,如针对全图范围的GET_SERVICE_INFO,GETCLIENTSERVICES和GET_IMAGE。

创建和解析ArcXML

要使用.NET Link,开发者必须要创建ArcXML请求和处理ArcXML响应。文章ArcXML Programmer’s Reference Guide提供解析ArcXML的语法。.NET中很多对象可帮助我们实现XML的产生和解析。字符串可合并或用StringBuilder对象来创建。XMLDocument对象可表示整个响应,响应中的每个元素(element)表示为一个节点(node)。节点由元素、属性和所有的子元素组成。Listing 2中,ServerConnection用于发送ArcXML请求,得到的响应放在XMLDocument对象中。

XMLNodeList可用于得到特殊元素的集合,如Listing 3。当创建了XMLNodeList,可通过item属性(缺省的属性)来访问某个节点。可访问每个节点的所有子节点(子元素)和属性。如果发送GET_IMAGE请求,得到新图片URL的代码如Listing 4。

通过.NET Link创建一个简单地图

下面说明如何创建有地图的简单页面。这个例子的前提是ArcIMS和.NET Link安装在一起,名为sample的Image Service(图像服务)和Visual Studio .NET都在运行。sample服务使用的数据是全球(国家)的地理坐标的数据。


图2 创建展示地图的区域,从Web Forms分类中拖放图片。改变地图ID属性为theMap

1. 在Visual Studio.NET中,新建一个ASP.NET的Web application。本例子用VB.NET写成。

2. 添加ESRI ArcIMS.NET Link引用

3. 生成显示地图的区域。从工具箱的Web窗体中拖放image,设置ID为theMap

4. 在该页的代码中参照Listing 5中的代码添加一个函数,生成新地图并返回URL。

5. 将Listing 6中的代码加到Page_Load函数中,生成新图片,更新theMap的URL。测试该Web application。点击Visual Studio.NET中的启动按钮,会显示一幅全球地图。

状态维护

上个例子没有提供与用户交互的工具。当添加了工具后,Web application的状态维护就是一个问题。例如,添加缩放工具改变地图的范围,就要求代码“记住”当前的范围,在实现下一步的缩放的时候使用。有几种方法来维护地图的状态,包括hidden inputs、cookies、session变量和ViewState。

ViewState记录HTML返回客户端的状态信息,那么服务器就不用象使用session变量那样消耗资源来维护每一个Web客户端的状态。

使用BlueViewer

BlueViewer是ArcIMS安装光盘中自带的一个例子,可让我们更快入门.NET Link Web applications的开发。它构建了基本的功能:固定或动态缩放,如缩放到矩形框的范围;图例;大/小图切换,重新放置到中心;打印和显示x,y坐标。BlueViewer使用hidden inputs来存储状态信息。

更多信息

请参考在线的www.esri.com/arcims和Customizing ArcIMS—Using .NET Link上的ArcIMS 9 Architecture and Functionality白皮书。ArcIMS ESRI Software Documentation Library也收录了这篇文章。  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值