/[thuban]/branches/WIP-pyshapelib-bramz/Thuban/Model/classgen.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/Thuban/Model/classgen.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1425 by jonathan, Wed Jul 16 13:21:59 2003 UTC revision 1759 by bh, Fri Sep 26 18:36:01 2003 UTC
# Line 152  def generate_quantiles(_list, percents, Line 152  def generate_quantiles(_list, percents,
152    
153      return (adjusted, clazz)      return (adjusted, clazz)
154    
 def GenQuantiles0(_list, percents, ramp, _range):  
     """Same as GenQuantiles, but the first class won't be added to  
     the classification.  
   
     Returns a tuple (adjusted, Classification, upper_class0) where  
     upper_class0 is the highest value inside the first class.  
   
     _list -- a sort list of values  
   
     percents -- a sorted list of floats in the range 0.0-1.0 which  
                 represent the upper bound of each quantile. the  
                 union of all percentiles should be the entire  
                 range from 0.0-1.0  
   
     ramp -- an object which implements the CustomRamp interface  
   
     _range -- a Range object  
   
     Raises a Value Error if 'percents' has fewer than two items, or  
     does not cover the entire range.  
     """  
   
     clazz = Classification()  
     quantiles = calculate_quantiles(_list, percents, _range)  
     adjusted = True  
   
     if quantiles is not None:  
   
         numGroups = len(quantiles[3]) - 1  
   
         if numGroups > 0:  
             adjusted = quantiles[0]  
   
             start, min, endMax, right = _range.GetRange()  
   
             class0 = quantiles[3][0]  
             min = _list[class0[0]]  
             oldp = class0[1]  
             i = 1  
             end = "]"  
   
             maxValue = float(numGroups - 1)  
             if maxValue < 1: maxValue = 1  
             for (q, p) in quantiles[3][1:]:  
                 prop = ramp.GetProperties(float(i-1) / maxValue)  
   
                 if i == numGroups:  
                     max = endMax  
                     end = right  
                 else:  
                     max = _list[q]  
   
                 group = ClassGroupRange(Range((start, min, max, end)), prop)  
       
                 group.SetLabel("%s%% - %s%%" % (round(oldp*100, 2),  
                                                 round(p*100, 2)))  
                 oldp = p  
                 start = "]"  
                 min = max  
                 clazz.AppendGroup(group)  
                 i += 1  
   
     return (adjusted, clazz, _list[class0[0]])  
   
155    
156  def calculate_quantiles(_list, percents, _range):  def calculate_quantiles(_list, percents, _range):
157      """Calculate quantiles for the given _list of percents from the      """Calculate quantiles for the given _list of percents from the
# Line 377  def calculate_quantiles(_list, percents, Line 313  def calculate_quantiles(_list, percents,
313  class CustomRamp:  class CustomRamp:
314    
315      def __init__(self, prop1, prop2):      def __init__(self, prop1, prop2):
316            """Create a ramp between prop1 and prop2."""
317          self.prop1 = prop1          self.prop1 = prop1
318          self.prop2 = prop2          self.prop2 = prop2
319    
320      def GetRamp(self):      def GetRamp(self):
321            """Return this ramp."""
322          return self          return self
323    
324      def GetProperties(self, index):      def GetProperties(self, index):
# Line 410  class CustomRamp: Line 348  class CustomRamp:
348          return newProps          return newProps
349    
350      def __SetProperty(self, color1, color2, index, setf):      def __SetProperty(self, color1, color2, index, setf):
351            """Use setf to set the appropriate property for the point
352            index percent between color1 and color2. setf is a function
353            to call that accepts a Color object or Transparent.
354            """
355    
356          if color1 is Transparent and color2 is Transparent:          if color1 is Transparent and color2 is Transparent:
357              setf(Transparent)              setf(Transparent)
# Line 430  class CustomRamp: Line 372  class CustomRamp:
372                  (color2.blue  - color1.blue)  * index + color1.blue))                  (color2.blue  - color1.blue)  * index + color1.blue))
373    
374  class MonochromaticRamp(CustomRamp):  class MonochromaticRamp(CustomRamp):
375        """Helper class to make ramps between two colors."""
376    
377      def __init__(self, start, end):      def __init__(self, start, end):
378            """Create a Monochromatic Ramp.
379    
380            start -- starting Color
381    
382            end -- ending Color
383            """
384          sp = ClassGroupProperties()          sp = ClassGroupProperties()
385          sp.SetLineColor(start)          sp.SetLineColor(start)
386          sp.SetFill(start)          sp.SetFill(start)
# Line 441  class MonochromaticRamp(CustomRamp): Line 391  class MonochromaticRamp(CustomRamp):
391    
392          CustomRamp.__init__(self, sp, ep)          CustomRamp.__init__(self, sp, ep)
393    
394  GreyRamp       = MonochromaticRamp(Color(1, 1, 1),  Color(0, 0, 0))  grey_ramp         = MonochromaticRamp(Color(1, 1, 1),  Color(0, 0, 0))
395  RedRamp        = MonochromaticRamp(Color(1, 1, 1),  Color(.8, 0, 0))  red_ramp          = MonochromaticRamp(Color(1, 1, 1),  Color(.8, 0, 0))
396  GreenRamp      = MonochromaticRamp(Color(1, 1, 1),  Color(0, .8, 0))  green_ramp        = MonochromaticRamp(Color(1, 1, 1),  Color(0, .8, 0))
397  BlueRamp       = MonochromaticRamp(Color(1, 1, 1),  Color(0, 0, .8))  blue_ramp         = MonochromaticRamp(Color(1, 1, 1),  Color(0, 0, .8))
398  GreenToRedRamp = MonochromaticRamp(Color(0, .8, 0), Color(1, 0, 0))  green_to_red_ramp = MonochromaticRamp(Color(0, .8, 0), Color(1, 0, 0))
399    
400  class HotToColdRamp:  class HotToColdRamp:
401        """A ramp that generates properties with colors ranging from
402        'hot' colors (e.g. red, orange) to 'cold' colors (e.g. green, blue)
403        """
404    
405      def GetRamp(self):      def GetRamp(self):
406            """Return this ramp."""
407          return self          return self
408    
409      def GetProperties(self, index):      def GetProperties(self, index):
# Line 498  class FixedRamp: Line 452  class FixedRamp:
452          self.ramp = ramp          self.ramp = ramp
453    
454      def GetRamp(self):      def GetRamp(self):
455            """Return this ramp."""
456          return self          return self
457    
458      def GetProperties(self, index):      def GetProperties(self, index):
459            """Return a ClassGroupProperties object whose properties
460            represent a point at 'index' between the properties in
461            the ramp that initialized this FixedRamp.
462    
463            index -- a value such that 0 <= index <= 1
464            """
465    
466          props = self.ramp.GetProperties(index)          props = self.ramp.GetProperties(index)
467          if self.fixes[0] is not None: props.SetLineColor(self.fixes[0])          if self.fixes[0] is not None: props.SetLineColor(self.fixes[0])
468          if self.fixes[1] is not None: props.SetLineWidth(self.fixes[1])          if self.fixes[1] is not None: props.SetLineWidth(self.fixes[1])

Legend:
Removed from v.1425  
changed lines
  Added in v.1759

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26