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应用.

posted on 2006-10-18 12:02 刘寓 阅读(4979) 评论(16)  编辑 收藏 所属分类: Arcgis

评论

#1楼  2006-10-19 12:00 DELL网站 [未注册用户]

好文,学习中....   回复  引用    

#2楼  2006-10-31 10:06 cxh [未注册用户]

想请教你一个问题,在配置ArcGis Server的过程中,在设置ArcCatalog中的ArcGis Server的Server时,总是出现The connection is not made。我郁闷的快不行了   回复  引用    

#3楼  2006-11-06 16:33 sunny[匿名] [未注册用户]

如果是在本机上安装,试着添加IPX协议看看   回复  引用    

#4楼  2006-11-06 16:35 sunny[匿名] [未注册用户]

牛人!我也碰到全屏刷新的问题,这叫人很不爽!   回复  引用    

#5楼  2007-04-19 10:11 GIS云中飞鹏      

关注 如何舍弃ADF,而直接使用AO的对象来开发Arcgis Server应用.   回复  引用  查看    

#6楼  2007-05-24 17:11 zx [未注册用户]

老大,给我个arcgis server 9.2 .net adf的下载地址嘛
我找了好久都没找到起   回复  引用    

#7楼  2007-06-04 11:15 海之恋 [未注册用户]

我安装完了visual studio.net2005和arcgis server9.2之后,为什么在.net的新建工程中没有显示关于Arcgis server的模板?
是我的Arcgis server没有安装好么?我的Arcgis server在服务配置管理器中可以创建一个应用程序。   回复  引用    

#8楼  2007-06-04 11:16 海之恋 [未注册用户]

你的qq号是多少?   回复  引用    

#9楼  2007-06-14 19:37 百合 [未注册用户]

我在创WEB APPLICATION时,ArcGis Server internet连接不上,不知是什么原因   回复  引用    

#10楼  2007-06-18 14:32 paladin [未注册用户]

大哥,给我个arcgis server 9.2 .net adf的下载地址嘛
qq:150850985   回复  引用    

#11楼  2007-07-16 14:02 ADF寻觅者 [未注册用户]

ADF!!!太难找了能发给我一个吗。。。   回复  引用    

#12楼  2007-07-20 19:42 ADF [未注册用户]

能不能给我发个ADF啊,我现在急需,谢谢了。我的qq281154343   回复  引用    

#13楼  2007-07-20 19:43 ADF [未注册用户]

能不能给我发个adf啊。现在急需这个,谢谢了!我的qq是281154343   回复  引用    

#14楼  2007-08-06 17:53 好 [未注册用户]

怎么不把代码贴出来呢 贴出来啊   回复  引用    

#15楼  2007-09-04 09:29 haifeng [未注册用户]

给我个arcgis server 9.2 .net adf的下载地址嘛
qq:9222180 谢谢   回复  引用    

#16楼  2008-06-29 11:54 绿光 [未注册用户]

你好!我想向你请教个问题,我的visual studio.net 2005和arcgis server全部安装好之后,发现在.net中开发时,里面没有太多的模版,只有web application 一个模版,我想是不是还需要再重新装一个arcgis server ADF 单独的软件包呢?如果是这样的话,能否告诉我一个下载arcgis server ADF 下载地址呢?谢谢您。工作顺利,天天开心!:)   回复  引用    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值