ArcIMS根据查询结果定位的方法总结(C#+ADF)
2008-12-05 14:20
435 查看
方法1:
//不能根据数据库的查询条件进行选择
ESRI.ArcGIS.ADF.IMS.Geometry.Envelope env = null;
Filter queryFilter = new Filter("sde.SDE.SZPOINT.点位ID=164");
//Get feature count - using previously retrieved layer object; no selection buffer
int featureCount = theLayer.GetFeatureCount(queryFilter, null, out env);
ESRI.ArcGIS.ADF.Web.Geometry.Envelope pEnv = (ESRI.ArcGIS.ADF.Web.Geometry.Envelope)ESRI.ArcGIS.ADF.Web.Geometry.Geometry.GetMinimumEnclosingEnvelope(ESRI.ArcGIS.ADF.Web.DataSources.IMS.Converter.ToADFGeometry(env));
Map1.Extent.XMax = pEnv.XMax + 500;
Map1.Extent.XMin = pEnv.XMin - 500;
Map1.Extent.YMax = pEnv.YMax + 500;
Map1.Extent.YMin = pEnv.YMin - 500;
方法2:
//可以根据关联后的数据库中的查询条件来对结果进行定位
ESRI.ArcGIS.ADF.IMS.Carto.Layer.Filter electionFilter = new ESRI.ArcGIS.ADF.IMS.Carto.Layer.Filter();
electionFilter.JoinTables.Add(JoinTable);
electionFilter.WhereExpression = "sde.SDE.SZPOINT.点位ID=zwbj.dbo.v_projectinfo_full.location_id and " + strWhere;
ESRI.ArcGIS.ADF.IMS.Carto.Layer.QueryParameters queryPara = new ESRI.ArcGIS.ADF.IMS.Carto.Layer.QueryParameters(electionFilter);
queryPara.ReturnGlobalEnvelope = true;
queryPara.FeatureLimit = 1000;
ESRI.ArcGIS.ADF.IMS.Carto.Layer.FeatureTable featTable = theLayer.Query(queryPara);
Map1.Extent.XMax = featTable.GlobalEnvelope.XMax;
Map1.Extent.XMin = featTable.GlobalEnvelope.XMin;
Map1.Extent.YMax = featTable.GlobalEnvelope.YMax;
Map1.Extent.YMin = featTable.GlobalEnvelope.YMin;
方法3:
//只能通过图层里的字段查询进行定位
ESRI.ArcGIS.ADF.IMS.Carto.Layer.Filter queryFilter= new ESRI.ArcGIS.ADF.IMS.Carto.Layer.Filter();
queryFilter.JoinTables.Add(JoinTable);
queryFilter.WhereExpression = "查询条件";
ESRI.ArcGIS.ADF.IMS.Carto.Layer.QueryParameters queryParameters = new ESRI.ArcGIS.ADF.IMS.Carto.Layer.QueryParameters(queryFilter);
queryParameters.ReturnGlobalEnvelope = true;
queryParameters.ReturnGeometries = true;
queryParameters.ReturnEnvelopes = true;
ESRI.ArcGIS.ADF.IMS.Data.Dataset ds = theLayer.Dataset;
//执行查询
ESRI.ArcGIS.ADF.IMS.Carto.Layer.FeatureTable featureTable = theLayer.Query(queryParameters);
if (featureTable == null || featureTable.Rows.Count == 0)
//定位到单点
if (featureTable.Rows.Count == 1)
//定位到区域
else
{
ESRI.ArcGIS.ADF.IMS.Geometry.Envelope globalEnvelope = featureTable.GlobalEnvelope;
ESRI.ArcGIS.ADF.Web.Geometry.Envelope pEnv = new ESRI.ArcGIS.ADF.Web.Geometry.Envelope(globalEnvelope.XMin, globalEnvelope.YMin, globalEnvelope.XMax, globalEnvelope.YMax);
Map1.Extent = pEnv;
}
//不能根据数据库的查询条件进行选择
ESRI.ArcGIS.ADF.IMS.Geometry.Envelope env = null;
Filter queryFilter = new Filter("sde.SDE.SZPOINT.点位ID=164");
//Get feature count - using previously retrieved layer object; no selection buffer
int featureCount = theLayer.GetFeatureCount(queryFilter, null, out env);
ESRI.ArcGIS.ADF.Web.Geometry.Envelope pEnv = (ESRI.ArcGIS.ADF.Web.Geometry.Envelope)ESRI.ArcGIS.ADF.Web.Geometry.Geometry.GetMinimumEnclosingEnvelope(ESRI.ArcGIS.ADF.Web.DataSources.IMS.Converter.ToADFGeometry(env));
Map1.Extent.XMax = pEnv.XMax + 500;
Map1.Extent.XMin = pEnv.XMin - 500;
Map1.Extent.YMax = pEnv.YMax + 500;
Map1.Extent.YMin = pEnv.YMin - 500;
方法2:
//可以根据关联后的数据库中的查询条件来对结果进行定位
ESRI.ArcGIS.ADF.IMS.Carto.Layer.Filter electionFilter = new ESRI.ArcGIS.ADF.IMS.Carto.Layer.Filter();
electionFilter.JoinTables.Add(JoinTable);
electionFilter.WhereExpression = "sde.SDE.SZPOINT.点位ID=zwbj.dbo.v_projectinfo_full.location_id and " + strWhere;
ESRI.ArcGIS.ADF.IMS.Carto.Layer.QueryParameters queryPara = new ESRI.ArcGIS.ADF.IMS.Carto.Layer.QueryParameters(electionFilter);
queryPara.ReturnGlobalEnvelope = true;
queryPara.FeatureLimit = 1000;
ESRI.ArcGIS.ADF.IMS.Carto.Layer.FeatureTable featTable = theLayer.Query(queryPara);
Map1.Extent.XMax = featTable.GlobalEnvelope.XMax;
Map1.Extent.XMin = featTable.GlobalEnvelope.XMin;
Map1.Extent.YMax = featTable.GlobalEnvelope.YMax;
Map1.Extent.YMin = featTable.GlobalEnvelope.YMin;
方法3:
//只能通过图层里的字段查询进行定位
ESRI.ArcGIS.ADF.IMS.Carto.Layer.Filter queryFilter= new ESRI.ArcGIS.ADF.IMS.Carto.Layer.Filter();
queryFilter.JoinTables.Add(JoinTable);
queryFilter.WhereExpression = "查询条件";
ESRI.ArcGIS.ADF.IMS.Carto.Layer.QueryParameters queryParameters = new ESRI.ArcGIS.ADF.IMS.Carto.Layer.QueryParameters(queryFilter);
queryParameters.ReturnGlobalEnvelope = true;
queryParameters.ReturnGeometries = true;
queryParameters.ReturnEnvelopes = true;
ESRI.ArcGIS.ADF.IMS.Data.Dataset ds = theLayer.Dataset;
//执行查询
ESRI.ArcGIS.ADF.IMS.Carto.Layer.FeatureTable featureTable = theLayer.Query(queryParameters);
if (featureTable == null || featureTable.Rows.Count == 0)
//定位到单点
if (featureTable.Rows.Count == 1)
//定位到区域
else
{
ESRI.ArcGIS.ADF.IMS.Geometry.Envelope globalEnvelope = featureTable.GlobalEnvelope;
ESRI.ArcGIS.ADF.Web.Geometry.Envelope pEnv = new ESRI.ArcGIS.ADF.Web.Geometry.Envelope(globalEnvelope.XMin, globalEnvelope.YMin, globalEnvelope.XMax, globalEnvelope.YMax);
Map1.Extent = pEnv;
}
相关文章推荐
- ArcIMS根据查询结果定位的方法总结(C#+ADF)
- [转载] ArcIMS根据查询结果定位并高亮显示(面图层的定位)(ADF+C#)
- ArcIMS根据查询结果定位并高亮显示(面图层的定位)(ADF+C#)
- C# Winform ComboBox 在输入内容时 会在下拉菜单中显示 根据输入内容查询的结果
- C#通过Thrift连接查询HBase主要方法总结
- hql中关于一对多,根据数组里面某个对象的某个属性查询的方法总结。
- 问题:C# ToString("P");结果:c#中的常用ToString()方法总结
- Gridview查询后,对查询结果进行编辑,可无法定位我要的记录行,解决方法
- 问题:C#根据生日计算属相;结果:C#实现根据年份计算生肖属相的方法
- GPS定位,经纬度附近地点查询–C#实现方法
- Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)
- GPS定位,经纬度附近地点查询–C#实现方法
- GPS定位,经纬度附近地点查询–C#实现方法
- GPS定位,经纬度附近地点查询–C#实现方法
- GPS定位,根据经纬度查询附近地点的经纬度-sql方法实现
- C#反射动态调用dll中的方法,并返回结果
- MySQL中在查询结果集中得到记录行号的方法
- c#后台移除某个元素方法总结
- ArcEngine GDB数据库查询方法总结(转)
- 【C#.NET】dataGridView查询SQL数据方法