[转载] ArcIMS根据查询结果定位并高亮显示(面图层的定位)(ADF+C#)
//定位到指定的面,并高亮显示
ESRI.ArcGIS.ADF.Web.DataSources.IMS.MapFunctionality mf = (ESRI.ArcGIS.ADF.Web.DataSources.IMS.MapFunctionality)Map1.GetFunctionality(0); ;
ESRI.ArcGIS.ADF.IMS.Carto.MapView mv= mf.MapView;
ESRI.ArcGIS.ADF.IMS.Carto.Layer.FeatureLayer queryLayer;
queryLayer = (FeatureLayer)mv.Layers.FindByName("SDE.SDE.行政分区");
Filter queryFilter = new Filter();
string strSQL = "objectid='1''";
queryFilter.WhereExpression = strSQL;
QueryParameters queryParams = new QueryParameters(queryFilter);
queryFilter.Tolerance = 20;
queryFilter.ToleranceUnits = BufferUnits.Meters;
queryParams.ReturnGeometries = true;
queryParams.ReturnGlobalEnvelope = true;
queryLayer.Visible = true;
FeatureTable ft = queryLayer.Query(queryParams);
//缩放至查询结果的区域
if (ft.Rows.Count != 0)
{
ESRI.ArcGIS.ADF.IMS.Geometry.Geometry featureGeom = (ESRI.ArcGIS.ADF.IMS.Geometry.Geometry)ft.Rows[0]["#SHAPE#"];
ESRI.ArcGIS.ADF.Web.Geometry.Geometry adfGEom = ESRI.ArcGIS.ADF.Web.DataSources.IMS.Converter.ToADFGeometry(featureGeom);
ESRI.ArcGIS.ADF.Web.Geometry.Envelope adfEnv = ESRI.ArcGIS.ADF.Web.Geometry.Envelope.GetMinimumEnclosingEnvelope(adfGEom);
Map1.Extent = adfEnv;
}


ESRI.ArcGIS.ADF.IMS.Display.Symbol.FeatureSymbol selSymbol = new ESRI.ArcGIS.ADF.IMS.Display.Symbol.SimpleFillSymbol(System.Drawing.Color.Yellow, System.Drawing.Color.Red, PolygonFillType.Solid);
selSymbol.Transparency = 10;
ESRI.ArcGIS.ADF.IMS.Display.Renderer.ValueMapRenderer selValueMapRenderer = new ESRI.ArcGIS.ADF.IMS.Display.Renderer.ValueMapRenderer("", selSymbol, "名称");
FeatureLayer hilightLayer = queryLayer.CreateSelectionLayer(queryFilter, selValueMapRenderer, "hilightlayer");
hilightLayer.Name = "SelectedPARCEL";
//将图层添加到mapView中
if (mv.Layers.FindByName("SelectedPARCEL") == null)
{
mv.Layers.Add(hilightLayer);
}
else
{
mv.ClearSelectionLayers();
mv.Layers.Add(hilightLayer);
}

Map1.Refresh();
ESRI.ArcGIS.ADF.Web.DataSources.IMS.MapFunctionality mf = (ESRI.ArcGIS.ADF.Web.DataSources.IMS.MapFunctionality)Map1.GetFunctionality(0); ;
ESRI.ArcGIS.ADF.IMS.Carto.MapView mv= mf.MapView;
ESRI.ArcGIS.ADF.IMS.Carto.Layer.FeatureLayer queryLayer;
queryLayer = (FeatureLayer)mv.Layers.FindByName("SDE.SDE.行政分区");
Filter queryFilter = new Filter();
string strSQL = "objectid='1''";
queryFilter.WhereExpression = strSQL;
QueryParameters queryParams = new QueryParameters(queryFilter);
queryFilter.Tolerance = 20;
queryFilter.ToleranceUnits = BufferUnits.Meters;
queryParams.ReturnGeometries = true;
queryParams.ReturnGlobalEnvelope = true;
queryLayer.Visible = true;
FeatureTable ft = queryLayer.Query(queryParams);
//缩放至查询结果的区域
if (ft.Rows.Count != 0)
{
ESRI.ArcGIS.ADF.IMS.Geometry.Geometry featureGeom = (ESRI.ArcGIS.ADF.IMS.Geometry.Geometry)ft.Rows[0]["#SHAPE#"];
ESRI.ArcGIS.ADF.Web.Geometry.Geometry adfGEom = ESRI.ArcGIS.ADF.Web.DataSources.IMS.Converter.ToADFGeometry(featureGeom);
ESRI.ArcGIS.ADF.Web.Geometry.Envelope adfEnv = ESRI.ArcGIS.ADF.Web.Geometry.Envelope.GetMinimumEnclosingEnvelope(adfGEom);
Map1.Extent = adfEnv;
}

ESRI.ArcGIS.ADF.IMS.Display.Symbol.FeatureSymbol selSymbol = new ESRI.ArcGIS.ADF.IMS.Display.Symbol.SimpleFillSymbol(System.Drawing.Color.Yellow, System.Drawing.Color.Red, PolygonFillType.Solid);
selSymbol.Transparency = 10;
ESRI.ArcGIS.ADF.IMS.Display.Renderer.ValueMapRenderer selValueMapRenderer = new ESRI.ArcGIS.ADF.IMS.Display.Renderer.ValueMapRenderer("", selSymbol, "名称");
FeatureLayer hilightLayer = queryLayer.CreateSelectionLayer(queryFilter, selValueMapRenderer, "hilightlayer");
hilightLayer.Name = "SelectedPARCEL";
//将图层添加到mapView中
if (mv.Layers.FindByName("SelectedPARCEL") == null)
{
mv.Layers.Add(hilightLayer);
}
else
{
mv.ClearSelectionLayers();
mv.Layers.Add(hilightLayer);
}
Map1.Refresh();
浙公网安备 33010602011771号