|
阅读:1251回复:1
[求助]ARCGIS地图渲染问题
<P>就是点个按钮后,地图上能根据不同的区域显示不同的颜色.而且颜色上方显示区域名字和 计算出来的结果能在地图上用柱状图显示.</P>
<P>如何代码实现?</P> |
|
|
1楼#
发布于:2008-11-20 17:36
<P> //柱状图渲染<BR> public IArray BarChartRenderer()<BR> {<BR> IArray pArray = new ArrayClass();<BR> int layerindex = this.layerindex();<BR> if (layerindex == -1)<BR> return null;<BR> IFeatureLayer pFeatureLayer = (IFeatureLayer)axMapControl1.get_Layer(layerindex);<BR> IGeoFeatureLayer pGeoFeatureLayer = pFeatureLayer as IGeoFeatureLayer;<BR> IChartRenderer pChartRenderer = new ChartRendererClass() as IChartRenderer;<BR> IRendererFields pRendererField = (IRendererFields)pChartRenderer;<BR> pRendererField.AddField("CASECOUNT", "CASECOUNT");<BR> IBarChartSymbol pBarChartSymbol = (IBarChartSymbol)new BarChartSymbolClass();<BR> pBarChartSymbol.Width = 6;</P>
<P> IChartSymbol pChartSymbol = (IChartSymbol)pBarChartSymbol;<BR> pChartSymbol.MaxValue = 2000;</P> <P> IMarkerSymbol pMarkerSymbol = (IMarkerSymbol)pBarChartSymbol;<BR> pMarkerSymbol.Size = 25;</P> <P> ISymbolArray pSymbolArray = (ISymbolArray)pBarChartSymbol;</P> <P> IFillSymbol pFillSymbol = (IFillSymbol)new SimpleFillSymbolClass();<BR> pFillSymbol.Color = GetRGBColor(213, 212, 252);<BR> pSymbolArray.AddSymbol((ISymbol)pFillSymbol);<BR> pFillSymbol = (IFillSymbol)new SimpleFillSymbolClass();<BR> pFillSymbol.Color = GetRGBColor(239, 228, 190);</P> <P> pChartRenderer.ChartSymbol = (IChartSymbol)pBarChartSymbol;<BR> pChartRenderer.BaseSymbol = (ISymbol)pFillSymbol;<BR> pChartRenderer.Label = "CASECOUNT";<BR> //pChartRenderer.UseOverposter = false;</P> <P> pGeoFeatureLayer.Renderer = pChartRenderer as IFeatureRenderer;<BR> pGeoFeatureLayer.DisplayField = "NAME";<BR> pGeoFeatureLayer.DisplayAnnotation = true;<BR> axMapControl1.ActiveView.Extent = fullmap_enve;<BR> axMapControl1.ActiveView.Refresh();<BR> Marshal.ReleaseComObject(pFillSymbol);<BR> pFillSymbol = null;<BR> Marshal.ReleaseComObject(pBarChartSymbol);<BR> pBarChartSymbol = null;<BR> Marshal.ReleaseComObject(pChartRenderer);<BR> pChartRenderer = null;</P> <P> IQueryFilter pQueryFilter = new QueryFilterClass();<BR> IFeatureClass pFeatureClass = pGeoFeatureLayer.FeatureClass;<BR> IFeatureCursor pFeatureCursor = pFeatureClass.Search(pQueryFilter, false);<BR> IFeature pFeature = pFeatureCursor.NextFeature();<BR> int codeValue;<BR> while (pFeature != null)<BR> {<BR> int index = pFeature.Fields.FindField("CASECOUNT");<BR> if (index >= 0)<BR> {<BR> codeValue = int.Parse(pFeature.get_Value(index).ToString());<BR> pArray.Add(pFeature.get_Value(pFeature.Fields.FindField("NAME")).ToString() + "|" + codeValue.ToString());<BR> }<BR> pFeature = pFeatureCursor.NextFeature();<BR> }<BR> return pArray;<BR> }</P> |
|