您的位置:首页 > 其它

Arcgis Server系列 ADF的开发与实例

2013-01-24 18:20 197 查看
转自:http://www.cnblogs.com/tony111082/archive/2006/10/18/532335.html

             http://www.cnblogs.com/GIS_zhou/articles/1576933.html

在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应用.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: