ArcGIS Server 开发系列--Web ADF 编程 (于Flyingis).doc_第1页
ArcGIS Server 开发系列--Web ADF 编程 (于Flyingis).doc_第2页
ArcGIS Server 开发系列--Web ADF 编程 (于Flyingis).doc_第3页
ArcGIS Server 开发系列--Web ADF 编程 (于Flyingis).doc_第4页
ArcGIS Server 开发系列--Web ADF 编程 (于Flyingis).doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Web ADF全名是Web Application Develope Framework,是ArcGIS Server专用的开发框架,9.2版本的ArcIMS也开始提供ADF的封装。完全使用Web控件编程几乎不能解决我们实际项目中的问题,因此我们从ArcGIS Server 开发系列(一)-编程框架总览中提到的途径二开始,即web controls + common datasource apis。 目标: 根据查询语句实现图层信息查询 准备工作: 1.Windows XP sp2中/英文版 2.Visual Studio 2005中/英文版 3.ArcGIS Server 9.2(我打上了sp2补丁),创建一个ArcGIS Server服务,Map Server属性中更改Pooling,使用池化连接方式,Progresses选择“In a seperate process for each instance(high isolation)”,我的服务为“World” 4.利用vs2005创建一个模板server应用-Web Mapping Application,并更改MapResourceManager属性 这样我们可以测试程序看是否能够正常运行,启动调试看到如下结果: 代码实现: 我们要完成的工作是对图层属性信息的查询,首先在页面左侧添加一个新的panel,左侧的Tasks、Results等都是放置在panel之中,在这个新的panel中分别添加TreeViewPlus、TextBox、Button三个控件,TextBox输入查询条件,Button确定查询, TreeViewPlus显示结果,在设计试图中浏览效果如下: 双击“Query”Button,编写点击事件。protectedvoidcmdQuery_Click(objectsender,EventArgse)Query(Map1.Extent); Query方法实现了对图层属性信息的查询。 protectedvoidQuery(ESRI.ArcGIS.ADF.Web.Geometry.Geometrygeometry)IEnumerablefunc_enum=null;/获取当前map1控件中所有的functionalityfunc_enum=Map1.GetFunctionalities();System.Data.DataTabledatatable;/对所有的functionality进行遍历foreach(ESRI.ArcGIS.ADF.Web.DataSources.IGISFunctionalitygisfunctionalityinfunc_enum)ESRI.ArcGIS.ADF.Web.DataSources.IGISResourcegisresource=null;/得到该functionality的resourcegisresource=gisfunctionality.Resource;/判断该resource是否支持IQueryFunctionalityboolsupported=false;supported=gisresource.SupportsFunctionality(typeof(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality);if(supported)ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionalityqfunc;qfunc=(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality)gisresource.CreateFunctionality(typeof(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality),null);stringlids;stringlnames;/获得图层的layerId和layerName,GetQueryableLayers的重载方法可以指定图层类型qfunc.GetQueryableLayers(null,outlids,outlnames);ESRI.ArcGIS.ADF.Web.SpatialFilterspatialfilter=newESRI.ArcGIS.ADF.Web.SpatialFilter();/设置过滤器的过滤条件,txtQuery就是panel中textbox的IDspatialfilter.ReturnADFGeometries=false;spatialfilter.MaxRecords=1000;spatialfilter.WhereClause=txtQuery.Text;spatialfilter.Geometry=geometry;/对指定的图层进行查询,查询的结果保存为DataTabledatatable=qfunc.Query(null,lids0,spatialfilter);TreeViewPlus1.Nodes.Clear();if(datatable!=null)System.Data.DataSetds=newSystem.Data.DataSet();ds.Tables.Add(datatable);TreeViewPlus1.ShowClearAllButton=false;/将结果绑定到TreeViewPlus控件上TreeViewPlus1.BindToDataSet(ds);TreeViewPlus1.Nodes0.Expanded=true; 运行程序,text box中输入“CNTRY_NAME LIKE A%”,查询结果: 这样这个小程序就完成了,在server中实现了对图层属性信息的查询,现在我们需要进行更多的考虑: 第一,考虑web控件、 functionality、datasource、resource、resourcemamager之间的关系,代码中多次对它们的关系进行了描述,用文档中的一幅图可以概括整个框架,这篇文章对此进行了阐述-ArcGIS Server .Net Web ADF体系结构。 第二,程序中使用的mxd仅仅包含一个world图层,因此对图层进行遍历的过程中只需获得第一图层的ID,如果指定图层名,可以在lnames得到所需的图层进行查询。 第三,程序实现的查询方式相当简单,在text box中输入原始的sql来完成where语句,只仅仅是一个测试,一般我们会屏蔽掉sql相关的关键字,提供多个text box或dropdownlist供用户选择进行字段查询。 第四,如果查询信息量不大,返回结果数量不多,完全可以考虑ajax来完成页面请求,不论是速度还是用户体验都会得到提高。 第五,通过程序可以看到,查询结果保存在一个datatable中,这极大的方便了server查询和.net的无缝连接,直接将结果和TreeViewPlus绑定,换成其他的visual studio控件也没问题

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论