看两种不同的图层查询方法
2008-02-23 15:06
281 查看
方法一:
1 m_agsBase.InitializeVar(CsMap);//m_agsBase为通用类,初始化地图控件,获取各个参数
2
3 IMap pMap = m_agsBase.GetMap();
4
6
7
8
9
10 IServerContext pSOC = m_agsBase.GetSOC();
11 IQueryFilter pQueryFilter = (IQueryFilter)pSOC.CreateObject("esriGeodatabase.QueryFilter");
12 pQueryFilter.WhereClause = txtQuery.Text;
13
14 //取地图上的第一个图层
15 ILayer pLayer = pMap.get_Layer(2);
16 IFeatureLayer pFeatureLyr = pLayer as IFeatureLayer;
17 IFeatureClass pFeatCls = pFeatureLyr.FeatureClass;
18 IFeatureCursor pFeatCursor = pFeatCls.Search(pQueryFilter, false);
19
上面的方法的思路总结:基于底层进行属性查找,一方面由SoC生成IQueryFilter,另一方面生成 IFeatureLayer,两者结合使用方法:search,返回结果为 IFeatureCursor
方法二:
IEnumerable func_enum = null;
func_enum = CsMap.GetFunctionalities();
System.Data.DataTable mytable;
foreach (ESRI.ArcGIS.ADF.Web.DataSources.IMapFunctionality gisfunctionality in func_enum)
{
//gisresource = gisfunctionality.Resource;
//对特定的数据库图层进行查询
if (gisfunctionality.Resource.Name == "CsMap")
{ bool supported = false;
ESRI.ArcGIS.ADF.Web.DataSources.IGISResource gisresource = null;
gisresource = gisfunctionality.Resource;
supported = gisresource.SupportsFunctionality(typeof(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality));
//如果支持
if (supported)
{
ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality qfunc;
qfunc = (ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality)gisresource.CreateFunctionality(typeof(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality), null);
string[] lids;
string[] lnames;
qfunc.GetQueryableLayers(null, out lids, out lnames);
//对查询进行过滤
#region
ESRI.ArcGIS.ADF.Web.SpatialFilter spatialfilter = new ESRI.ArcGIS.ADF.Web.SpatialFilter();
spatialfilter.ReturnADFGeometries = false;
spatialfilter.MaxRecords = 1000;
spatialfilter.WhereClause = txtQuery.Text;
spatialfilter.Geometry = geometry;
#endregion
mytable = qfunc.Query(null, lids[2], spatialfilter);
方法二思路:1判断resource是否支持空间查询;
2生成queryfunction接口,并获取当前数据源中包含的可以查询的图层
3生成空间查询过滤器
4返回的结果为 Datatable
方法二是基于ADF框架的,而方法一是基于AO的
1 m_agsBase.InitializeVar(CsMap);//m_agsBase为通用类,初始化地图控件,获取各个参数
2
3 IMap pMap = m_agsBase.GetMap();
4
6
7
8
9
10 IServerContext pSOC = m_agsBase.GetSOC();
11 IQueryFilter pQueryFilter = (IQueryFilter)pSOC.CreateObject("esriGeodatabase.QueryFilter");
12 pQueryFilter.WhereClause = txtQuery.Text;
13
14 //取地图上的第一个图层
15 ILayer pLayer = pMap.get_Layer(2);
16 IFeatureLayer pFeatureLyr = pLayer as IFeatureLayer;
17 IFeatureClass pFeatCls = pFeatureLyr.FeatureClass;
18 IFeatureCursor pFeatCursor = pFeatCls.Search(pQueryFilter, false);
19
上面的方法的思路总结:基于底层进行属性查找,一方面由SoC生成IQueryFilter,另一方面生成 IFeatureLayer,两者结合使用方法:search,返回结果为 IFeatureCursor
方法二:
IEnumerable func_enum = null;
func_enum = CsMap.GetFunctionalities();
System.Data.DataTable mytable;
foreach (ESRI.ArcGIS.ADF.Web.DataSources.IMapFunctionality gisfunctionality in func_enum)
{
//gisresource = gisfunctionality.Resource;
//对特定的数据库图层进行查询
if (gisfunctionality.Resource.Name == "CsMap")
{ bool supported = false;
ESRI.ArcGIS.ADF.Web.DataSources.IGISResource gisresource = null;
gisresource = gisfunctionality.Resource;
supported = gisresource.SupportsFunctionality(typeof(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality));
//如果支持
if (supported)
{
ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality qfunc;
qfunc = (ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality)gisresource.CreateFunctionality(typeof(ESRI.ArcGIS.ADF.Web.DataSources.IQueryFunctionality), null);
string[] lids;
string[] lnames;
qfunc.GetQueryableLayers(null, out lids, out lnames);
//对查询进行过滤
#region
ESRI.ArcGIS.ADF.Web.SpatialFilter spatialfilter = new ESRI.ArcGIS.ADF.Web.SpatialFilter();
spatialfilter.ReturnADFGeometries = false;
spatialfilter.MaxRecords = 1000;
spatialfilter.WhereClause = txtQuery.Text;
spatialfilter.Geometry = geometry;
#endregion
mytable = qfunc.Query(null, lids[2], spatialfilter);
方法二思路:1判断resource是否支持空间查询;
2生成queryfunction接口,并获取当前数据源中包含的可以查询的图层
3生成空间查询过滤器
4返回的结果为 Datatable
方法二是基于ADF框架的,而方法一是基于AO的
相关文章推荐
- 用两种不同的方法导出ORACLE 查询数据为CSV 文件 (python 代码 与 使用 utl_file 包)
- C#+.Ashx+Jquery.AutoComplete 仿百度谷歌模糊自动查询两种使用方法
- Mybatis-实体类属性名与数据库字段名不同的查询方法
- 不同数据库中的分页查询方法
- oracle中两种分组查询的方法
- 如何寻找图层中某一字段中有多少个不同值(DISTINCT,pQueryFilter )的方法
- PHP实现查询两个数组中不同元素的方法
- 通过API文档查询Math类的方法,打印出近似圆,只要给定不同半径,圆的大小随之发生改变
- SQL学习之查询技巧 查询表是否存在的两种方法
- BB Gap Report的计算方法以及有用的MDX查询表达式(对于Property,Aspect等不同Dimension的过滤)
- SQL查询表是否存在的两种方法
- 不同数据库中的分页查询方法
- 不同apk间共享数据的两种方法
- switch和数组两种方法对不同输入做不同响应
- 关于Listview显示不同条目的两种方法
- 关于vector的erase删除操作的两种不同方法,在linux与visual studio的实现讨论
- 两种不同的决策和决策方法
- sql在不同数据库查询前几条数据的方法
- android活动之间的通信 setResult两种不同回调方法的差异
- 两种查询方式的不同