阅读:1863回复:6
高手们,能告诉我这个是为什么???
<P> //分类渲染(比如人口的总数)<BR> private void cmdClassBreak_Click(object sender, System.EventArgs e)<BR> {<BR> ITable pTable;<BR> ITableHistogram pTableHistogram;<BR> IHistogram pHistogram;<BR> IClassify pClassify;<BR> object dataValues;<BR> object dataFrequency;<BR> if(axMapControl1.LayerCount>0)<BR> {<BR> pGeoFeatureLayer=axMapControl1.get_Layer(0) as IGeoFeatureLayer;<BR> }<BR> pTable=pGeoFeatureLayer as ITable;<BR> pTableHistogram=new TableHistogramClass();<BR> pHistogram=pTableHistogram as IHistogram;<BR> //取得人口总数数据<BR> pTableHistogram.Field=strPopField;<BR> pTableHistogram.Table=pTable;<BR> pHistogram.GetHistogram( out dataValues ,out dataFrequency );<BR> //将数据分类<BR> pClassify=new EqualIntervalClass();<BR> pClassify.SetHistogramData(dataValues,dataFrequency);<BR> <BR> //int ClassesCount;<BR> double[] Classes;<BR> <BR> pClassify.Classify(ref numDesiredClasses);<BR> <BR> <BR> Classes=(double[])pClassify.ClassBreaks;<BR> <BR> //ClassesCount= Classes.Length;</P>
<P> IClassBreaksRenderer pClassBreaksRenderer;<BR> pClassBreaksRenderer=new ClassBreaksRendererClass();<BR> pClassBreaksRenderer.Field=strPopField;<BR> pClassBreaksRenderer.BreakCount=4;<BR> pClassBreaksRenderer.SortClassesAscending=true;</P> <P> IHsvColor pFromColor;<BR> pFromColor=new HsvColorClass();<BR> pFromColor.Hue=60;<BR> pFromColor.Saturation=100;<BR> pFromColor.Value=96;<BR> <BR> IHsvColor pToColor;<BR> pToColor=new HsvColorClass();<BR> pToColor.Hue=0;<BR> pToColor.Saturation=100;<BR> pToColor.Value=96;</P> <P> IAlgorithmicColorRamp pRamp;<BR> IEnumColors pEnumColors;<BR> bool ok;<BR> <BR> pRamp=new AlgorithmicColorRampClass();<BR> pRamp.Algorithm=ESRI.ArcGIS.Display.esriColorRampAlgorithm.esriHSVAlgorithm;<BR> pRamp.FromColor=pFromColor;<BR> pRamp.ToColor=pToColor;<BR> pRamp.Size=4;<BR> pRamp.CreateRamp(out ok);<BR> pEnumColors=pRamp.Colors;<BR> pEnumColors.Reset();</P> <P> IColor pColor;<BR> ISimpleFillSymbol pSimpleFillSymbol;<BR> long breakIndex;</P> <P> for(breakIndex=0;breakIndex<3;breakIndex++)<BR> {<BR> pColor=pEnumColors.Next();<BR> pSimpleFillSymbol=new SimpleFillSymbolClass();<BR> pSimpleFillSymbol.Color=pColor;<BR> pSimpleFillSymbol.Style=ESRI.ArcGIS.Display.esriSimpleFillStyle.esriSFSSolid;<BR> pClassBreaksRenderer.set_Symbol(Convert.ToInt32(breakIndex),pSimpleFillSymbol as ISymbol);//=pSimpleFillSymbol;<BR> double d=Classes[breakIndex];<BR> pClassBreaksRenderer.set_Break(Convert.ToInt32(breakIndex),d);//=Classes;</P> <P> }</P> <P> pGeoFeatureLayer.Renderer=pClassBreaksRenderer as IFeatureRenderer;</P> <P> axMapControl1.CtlRefresh(esriViewDrawPhase.esriViewGeography,Type.Missing,Type.Missing);</P> <P> }</P> |
|
1楼#
发布于:2006-09-05 13:21
<P>这是一个分类渲染的例子,不知道是哪个地方出了问题,总是运行不了的??</P>
<P>请各位高手帮帮忙看看我是错在哪个地方了,谢谢你们了~~~~~~~~~~</P> |
|
2楼#
发布于:2006-09-05 14:34
把错误信息以及报错行贴出来贴出来再问!
|
|
|
3楼#
发布于:2006-09-05 16:01
<P> Classes=(double[])pClassify.ClassBreaks;<BR>运行到这一行就出错了 </P>
<P>说是为将对象引用到对象实例 还有就是单步运行时是地图变不见了 是怎么回事??</P> |
|
4楼#
发布于:2006-09-06 09:54
<P>怎么还是没人来看看我的这个呢 </P>
|
|
5楼#
发布于:2006-09-06 12:26
<P>帮助里面的VB代码你想转成c#是吧,我刚把它转了一下,测试通过,没问题 ,把代码帖出来,你对照一下,应该就没问题了! </P>
<P> ITable pTable =m_pGeoFeatureLayer as ITable;<BR> IClassify pClassify;<BR> ITableHistogram pTableHistogram;<BR> IHistogram pHistogram;<BR> object dataFrequency,dataValues;</P> <P> pTableHistogram = new TableHistogramClass();<BR> pHistogram = pTableHistogram as IHistogram;<BR> pTableHistogram.Field = strPopField1;<BR> pTableHistogram.Table = pTable;<BR> pHistogram.GetHistogram(out dataValues, out dataFrequency);<BR> <BR> <BR> pClassify = new EqualIntervalClass();<BR> pClassify.SetHistogramData( dataValues, dataFrequency);<BR> <BR> <BR> <FONT color=#f70938>double [] Classes;<BR> int numDesiredClasses = 3;<BR> pClassify.Classify(ref numDesiredClasses); <BR> Classes =(double[])pClassify.ClassBreaks;<BR> //Classes = pClassify.ClassBreaks as double[];<BR> int ClassesCount = Classes.Length;<BR></FONT> </P> <P> IClassBreaksRenderer pClassBreaksRenderer = new ClassBreaksRendererClass();<BR> pClassBreaksRenderer.Field = strPopField1;<BR> pClassBreaksRenderer.BreakCount = ClassesCount;<BR> pClassBreaksRenderer.SortClassesAscending = true;</P> <P> IHsvColor pFromColor = new HsvColorClass();<BR> pFromColor.Hue = 60 ; <BR> pFromColor.Saturation = 100;<BR> pFromColor.Value = 96;</P> <P> IHsvColor pToColor = new HsvColorClass();<BR> pToColor.Hue = 0;<BR> pToColor.Saturation = 100;<BR> pToColor.Value = 96;</P> <P> IAlgorithmicColorRamp pRamp = new AlgorithmicColorRampClass();<BR> IEnumColors pEnumColors;<BR> bool ok;</P> <P> pRamp.Algorithm = esriColorRampAlgorithm.esriHSVAlgorithm;<BR> pRamp.FromColor = pFromColor;<BR> pRamp.ToColor = pToColor;<BR> pRamp.Size = ClassesCount;<BR> pRamp.CreateRamp(out ok);<BR> pEnumColors = pRamp.Colors;</P> <P> IColor pColor;<BR> ISimpleFillSymbol pFillSymbol;<BR> int breakIndex;</P> <P> for(breakIndex =0;breakIndex<ClassesCount;ClassesCount++)<BR> {<BR> pColor = pEnumColors.Next();<BR> pFillSymbol = new SimpleFillSymbolClass();<BR> pFillSymbol.Color = pColor;<BR> pFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid;<BR> pClassBreaksRenderer.set_Symbol(breakIndex, pFillSymbol as ISymbol);<BR> pClassBreaksRenderer.set_Break(breakIndex, (double)Classes[breakIndex + 1]);<BR> }<BR> m_pGeoFeatureLayer.Renderer = pClassBreaksRenderer as IFeatureRenderer;<BR> this.axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography,null,null);<BR></P> |
|
|
6楼#
发布于:2006-09-07 10:20
<P>上面这位大哥 ,为什么还是同样的错误呢 ???</P>
<P>可以帮忙看看吗 ??</P> <P>编译是可以通过,但是运行时就不可以了</P> |
|