ArcServer四种开发方式

上传人:ni****g 文档编号:561483130 上传时间:2022-08-04 格式:DOCX 页数:22 大小:285.73KB
返回 下载 相关 举报
ArcServer四种开发方式_第1页
第1页 / 共22页
ArcServer四种开发方式_第2页
第2页 / 共22页
ArcServer四种开发方式_第3页
第3页 / 共22页
ArcServer四种开发方式_第4页
第4页 / 共22页
ArcServer四种开发方式_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《ArcServer四种开发方式》由会员分享,可在线阅读,更多相关《ArcServer四种开发方式(22页珍藏版)》请在金锄头文库上搜索。

1、3.1ArcServer 的四种开发方式先什么都不说,看一下 ESRI 官方给出的 ArcServer 的开发方式图。Esri 一共提供了四种开发模式:1. Web ADF Web Control 页面 ADF 框架和页面控件。2. Web ADF Common Data Source API 页面 ADF 框架和普通的数据源 API3. Web ADF Common Data Source APIData Source Specific APIs 页面 ADF 框架普通数据源 API 调用数据源具体 API4. Data Source Specific APIs 直接使用数据源具体 API这

2、四种开发方式难度是有易至难的,但其可定制性也越强,下面就具体分析这四 种开发方式。1. Web ADF Web Control 页面 ADF 框架和页面控件这种开发方式主要是使用 ESRI 提供的例子模板进行开发,包括使用相应的控 件,和编写简单的代码来完成整个逻辑。当我们打开 vs 时(当然是已经安装好 ArcServer 的开发环境),点击,文件,新建,网站,弹出新建对话框,上面会 有一个 Web Mapping Application1 选择项,那个就是 ESRI 提供的开发模板。见下图:点击确定,ESRI给提供的模板就加载到vs编辑器中去了。下面截图就是加进去的东西,图上包括 ArcS

3、erver 可用的部分控件,声称的例子 的界面以及网站文件:工具箱甲XT JL豕+ TebFartsDefault, aspi起贻贡 对象浏览器0 HTIL-ArcGIS Teb Controlsy MapM apRe s ijirr c eM:iiLagei-荻| GsocodeReeourcefiVinager翘f二二:-l Geoproce eeie dui- c eM:i工 L:Qg 已 fToeToolbarN:ivig:i+i otlEl Tasks0QUQ1 T|0Mmpl1ap WebCoriZoumLevelMapTipzOervi ewMapFLoa tin 匡 Fsile

4、I M:igni i erResultsaskResultslTask Results WebControl这已经是一个完整的例子了,我们只需要配置一下地图数据源 面是运行的结果。Measure就可以使用。下其实这样的例子做完不用写一行代码,所有的代码有是模板里面带的,如果我们 再做一个属性查询功能,就可是用代码 Searchtast 控件来做,只需要设置一下 相关属性即可。但这样的实际应用性不大,可以作为演示等。很多业务上的逻辑 都是不能定制的,所以对于我们开发人员来说,这个例子可以作为一个很好的技 术参考,这个例子在安装好ArcServer后例子程序中也存在。安装盘:Program Fil

5、esArcGISDeveloperKitSamplesNETServerWeb_Applications 文件夹下 最后一个压缩包就是。 Common_WebMappingAppCSharp.zip 这个例子的详细讲解和ArcServer的安装以及地图服务的发布以后会提到。这就是四种开发方式的第一种开发方式,完全傻瓜式的开发 下节是第二种开发方式 使用 Common Data Source API 进行开发。这种开发方式 多少会让程序员摆脱这种傻瓜式的开发,让程序员多少有点成就感 3.2ArcServer 的四种开发方式之 Web ADF Common Data Source API(1) 2

6、008-09-20 15:01Web ADF Common Data Source API 主要是针对数据源进行编程,就是利用各种 类型的数据源的 functionality 来进行功能的实现。在使用这种方式编程时首先 要理解几个关系:Webcontrols, ResouceManager,Resouces,Functionality 能理解好这几个对象的关系也就好办多了。1. Webcontrols:这里指的就是地图显示控件,如mapControl, TocControl等。2. ResouceManager :就是资源管理器,通过这个管理器,所有的资源,包括本地 的地图服务资源,网络的以及

7、其它的地图数据资源都可以在这个控件的管理下与 显示控件结合在一起,地图显示控件如 mapControl 和 Toccontrol 直接或是间接 和 ResouceManager 绑定到一块,就是说,在这些显示控件看来,本地的资源, 网络的资源, ims 数据资源, Graghric 资源等没有任何区别,这些区别都在 ResouceManager 中给其统一化,送给控件一样的接口。可以说 ResouceManager 是 webcontrols 和 Resouces 的桥梁,webcontrols 通过 ResouceManager 来显示 各种 Resouces。3. Resouces就是指各

8、种数据资源,其实在在地图数据未被ResouceManager管理 之前并不能称其为一个Resouces,他只是一个地图服务或是其它等,但这些各 种服务一旦被ResouceManager管理之后,其对外展现的就是一个个Resouces(资 源)。 Resouces 有可以把数据通过不同的形式表现出来,例如,当 MapControl 控件通过 ResouceManager 找到该 Resouces 时,该 Resouces 就以地图数据的形 式显示在 mapControl 控件上面,当 TocControl 控件通过 ResouceManager 找到 该Resouces时,该Resouces就以

9、图层名称列表的方式展现给TocControl控件, 并把该 Resouces 所包含的图层名称列表显示出来。也就是说每个 Resouces 都有 不同的表现形式,即具有不同的功能,或是说能力,这些能力就是我们所说的不 同的 Functionality。4. Func tionali ty,就是我们所说的一些功能和能力。 ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality 这个就是查询能力。 在 ESRI.ArcGIS.ADF.Web.DataSources 命名空间下,我们可以看到一下接口。IGeocodeFunctionality, IMa

10、pFunctionality, IMapTocFunctionality, IQueryFunctionality, IScaleBarFunctionality, ITileFunctionality 等。这些都是 一些能力接口,支持相应的接口说明该资源可以完成相应的功能,即具有相应的 能力。例如:IMapFunctionality是具有显示地图的能力;IMapTocFunctionality 具有把层名称显示成列表的能力;IQueryFunctionality具有查询的能力。等等, 再复杂的功能,例如空间拓扑分析,最短路径分析,这种开发方式就完成不了了。好了,虽然看起来上面的逻辑可能有点乱

11、,但是如果想做好的话上面的关系是必 须要理解的,这样做起来才得心应手,介绍完这四个对象的关系以后,下面就看 一下代码。看上面的一些能力,IMapFunctionality,IMapTocFunctionality这些 都不用说,在控件绑定时就会自动执行,最好还是说一下查询能力吧,IQueryFunctionality。3.2ArcServer 的四种开发方式之 Web ADF Common Data Source API (2)查询例 子2008-09-20 16:40 下面就来看一下使用第二种开发方式来实现查询功能的例子。public DataTable Query(string pQuer

12、yText)/获取当前 map1 控件中第一个资源的 functionalityESRI.ArcGIS.ADF.Web.DataSources.IGISFunctionality myGisFunctionality = Map1.GetFunctionality (0);/得到该 functionality 的 resourceESRI.ArcGIS.ADF.Web.DataSources.IGISResource myGisResource = myGisFunctionality.Resource;/判断该 resource 是否支持 IQueryFunctionalitybool my

13、Supported = myGisResource.SupportsFunctionality(typeof(ESRI.ArcGIS.ADF.Web.DataSo urces.IQueryFunctionality);if (mySupported)/如果支持,就创建一个该资源的 IQueryFunctionalityESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality myQFunc; myQFunc =(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality)myGisResource.Cr

14、eateFunctionality(typeof(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunction ality), null);/获得可以进行查询图层的 layerId 和 layerName,GetQueryableLayers 的重载方法可以指定图层类型string lids, lnames; myQFunc.GetQueryableLayers(null, out lids, out lnames);/定义查询对象ESRI.ArcGIS.ADF.Web.SpatialFilter spatialfilter = new ESRI.ArcGIS.

15、ADF.Web.SpatialFilter();/设置查询的过滤条件 spatialfilter.ReturnADFGeometries = false; spatialfilter.MaxRecords = 1000;spatialfilter.WhereClause = pQueryText;/对指定的图层进行查询,查询的结果保存为 DataTable System.Data.DataTable myDataTable = myQFunc.Query(null, lids0, spatialfilter);return myDataTable;elsereturn null;这样就完成了一个属性查询,其实使用这种开发方式的过程基本上都是差不多, 只要理解好了这几种关系,知道一共有多少能力即Functionality,就可以知道用 这种开发方式可以实现哪些功能,以及如何实现。其中关键的地方主要有以下几个地方:1./获取当前 map1 控件中第一个资源的 functionality ESRI.ArcGIS.ADF.Web.DataSources.IGISFunctionalitym

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

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