ArcGIS Server 开发系列(二)–Web ADF 编程

ArcGIS Server 开发系列(二)–Web ADF 编程   

目标:

根据查询语句实现图层信息查询  

代码实现:

我们要完成的工作是对图层属性信息的查询,首先在页面左侧添加一个新的panel,左侧的TasksResults等都是放置在panel之中,在这个新的panel中分别添加TreeViewPlusTextBoxButton三个控件,TextBox输入查询条件,Button确定查询, TreeViewPlus显示结果,在设计试图中浏览效果如下:

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Collections;

using ESRI;

using ESRI.ArcGIS.ADF.Web.DataSources;

using ESRI.ArcGIS.ADF.Web.Geometry;

using ESRI.ArcGIS.ADF.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

 

    }

    protected void Button_query_Click(object sender, EventArgs e)

    {

        Query(Map1.Extent);

    }

 

    private void Query(ESRI.ArcGIS.ADF.Web.Geometry.Envelope envelope)

    {

        IEnumerable func_enum = null;

        func_enum = Map1.GetFunctionalities();//获取当前map1控件中所有的functionality

        System.Data.DataTable datatable;

        foreach (ESRI.ArcGIS.ADF.Web.DataSources.IGISFunctionality gisfun in func_enum)//对所有的functionality进行遍历

        {

            ESRI.ArcGIS.ADF.Web.DataSources.IGISResource gisresource = null;

            gisresource = gisfun.Resource;//得到该functionalityresource

            

            bool supported = false;

            //判断该resource是否支持IQueryFunctionality

            supported = gisresource.SupportsFunctionality(typeof(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality));

 

            if (supported)

            {

                ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality qfunc;

                qfunc = (IQueryFunctionality)gisresource.CreateFunctionality(typeof(IQueryFunctionality), null);

                string[] ids;

                string[] names;

                qfunc.GetQueryableLayers(null, out ids, out names);//获得图层的layerIdlayerName

                ESRI.ArcGIS.ADF.Web.SpatialFilter spatialfilter = new ESRI.ArcGIS.ADF.Web.SpatialFilter();

                spatialfilter.ReturnADFGeometries = false;//设置查询条件

                spatialfilter.MaxRecords = 1000;

                spatialfilter.WhereClause = TextBox_condition.Text;

                //spatialfilter.Geometry=geometry;

 

                datatable = qfunc.Query(null, ids[0], spatialfilter);//对指定的图层进行查询ids[0]

 

                TreeViewPlus1.Nodes.Clear();

                if (datatable != null)

                {

                    System.Data.DataSet ds = new DataSet();

                    ds.Tables.Add(datatable);

                    TreeViewPlus1.ShowClearAllButton = false;

                    TreeViewPlus1.Value = "搜索结果";

                    TreeViewPlus1.BindToDataSet(ds);//将结果绑定到TreeViewPlus控件上

                    TreeViewPlus1.Nodes[0].Expanded = true;

                }

            }

        }

    }

}

 

这样这个小程序就完成了,在server中实现了对图层属性信息的查询,现在我们需要进行更多的考虑:

第一,考虑web控件、 functionalitydatasourceresourceresourcemamager之间的关系,代码中多次对它们的关系进行了描述,用文档中的一幅图可以概括整个框架,这篇文章对此进行了阐述ArcGIS Server .Net Web ADF体系结构》。

server206

第二,程序中使用的mxd仅仅包含一个world图层,因此对图层进行遍历的过程中只需获得第一图层的ID,如果指定图层名,可以在lnames得到所需的图层进行查询。

第三,程序实现的查询方式相当简单,在text box中输入原始的sql来完成where语句,只仅仅是一个测试,一般我们会屏蔽掉sql相关的关键字,提供多个text boxdropdownlist供用户选择进行字段查询。

第四,如果查询信息量不大,返回结果数量不多,完全可以考虑ajax来完成页面请求,不论是速度还是用户体验都会得到提高。

第五,通过程序可以看到,查询结果保存在一个datatable中,这极大的方便了server查询和.net的无缝连接,直接将结果和TreeViewPlus绑定,换成其他的visual studio控件也没问题。

只要整个框架思路清晰了,查询功能的实现其实很简单,这也是途径2开发方式的一个例子,可以看出ArcGIS Server ADF给开发提供了很多便利,和ArcIMS相比开发难度相当,多看看文档和ADF OMD图可以让我们对ArcGIS Server ADF开发有更多的了解,记住,这只是server开发的起步。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值