ArcIMS根据查询结果定位的方法总结(C#+ADF)
来源:互联网 发布:魔兽世界mac客户端 编辑:程序博客网 时间:2024/05/30 13:41
方法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;
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;
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)
...{
string geometryColumn = String.Empty;
foreach (DataColumn col in featureTable.Columns)
...{
if (col.DataType == typeof(ESRI.ArcGIS.ADF.IMS.Geometry.Geometry))
...{
geometryColumn = col.ColumnName;
break;
}
}
ESRI.ArcGIS.ADF.IMS.Geometry.Multipoint featureMultiPt;
ESRI.ArcGIS.ADF.IMS.Geometry.Point pt = null;
if (geometryColumn != String.Empty)
...{
// Retrieve the geometry (point) for each city, add to point collection
foreach (DataRow featureRow in featureTable.Rows)
...{
featureMultiPt = (ESRI.ArcGIS.ADF.IMS.Geometry.Multipoint)featureRow[geometryColumn];
pt = featureMultiPt.Points[0];
}
}
ESRI.ArcGIS.ADF.Web.Geometry.Point new_adf_point = (ESRI.ArcGIS.ADF.Web.Geometry.Point)ESRI.ArcGIS.ADF.Web.DataSources.IMS.Converter.ToADFGeometry(pt);
Map1.CenterAt(new_adf_point);
}
//定位到区域
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.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)
...{
string geometryColumn = String.Empty;
foreach (DataColumn col in featureTable.Columns)
...{
if (col.DataType == typeof(ESRI.ArcGIS.ADF.IMS.Geometry.Geometry))
...{
geometryColumn = col.ColumnName;
break;
}
}
ESRI.ArcGIS.ADF.IMS.Geometry.Multipoint featureMultiPt;
ESRI.ArcGIS.ADF.IMS.Geometry.Point pt = null;
if (geometryColumn != String.Empty)
...{
// Retrieve the geometry (point) for each city, add to point collection
foreach (DataRow featureRow in featureTable.Rows)
...{
featureMultiPt = (ESRI.ArcGIS.ADF.IMS.Geometry.Multipoint)featureRow[geometryColumn];
pt = featureMultiPt.Points[0];
}
}
ESRI.ArcGIS.ADF.Web.Geometry.Point new_adf_point = (ESRI.ArcGIS.ADF.Web.Geometry.Point)ESRI.ArcGIS.ADF.Web.DataSources.IMS.Converter.ToADFGeometry(pt);
Map1.CenterAt(new_adf_point);
}
//定位到区域
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#)
- ArcIMS的开发总结(一)
- ADF 中使用Sequence的方法总结
- ADF 的Excel导入方法总结 1
- ADF 的Excel导入方法总结 2
- ADF 中使用Sequence的方法总结
- adf常用方法总结
- adf常用方法总结
- ArcIMS的开发总结(二)
- 根据多条件查询临时表,想得到不同结果集的方法
- 根据Application Error定位异常的方法
- 根据查询结果插入数据库
- oracle case when 根据结果改变查询出来的值
- 查询出来的结果根据某一字段进行分类
- 根据传入的sql查询结果返回HashMap<String,String>
- Arcgis for Js QueryTask查询结果集的定位
- SQLServer2005的事务处理
- php中英文手册(集成用户注释08/12/2007)
- ASP.NET程序中常用代码集
- 实现Hibernate分页查询原理解读
- DotNet版的ExtJS单用户Blog系统源码解析
- ArcIMS根据查询结果定位的方法总结(C#+ADF)
- 嵌入式启动过程
- Oracle 包变量的一种使用
- 偏頭疼預防
- C/C++学习笔记1 - 深入了解scanf()/getchar()和gets()等函数(原创)
- 软通培训中期小结——技术篇
- JS读取本地文本文件
- ANTLR中文网站 中国ANTLR开发者论坛www.antlr.org.cn
- JSON语法格式