ThinkGeo.com    |     Documentation    |     Premium Support

Getting Class Breaks to work

I have setup 5 levels (colors) of Polygons depending on Population size, Median Income, etc. And I have an associated Legend to go with this.  I've created an InMemoryFeatureLayer, and am now trying to automate the ClassBreakStyle with the following code --see below:  (It doesn't work, i.e., display "any" polygons), but the code below it does work (the polygons display--but only one color).  


Can anyone tell me why my classbreak code doesn't work?  (TotalSelected is a column defined for each feature with the value of the Population, etc. of each zip code--InMemoryFeature)  Can anyone help me?  

             ClassBreakStyle Breaks = new ClassBreakStyle("TotalSelected");

                for (int j = 0; j < 5; j++)
                {
                    AreaStyle aStyle = new AreaStyle(new GeoPen(GeoColor.StandardColors.Black), new GeoSolidBrush(GeoColor.FromArgb(100, legend.ScaleColors[j])));

                    Double nLevel = Convert.ToDouble(legend.nScale[j]);
                    Breaks.ClassBreaks.Add(new ClassBreak(nLevel, aStyle));
                }

                DetailLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(Breaks);

//But this does work to color the polygons, but their all one color of course.

              AreaStyle aStyle = new AreaStyle(new GeoPen(GeoColor.StandardColors.Black), new GeoSolidBrush(GeoColor.FromArgb(100, legend.ScaleColors[3])));
                DetailLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(aStyle);


 



Hi Bob, 
  
 I think there is something mismatching between the nLevel and the value of column TotalSelected. Could you please send us your sample and the shape file, maybe we can find the problem in a short time in this way. 
  
 Thanks, 
  
 Edgar

 I am attaching two files.  A word document with more explanations and the whole code, and an excel sheet with the data (we don't use shape files but all of our data is in SQL Server)


Well, I was going to include the Excel sheet but I can't seem to upload that kind of file, so here is a link to the file on our website:


marketware.com/files/ageresults.xls  (case sensitive).


I appreciate your help!!  THANK YOU!!


bob



001_Problem_with_ClassBreakStyle.docx (110 KB)

The reason why the polygons didn’t show up is that the layer doesn’t have the FeatureSourceColumn which name is “TotalSelected”, add the following code and the polygons will appear.
 

DetailLayer.Open();
DetailLayer.Columns.Add(new FeatureSourceColumn(“TotalSelected”));

 

Attached is my code, please have a look.
 
Hope it helps,
 
Edgar

CustomStylesCode.txt (2.88 KB)

Thank you SOOOOOO much for going to the trouble to see this missing code!!! It works now. Again, thanks for taking the time to help me. 

 


I added a DetailLayer.Close();  at the end of defining the ClassBreakStyle definition.  I really don't get the .Open() / .Close() paradigm, can you tell me when its required?


Have a great day! 



bob



Hello Bob, 
  
 The layer open and close happened when you want to edit the layer’s feature. Like you want to add feature into layer.FeatureSource, or add Columns etc, in this time, use the open method before and call the close when you edit is over. 
  
 Let us know your queries. 
  
 Regards, 
  
 Gary