/[thuban]/trunk/thuban/Extensions/umn_mapserver/mapfile.py
ViewVC logotype

Diff of /trunk/thuban/Extensions/umn_mapserver/mapfile.py

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

revision 2283 by jschuengel, Thu Jul 8 14:26:56 2004 UTC revision 2284 by jschuengel, Wed Jul 14 10:38:08 2004 UTC
# Line 39  import os Line 39  import os
39    
40  from Thuban.Model.color import Color, Transparent  from Thuban.Model.color import Color, Transparent
41    
42    from Thuban.Model.classification import ClassGroupDefault, \
43                                            ClassGroupSingleton, ClassGroupRange
44    
45  from mapscript import layerObj, classObj, colorObj, styleObj, rectObj, symbolObj, \  from mapscript import layerObj, classObj, colorObj, styleObj, rectObj, symbolObj, \
46                        pointObj, lineObj                        pointObj, lineObj
47    
# Line 354  class MF_SymbolSet: Line 357  class MF_SymbolSet:
357                    
358          # Initial Symbol List          # Initial Symbol List
359          self._symbols = []          self._symbols = []
         self._numsymbols = self._symbolset.numsymbols  
360          self._i = 1          self._i = 1
361          while self._i < self._numsymbols:          while self._i < self._symbolset.numsymbols:
362              self._symbols.append(MF_Symbol(self._symbolset.getSymbol(self._i)))              self._symbols.append(MF_Symbol(self._symbolset.getSymbol(self._i)))
363              self._i += 1              self._i += 1
364    
# Line 370  class MF_SymbolSet: Line 372  class MF_SymbolSet:
372          os.remove("tempsymbol")          os.remove("tempsymbol")
373    
374      def get_symbol(self, symbolnr):      def get_symbol(self, symbolnr):
375          if symbolnr < self._numsymbols:          if symbolnr < self._symbolset.numsymbols:
376              return self._symbols[symbolnr-1]              return self._symbols[symbolnr-1]
377          else:          else:
378              return None              return None
# Line 409  class MF_Class: Line 411  class MF_Class:
411              self._expression = self._clazz.getExpressionString()              self._expression = self._clazz.getExpressionString()
412                    
413          self.metadata = MF_Metadata()          self.metadata = MF_Metadata()
414            # try to get the first metaDatakey. If it does not exists, the following
415            # error will occur:
416            # MapServerError: getFirstMetaDataKey: Hash table error. Key  does not exist
417          try:          try:
418              self.metafkey = mf_class.getFirstMetaDataKey()              self.metafkey = mf_class.getFirstMetaDataKey()
419          except:          except:
# Line 522  class MF_Layer: Line 527  class MF_Layer:
527                            
528          self._projection = MF_Projection(self._mf_layer.getProjection())          self._projection = MF_Projection(self._mf_layer.getProjection())
529                    
         # Variable extent will not used for RasterLayer  
         # this variable is not necessary, because it comes directly  
         # from the shp file  
         try:  
             self._extent = MF_Rectangle(self._mf_layer.getExtent())  
         except:  
             self._extent = None  
   
530          # Create Metadata          # Create Metadata
531          self._metadata = MF_Metadata()          self._metadata = MF_Metadata()
532          try:          try:
# Line 613  class MF_Layer: Line 610  class MF_Layer:
610      def add_thubanclass(self, tb_class, type=""):      def add_thubanclass(self, tb_class, type=""):
611          """          """
612          Add a thuban class object          Add a thuban class object
613          """          """      
614          new_class = MF_Class(classObj(self._mf_layer))          new_class = MF_Class(classObj(self._mf_layer))
615          new_class.set_name(tb_class.GetLabel())          # set the class name to the Label form thuban if given,
616            # else set it to the value
617            if tb_class.GetLabel() != "":
618                new_class.set_name(tb_class.GetLabel())
619            else:
620                if isinstance(tb_class, ClassGroupDefault):
621                    new_class.set_name("default")
622                elif isinstance(tb_class, ClassGroupSingleton):
623                    new_class.set_name(str(tb_class.GetValue()))
624                else:
625                    # TODO: set a name if the expression is a ogical                
626                    new_class.set_name("no name")
627          if self.get_type() == "line":          if self.get_type() == "line":
628              new_class.add_thubanstyle(tb_class.GetProperties(), type="line")              new_class.add_thubanstyle(tb_class.GetProperties(), type="line")
629          elif self.get_type() == "point":          elif self.get_type() == "point":
# Line 624  class MF_Layer: Line 632  class MF_Layer:
632              new_class.add_thubanstyle(tb_class.GetProperties())              new_class.add_thubanstyle(tb_class.GetProperties())
633          if (type == "default"):          if (type == "default"):
634              return              return
635            # removed the following two lines to check if the expressionstring
636            # is needed for points, because if expressionstring is a range type,
637            # no expressionstring in the default group is allowed
638          elif (tb_class.Matches("DEFAULT")):          elif (tb_class.Matches("DEFAULT")):
639              new_class.set_expressionstring('/./')              return
640               # new_class.set_expressionstring('/./')
641          else:          else:
642              new_class.set_expressionstring(str(tb_class.GetValue()))              #check which type of expression
643                if isinstance(tb_class, ClassGroupRange):
644                    # get the needed infos from the Range-String
645                    self._range_begin = tb_class.GetRange()[0]
646                    self._range_min = str(tb_class.GetMin())
647                    self._range_max = str(tb_class.GetMax())
648                    self._range_end = tb_class.GetRange()[len(tb_class.GetRange())-1]
649                    self._range_umn = ""
650                    self._range_classitem = self.get_classitem()
651                    # generate the operator
652                    if self._range_begin == "[":
653                        self._range_op1 = ">="
654                    elif self._range_begin == "]":
655                        self._range_op1 = ">"
656                    else:
657                        print "error in Thuban class properties"
658                    #build op1 string for the lower limit
659                    self._range_op1 = "[" + self._range_classitem + "] " + \
660                                     self._range_op1 + " " +\
661                                     self._range_min
662                    # build op2 string for the upper limit
663                    if self._range_end == "[":
664                        self._range_op2 = "<"
665                    elif self._range_end == "]":
666                        self._range_op2 = "<="
667                    else:
668                        print "error in Thuban class properties"
669    
670                    self._range_op2 = "[" + self._range_classitem + "] " + \
671                                     self._range_op2 + " " +\
672                                     self._range_max
673                    # we only need AND here at the moment, becaus of the limits
674                    # in thuban
675                    self._range_combine = "AND"
676                    # check if the one limit is set to inf and then
677                    # remove the second expression becaus is not needed.
678                    if self._range_min == "-inf":
679                        self._range_combine = ""
680                        self._range_op1 = ""
681                    elif self._range_max == "inf":
682                        self._range_combine = ""
683                        self._range_op2 = ""
684                    # build the expression together
685                    self._range_umn = "(" + self._range_umn + \
686                                     self._range_op1 + " " +\
687                                     self._range_combine + \
688                                     self._range_op2 + " )"
689                    #set the expression to the mapscript
690                    new_class.set_expressionstring(self._range_umn)
691                else:
692                    new_class.set_expressionstring(str(tb_class.GetValue()))
693          new_class.set_status(tb_class.IsVisible())          new_class.set_status(tb_class.IsVisible())
694          self._classes.append(new_class)          self._classes.append(new_class)
695    
# Line 894  class MF_Map: Line 956  class MF_Map:
956            
957      def set_extent(self, newextent):      def set_extent(self, newextent):
958          # TODO: add the shown extend here instead of the total          # TODO: add the shown extend here instead of the total
959          self._newrect = MF_Rectangle(rectObj())          # if no size is set or if it is zero, the size will set to 1.
960          try:          if self.get_size()[0] == - 1:
961              self._newrect.set_rect(newextent[0],newextent[1], \              print "define the size first to set extent"
962                                     newextent[2],newextent[3])              print "size is now set to (1,1)"
963              self._mf_map.setExtent(newextent[0],newextent[1], \              self.set_size(1,1)
964            self._newrect = MF_Rectangle(rectObj(newextent[0],newextent[1], \
965                                       newextent[2],newextent[3]))
966            self._mf_map.setExtent(newextent[0],newextent[1], \
967                                     newextent[2],newextent[3])                                     newextent[2],newextent[3])
968          except:  
             return  
969            
970      def set_size(self, newwidth, newheight):      def set_size(self, newwidth, newheight):
971          self._mf_map.width = newwidth          self._mf_map.width = newwidth
# Line 950  class MF_Map: Line 1014  class MF_Map:
1014              if tb_layer.GetProjection():              if tb_layer.GetProjection():
1015                  new_layer.set_projection(tb_layer.GetProjection())                  new_layer.set_projection(tb_layer.GetProjection())
1016              if tb_layer.GetClassification().GetNumGroups() > 0:              if tb_layer.GetClassification().GetNumGroups() > 0:
1017                    singletonexists = False
1018                  for group in range(0, \                  for group in range(0, \
1019                                  tb_layer.GetClassification().GetNumGroups(), 1):                                  tb_layer.GetClassification().GetNumGroups(), 1):
1020                        if isinstance(tb_layer.GetClassification().GetGroup(group), \
1021                                        ClassGroupSingleton):
1022                            singletonexists = True
1023                      new_layer.add_thubanclass( \                      new_layer.add_thubanclass( \
1024                                     tb_layer.GetClassification().GetGroup(group))                                     tb_layer.GetClassification().GetGroup(group))
1025                  new_layer.add_thubanclass( \                  new_layer.add_thubanclass( \
1026                                   tb_layer.GetClassification().GetDefaultGroup())                                   tb_layer.GetClassification().GetDefaultGroup())
1027                    # remove the classitem if one singleton exists
1028                    if singletonexists == False:
1029                        new_layer.set_classitem(None)
1030              else:              else:
1031                  new_layer.add_thubanclass( \                  new_layer.add_thubanclass( \
1032                                 tb_layer.GetClassification().GetDefaultGroup(), \                                 tb_layer.GetClassification().GetDefaultGroup(), \
# Line 1003  class MF_Web: Line 1074  class MF_Web:
1074            
1075      def get_imageurl(self):      def get_imageurl(self):
1076          return self._mf_web.imageurl          return self._mf_web.imageurl
1077        
1078        def get_template(self):
1079            return self._mf_web.template
1080        
1081        def set_template(self, new_template):
1082            self._mf_web.template = new_template
1083    
1084      def set_imageurl(self, new_imageurl):      def set_imageurl(self, new_imageurl):
1085          self._mf_web.imageurl = new_imageurl          self._mf_web.imageurl = new_imageurl

Legend:
Removed from v.2283  
changed lines
  Added in v.2284

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26