- 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(); }
发表您的观点,进入该主题参与讨论...
|