hahaaluo
路人甲
路人甲
  • 注册日期2006-08-05
  • 发帖数146
  • QQ
  • 铜币591枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1830回复:6

回hsghxm大哥的.......

楼主#
更多 发布于:2006-09-07 13:57
<P>谢谢你帮我看了代码  ,不过在我运行时候还是出现了老问题,还是那行的错误,就是未将对象实例化的,我不知道该怎么做了,你还能帮我看看吗 ??谢谢了 </P>
喜欢0 评分0
hsghxm
路人甲
路人甲
  • 注册日期2004-10-27
  • 发帖数517
  • QQ4604052
  • 铜币1枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2006-09-07 15:45
..老兄,是哪个代码啊?<img src="images/post/smile/dvbbs/em08.gif" />
MSN:hsghxm@163.com QQ:4604052 (很少用,最好别加) Email:hsghxm@163.com 我的BOLG:http://www.gisempire.com/blog/user1/864/index.htm
举报 回复(0) 喜欢(0)     评分
hahaaluo
路人甲
路人甲
  • 注册日期2006-08-05
  • 发帖数146
  • QQ
  • 铜币591枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2006-09-07 15:54
<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>
举报 回复(0) 喜欢(0)     评分
hahaaluo
路人甲
路人甲
  • 注册日期2006-08-05
  • 发帖数146
  • QQ
  • 铜币591枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2006-09-07 15:55
<FONT color=#f70938> Classes =(double[])pClassify.ClassBreaks;</FONT><BR>到这一行的时候就出错了  说是未将对象实例化 的
举报 回复(0) 喜欢(0)     评分
hsghxm
路人甲
路人甲
  • 注册日期2004-10-27
  • 发帖数517
  • QQ4604052
  • 铜币1枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2006-09-07 16:30
<P>m_pGeoFeatureLayer 你赋值了吗?</P>
<P> private const string strNameField ="STATE_NAME";<BR>  private const string strPopField1 = "POP1990";<BR>  private const string strPopField2 = "POP1999";这几个字段你的表里有吗?</P>
<P>在我机子上是能跑的,你在仔细检查检查吧</P>
MSN:hsghxm@163.com QQ:4604052 (很少用,最好别加) Email:hsghxm@163.com 我的BOLG:http://www.gisempire.com/blog/user1/864/index.htm
举报 回复(0) 喜欢(0)     评分
hahaaluo
路人甲
路人甲
  • 注册日期2006-08-05
  • 发帖数146
  • QQ
  • 铜币591枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2006-09-08 13:18
<P>这位大哥,还是一样不行的  我附上我的代码 请您帮我看看好吗</P>
<P>public class Form1 : System.Windows.Forms.Form<BR> {<BR>  private System.Windows.Forms.Button cmdClassBk;<BR>  private ESRI.ArcGIS.MapControl.AxMapControl axMapControl1;<BR>  public  const  string strNameField = "STATE_NAME";<BR>  public const string strPopField1="POP1990";<BR>       // public const string strPopField2="POP1999";<BR>  private IGeoFeatureLayer pGeoFeatureLayer;<BR>  /// <summary><BR>  /// 必需的设计器变量。<BR>  /// </summary><BR>  private System.ComponentModel.Container components = null;</P>
<P>  public Form1()<BR>  {<BR>   //<BR>   // Windows 窗体设计器支持所必需的<BR>   //<BR>   InitializeComponent();</P>
<P>   //<BR>   // TOD 在 InitializeComponent 调用后添加任何构造函数代码<BR>   //<BR>  }</P>
<P>  /// <summary><BR>  /// 清理所有正在使用的资源。<BR>  /// </summary><BR>  protected override void Dispose( bool disposing )<BR>  {<BR>   if( disposing )<BR>   {<BR>    if (components != null) <BR>    {<BR>     components.Dispose();<BR>    }<BR>   }<BR>   base.Dispose( disposing );<BR>  }</P>
<P>  #region Windows 窗体设计器生成的代码<BR>  /// <summary><BR>  /// 设计器支持所需的方法 - 不要使用代码编辑器修改<BR>  /// 此方法的内容。<BR>  /// </summary><BR>  private void InitializeComponent()<BR>  {<BR>   System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1));<BR>   this.cmdClassBk = new System.Windows.Forms.Button();<BR>   this.axMapControl1 = new ESRI.ArcGIS.MapControl.AxMapControl();<BR>   ((System.ComponentModel.ISupportInitialize)(this.axMapControl1)).BeginInit();<BR>   this.SuspendLayout();<BR>   // <BR>   // cmdClassBk<BR>   // <BR>   this.cmdClassBk.Location = new System.Drawing.Point(240, 24);<BR>   this.cmdClassBk.Name = "cmdClassBk";<BR>   this.cmdClassBk.TabIndex = 0;<BR>   this.cmdClassBk.Text = "ClassBk";<BR>   this.cmdClassBk.Click += new System.EventHandler(this.cmdClassBk_Click);<BR>   // <BR>   // axMapControl1<BR>   // <BR>   this.axMapControl1.Location = new System.Drawing.Point(16, 64);<BR>   this.axMapControl1.Name = "axMapControl1";<BR>   this.axMapControl1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axMapControl1.OcxState")));<BR>   this.axMapControl1.Size = new System.Drawing.Size(672, 320);<BR>   this.axMapControl1.TabIndex = 1;<BR>   // <BR>   // Form1<BR>   // <BR>   this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);<BR>   this.ClientSize = new System.Drawing.Size(720, 390);<BR>   this.Controls.Add(this.axMapControl1);<BR>   this.Controls.Add(this.cmdClassBk);<BR>   this.Name = "Form1";<BR>   this.Text = "Form1";<BR>   ((System.ComponentModel.ISupportInitialize)(this.axMapControl1)).EndInit();<BR>   this.ResumeLayout(false);</P>
<P>  }<BR>  #endregion</P>
<P>  /// <summary><BR>  /// 应用程序的主入口点。<BR>  /// </summary><BR>  [STAThread]<BR>  static void Main() <BR>  {<BR>   Application.Run(new Form1());<BR>  }</P>
<P>  private void cmdClassBk_Click(object sender, System.EventArgs e)<BR>  {<BR>   pGeoFeatureLayer=new FeatureLayerClass();<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>   pTableHistogram.Field = strPopField1;<BR>            //pTableHistogram.Field = strPopField2;<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>   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>    </P>
<P>   IClassBreaksRenderer pClassBreaksRenderer = new ClassBreaksRendererClass();<BR>   pClassBreaksRenderer.Field = strPopField1;<BR>           // pClassBreaksRenderer.Field = strPopField2 ;<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;breakIndex++)<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>   pGeoFeatureLayer.Renderer = pClassBreaksRenderer as IFeatureRenderer;<BR>   this.axMapControl1.CtlRefresh(esriViewDrawPhase.esriViewGeography,null,null);</P>
<P><BR>  }</P>
<P> }</P>
举报 回复(0) 喜欢(0)     评分
hsghxm
路人甲
路人甲
  • 注册日期2004-10-27
  • 发帖数517
  • QQ4604052
  • 铜币1枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2006-09-09 13:16
今天在家,家里没装arcgis等环境,就不帮你调试了,等下周上班后再说吧<img src="images/post/smile/dvbbs/em01.gif" />
MSN:hsghxm@163.com QQ:4604052 (很少用,最好别加) Email:hsghxm@163.com 我的BOLG:http://www.gisempire.com/blog/user1/864/index.htm
举报 回复(0) 喜欢(0)     评分
游客

返回顶部