• Arcgis Server系列 ADF的开发与实例


    在Arcgis Server学习过程中,大家也许最先使用的就是用自带的ADF进行初步的Server开发.总的来说,ADF算是一个比较强大的Web服务器端控件.为我们封装了大量的代码和客户端操作.从而降低了我们的开发难度.不过,由于我用的是Arcgis Server9.0.其自带的ADF还存在这一些问题,造成了所开发的项目的一些问题,这些问题往往会造成整个项目的失败和遗憾.在这个文章的最后,我会一一指出我所碰到的ADF的缺陷.
          首先,我们需要安装一个ADF安装包.安装过程很简单.这里就不在说明了.
          安装完以后,它会自动在Visual Studio里面建立一些模板,有关于地图浏览的,专题图制作的,缓冲查询的,还有Web Service的等等.这里,我只随便举一个作为例子.因为我个人还是推荐不使用ADF的开发方式.
          ADF的开发步骤:
          1.通过模板新建工程.(或者自己新建工程,把MapControl对象拖入页面).
          2.在MapContorl对象和一些相关对象里面设置一些基本属性,如Host,ServerObjcet.等.
          3.在Impersonation对象里面设置好用户,从而使得能有权限访问该页面.(这里还有一种方法,在WebConfig里面设置<identity impersonate="true" userName="xxx" password="xxx"  />也可以解决权限问题.)
          4.开发相应的功能.

          这里用缓冲查询模板作为例子吧,因为缓冲查询是每个GIS项目中肯定会用,而且有些相对有点需要注意的地方.
          该模板使用后如下(只需要配置Host,ServerObject,Impersonate就形成了下面的界面):
               这个模板实现是的选择一个图层中的一个要素,然后根据这个要素来缓冲查询任意一个图层的要素.通过这个实例,我向大家慢慢讲解一些AO中的一些基础类和接口.并针对它们的大致用途作一个讲解.具体使用则可以参照模板,以后的文章中会陆续介绍.
    ServerConnection:用于连接Arcgis Server服务器.
    IMapServer:开发Arcgis Server项目中使用频率最高的接口之一.用于封装服务器对象.一些查询,计算距离和比例尺等功能都在该接口下.
    IServerContext:服务器上下文对象.需要用它来创建AO对象.并用WebObject管理其生命周期.
    IMapDescription:地图的状态.由于Arcgis Server是无状态的.当我们需要保存状态的就是就在Session中保存它就可以了.此外,它还代表Arcmap中所配置的mxd的信息.
    IImageDisplay:描述地图的大小和分辨率.
    IMapExtent:描述地图的范围.放大缩小地图有3种方法,其中之一就是使用该接口.
    IMapServerInfo:地图服务的一些基本信息.保存范围,单位等.
    IEnvelope:一个矩形区域.每个空间要素都存在一个它周边的矩形区域.
    IDSList:保存整形数据的数据结构.这里用来保存FID.注意,如果你是访问的Shape文件,则是FID为GIS默认空间主键.从0开始自动增长.如果是访问的Oracle空间库,则变为OBJECTID.从1开始自动增长.
    IFIDSet::保存FID列表.
    IFeatureExtent:一个空间要素的范围.多边形和线段的范围都很好判断,点则很麻烦.一般在定位到一个空间要素的时候,如果是多边形或者线段,直接把当前地图范围设置为该要素的范围就行了.如果是点,则需要你手工输入范围.
    IFields:字段信息.
    IFeature:一个空间要素的信息.
    ILayerDescription:图层的信息.该图层信息是指在Arcmap中所配置的图层的信息.而不是指物理图层.切记!
    IGeometry:代表空间对象.
    ISpatialFilter:空间查询接口.比如查询某个范围内的实体就用这个接口.
    IQueryFilter:查询接口.一般对应属性查询.
    IRgbColor:在AO中的管理颜色的接口.可以通过Converter类来和.NET的Color类进行转换.
    IRecordSet:在AO中的数据集.也可以通过Converter类和.NET中的Dataset进行转换.
         
          经过上面的描述,相信大家看代码会清晰了许多.如果有什么不懂的可以直接问我.这里我就不把代码列出来解释了..因为使用ADF开发是很简单的.稍微麻烦的就是如果使用AO的对象进行功能组合.

          为什么最开始我不推荐使用ADF进行开发,因为,一.ADF是全屏刷新,不支持当前流行的ajax.在界面上和性能上都很受影响.二,由于ADF封装的原因,在把MapControl放在一些界面元素上会出现一些问题.三,ADF的可控性不大.都是封装好了的代码.一些效果上没有自己实现那么方便.
         
          下面的文章中,我会向大家展示如何舍弃ADF,而直接使用AO的对象来开发Arcgis Server应用.  

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhangjie_xiaoke/archive/2008/03/13/2176553.aspx

  • 相关阅读:
    matplot 代码实例2
    sklearn 线性模型使用入门
    python 之 决策树分类算法
    Leetcode 之Simplify Path @ python
    协同过滤CF算法之入门
    linux 下 rpc python 实例之使用XML-RPC进行远程文件共享
    Linux rpc 编程最简单实例
    Opencv 入门学习之图片人脸识别
    Django1.7开发博客
    Opencv 入门学习1
  • 原文地址:https://www.cnblogs.com/googlegis/p/2979041.html
Copyright © 2020-2023  润新知