您的位置:首页 > 编程语言 > C#

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;


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐