- GIS论坛-GIS空间站 ( http://bbs.gissky.net/Default.asp )
-- 编程技术交流 ( http://bbs.gissky.net/ShowForum.asp?forumid=22 )
--- [求助]关于分级显示请教各位 ( http://bbs.gissky.net/ShowPost.asp?id=41800 )


作者:daiqt1981
发表时间:2007-11-7 21:45:14

 

请教各位:

       我的点数据shapefile在ArcGIS中能分级显示(即不同级别值的点数据用不同颜色显示),但在VC编的程序中不能分级显示(ESRI提供的标准数据在我编的程序中是能分级显示的),不知为什么,请各位多多指点。



作者:daiqt1981
发表时间:2007-11-7 22:33:26

下面是我的实现分级显示的代码:

void CBoyView::StdDev()
{
 extern int bra;
// CSetParameter sep;
 CMoLayers layers(m_map.GetLayers());
 CMoMapLayer  temp(layers.Item(COleVariant(TEXT("states"))));
 CMoRecordset recs(temp.GetRecords());
 CMoClassBreaksRenderer cbRenderer;
 VERIFY(cbRenderer.CreateDispatch(TEXT("MapObjects2.ClassBreaksRenderer")));
 LPCTSTR fieldName=TEXT("POP2000");
    cbRenderer.SetField(fieldName);
 CMoStatistics stats(recs.CalculateStatistics(fieldName));
 const int numClasses=4;
 double min=stats.GetMin();
 double breakVal=min;
//    double breakVal=stats.GetMean()-(stats.GetStdDev()*((double)numClasses/2.0));
 for(int i=0;i<numClasses;i++)
 {
  if(stats.GetMin()<=breakVal&&breakVal<=stats.GetMax())
  {
   cbRenderer.SetBreakCount(cbRenderer.GetBreakCount()+1);
   cbRenderer.SetBreak(cbRenderer.GetBreakCount()-1,breakVal);
  }
  breakVal+=bra;
   //stats.GetStdDev();
 }
  cbRenderer.RampColors(moYellow, moBlack);
 temp.SetRenderer(cbRenderer);
 m_map.Refresh();
}


发表您的观点,进入该主题参与讨论...


Powered by GIS空间站 © 2002-2007