arcgis server 学习(一) 地图要素查询
进行地图要素查询分三步
1.获得Functionalities,从Funtionalities中获取需要的数据源
2.判断得到的数据源是否支持IQueryFunctionality接口,在支持的情况下定义一个IQueryFunctionality接口
3.利用得到的接口在自己定义的SpatialFilter条件下通过Query方法得到查询结果,结果为DataTable类型
2using System.Data;
3using System.Configuration;
4using System.Web;
5using System.Web.Security;
6using System.Web.UI;
7using System.Web.UI.WebControls;
8using System.Web.UI.WebControls.WebParts;
9using System.Web.UI.HtmlControls;
10using System.Collections;
11using ESRI.ArcGIS.ADF.Web.DataSources;
12using ESRI.ArcGIS.ADF.Web.UI.WebControls;
13using ESRI.ArcGIS.ADF.Web.UI;
14using ESRI.ArcGIS.ADF.Web;
15
16/**//// <summary>
17/// CommonTool 的摘要说明
18/// </summary>
19public class CommonTool
20{
21
22 /**//// <Query>
23 /// Query 的摘要说明
24 /// Map1为地图控件
25 /// layerName是要查询的图层名
26 /// queryStr为查询字符串
27 /// resourceName为数据源服务的Name
28 /// 整个函数完成的功能:
29 /// 查询指定的Map控件中指定数据源的指定图层中符合查询字符串的地图要素
30 /// 返回值为DataTable
31 /// </Query>
32 public DataTable Query(Map map1,string layerName,string queryStr,string resourceName)
33 {
34 //dt为返回值
35 DataTable dt;
36
37 //定义一个枚举接口存储地图控件的functionality
38 //IEnumerable接口定义于System.Colloction命名空间之下
39 // Map控件的GetFunctionality返回的是一个IMapFunctionality类型
40 // 而Map控件的GetFunctionalities返回的是一个IEnumerable类型
41 //IMapFunctionality在ESRI.ArcGis.ADF.Web.DataSource命名空间下
42 IEnumerable enumFunc = map1.GetFunctionalities();
43
44 //定义一个IGISResource接口类型的变量gisResource,存储要查询的数据源
45 IGISResource gisResource = null;
46 //遍历枚举中的每一个functionality
47 foreach (IGISFunctionality gisFunc in enumFunc)
48 {
49 //获得每个functionality的源服务
50 if (gisFunc.Resource.Name == resourceName)
51 {
52 //将指定的数据源赋值给gisResource
53 gisResource = gisFunc.Resource;
54 }
55 }
56
57 //IGISResource接口的SupportFunctionality(type FunctionalityType)方法作用:
58 // 判断定义的数据源是否支持参数指定的FunctionalityType类型
59 bool support = gisResource.SupportsFunctionality(typeof(IQueryFunctionality));
60 if (support)
61 {
62 //在支持IQueryFunctionality的条件下,获得数据源的IQueryFunctionality接口并存储到qFunc
63 IQueryFunctionality qFunc;
64 qFunc = (IQueryFunctionality)gisResource.CreateFunctionality(typeof(IQueryFunctionality), null);
65
66 //定义两个字符串数组,用以存储图层的Id号,和图层名
67 string[] layerIdArray;
68 string[] layerNameArray;
69 //利用qFunc函数查询数据源的图层,并将Id号和图层名用out修饰符传出
70 qFunc.GetQueryableLayers(null, out layerIdArray, out layerNameArray);
71
72 //利用循环得到指定数据源的图层名为layerName的图层编号lid
73 int lid = 0;
74 for (int i = 0; i < layerName.Length; i++)
75 {
76 if (layerNameArray[i] == layerName)
77 {
78 lid = i;
79 break;
80 }
81 }
82 //定义一个空间过滤对象
83 //其位于ESRI.ArcGis.ADF.Web命名空间下
84 SpatialFilter spatialft = new SpatialFilter();
85 spatialft.ReturnADFGeometries = true;
86 //将查询字符串赋值给空间过滤的WhereClause属性
87 spatialft.WhereClause = queryStr;
88 //利用IQueryFunction接口qFunc传入最后得到的图层编号、空间过滤参数
89 //得到查询结果,其返回结果为一个DataTable
90 dt = qFunc.Query(null, lid.ToString(), spatialft);
91 //返回
92 return dt;
93 }
94
95 //若数据源不支持IQueryFunction接口,则返回为空
96 return null;
97 }
98}
arcgis server 学习(一) 地图要素查询相关推荐
- 发布和使用ArcGIS Server 服务之--地图服务(Mapserver)
发布和使用 ArcGIS Server 服务之--地图服务(Mapserver) 1.什么是地图服务? 1.1地图服务的数据源和支持方式 1.2如何开始创建地图服务? 1.3为什么要使用地图服务 1. ...
- ArcGIS Server 学习
ArcGIS Server http://help.arcgis.com/zh-cn/arcgisserver/10.0/help/arcgis_server_dotnet_help/#/na/009 ...
- arcgis server学习(一)
ArcGIS Server是一个发布企业级GIS应用程序的综合平台,提供了创建和配置GIS应用程序和服务的框架,可以满足各种客户端的各种需求,这是对 ArcGIS Server一个抽象的描述,那么Ar ...
- arcgis server发布服务地图不显示_ArcGIS API for JS 导出地图,不限制尺寸
最近在研究 ArcGIS 导出地图功能,折腾了许久,终于完成了. ArcGIS 自带的打印功能 ArcGIS Server 自带了一个打印地图服务. ArcGIS Server 自带打印地图服务 Ar ...
- Arcgis Javascript那些事儿(一)--Arcgis server发布feature access服务
1.什么是要素服务? 要素服务可用来通过 Internet 提供要素,并提供显示要素时所要使用的符号系统.之后,客户端可执行查询操作以获取要素,并执行相应的编辑操作.要素服务提供了可用于提高客户端编辑 ...
- arcgis server 常见问题【转】
1.关于登陆的问题 - 关闭Windows防火墙 - 登陆som,看看用户密码是否正确 - 修改一下,工具->文件夹选项->使用简单文件共享 - 登录用户是否是agsadmin和agsus ...
- 《精通ArcGIS Server 应用与开发》——1.3 ArcGIS 10 Mobile新特性1
本节书摘来自异步社区<精通ArcGIS Server 应用与开发>一书中的第1章,第1.3节,作者: 何正国 , 杜娟 , 毛海亚 更多章节内容可以访问云栖社区"异步社区&quo ...
- 第一章 ArcGis Server简介
本人为了学习ArcGis Server9.0,看了E文的 ArcGIS Server Administration and Development Guide,顺便翻译成中文.不妥之处尽请指出. Ar ...
- ArcGIS Server常见问题
http://virgos.iteye.com/blog/383562 1.Desktop连接Linux上Server服务 在Toolbox中用切图工具的时候,挡在主机那个参数里输入linux的IP ...
最新文章
- 秒懂JVM的三大参数类型,就靠这十个小实验了
- Netflix 官方技术博客:个性化分发与推荐,走在前列的 Netflix 是怎么做的?
- Vivotek 摄像头远程栈溢出漏洞分析及利用
- css实验内容,12个令人惊叹的CSS实验项目
- cocos2d-x初探学习笔记(2)--重要概念及Test例子结构
- 前端学习(2796):实现左侧数据渲染和点击高亮
- 开源GIS系统关系图
- Google Maps API V3: 通过邮编获取经纬度 Get Location (Latitude and Longitude) from Zip Cod
- springboot启动mybatis
- html5学习笔记---05.JavaScript 中的面向对象,继承和封装
- windows iphone 传输
- Bootstrap Wizard 多步表单控件
- MySql常用语句 转
- 组态王——创建协议组件失败
- 磊科路由器信号按键_超简单的磊科路由器重置方法
- 加油站都需要什么手续_开办加油站需要办哪些手续?
- 产品运营都必须知道的数据指标们
- 使用IPC扫描器进行网络扫描
- python符号积分
- 设置让我们为Express加密
热门文章
- QPBOC交易流程详解--POS与卡片的数据交互进行分析
- 双极型晶体管---三极管
- 信息学奥赛一本通1267:【例9.11】01背包问题(二维dp与滚动数组优化)
- 听见丨小鹏汽车上​市量产车G3发布 英特尔与法拉利合作 将人工智能技术用于赛车运动
- 关于 京东推广-京准通 脑图分享
- oracle 考试通过说考试作弊,这些行为很有可能会被判定为作弊!一定要小心!...
- hive 窗口函数--常用函数介绍
- succi -测手速游戏
- Active-Directory-Security-101 手册
- 欧莱雅进博会展示口红打印机、超节水洗发产品;霍尼韦尔进博会签约顺丰集团、博腾股份 | 美通社头条...