/[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 2325 by jschuengel, Tue Aug 3 11:46:00 2004 UTC revision 2326 by jschuengel, Mon Aug 9 11:38:47 2004 UTC
# Line 42  from Thuban.Model.color import Color, Tr Line 42  from Thuban.Model.color import Color, Tr
42  from Thuban.Model.classification import ClassGroupDefault, \  from Thuban.Model.classification import ClassGroupDefault, \
43                                          ClassGroupSingleton, ClassGroupRange                                          ClassGroupSingleton, ClassGroupRange
44    
 from Thuban.Model.layer import RasterLayer  
 from Extensions.umn_mapserver.mf_import import AnnotationLayer  
   
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                          
48    from Thuban.Model.layer import RasterLayer
49    
50  # ###################################  # ###################################
51  #  #
# Line 519  class MF_Layer: Line 518  class MF_Layer:
518          the class objects in the layer object will be stored in          the class objects in the layer object will be stored in
519          an array. The metadata are created as a new object.          an array. The metadata are created as a new object.
520          """          """
         
521          self._mf_layer = mf_layer          self._mf_layer = mf_layer
522    
523          # Create Classes          # Create Classes
524          # there could be more then 1          # there could be more then 1
         self._numclasses = mf_layer.numclasses  
525          i = -1          i = -1
526          self._classes = []          self._classes = []
527          while i < self._numclasses-1:          while i < self._mf_layer.numclasses-1:
528              i += 1              i += 1
529              self._classes.append(MF_Class(self._mf_layer.getClass(i)))              self._classes.append(MF_Class(self._mf_layer.getClass(i)))
530                            
# Line 536  class MF_Layer: Line 533  class MF_Layer:
533          # Create Metadata          # Create Metadata
534          self._metadata = MF_Metadata(self._mf_layer)          self._metadata = MF_Metadata(self._mf_layer)
535    
536        def get_index(self):
537            return self._mf_layer.index
538    
539      def get_name(self):      def get_name(self):
540          return self._mf_layer.name          return self._mf_layer.name
541            
542      def get_data(self):      def get_data(self):
543          return self._mf_layer.data          return self._mf_layer.data
544            
545      def get_classes(self):      def get_classes(self):
546          return self._classes          return self._classes
547            
548        def set_classes(self, new_classes):
549            self._classes = new_classes
550          
551      def get_metadata(self):      def get_metadata(self):
552          return self._metadata          return self._metadata
553    
554        def set_metadata(self, new_metadata):
555            self._metadata = new_metadata
556            
557      def get_type(self):      def get_type(self):
558          return shp_type[self._mf_layer.type]          return shp_type[self._mf_layer.type]
# Line 564  class MF_Layer: Line 570  class MF_Layer:
570              return False              return False
571          else:          else:
572              return True              return True
         #return self._mf_layer.status  
573            
574      def get_group(self):      def get_group(self):
575          return self._mf_layer.group          return self._mf_layer.group
# Line 572  class MF_Layer: Line 577  class MF_Layer:
577      def set_group(self, new_group):      def set_group(self, new_group):
578          self._mf_layer.group = new_group          self._mf_layer.group = new_group
579            
       
580      def set_name(self, newname):      def set_name(self, newname):
581          self._mf_layer.name = newname          self._mf_layer.name = newname
582            
# Line 581  class MF_Layer: Line 585  class MF_Layer:
585              self._mf_layer.data = newdata              self._mf_layer.data = newdata
586          else:          else:
587              self._mf_layer.data = newdata[:-4]              self._mf_layer.data = newdata[:-4]
           
588            
589      def set_status(self, newstatus):      def set_status(self, newstatus):
590          # status can set to true or false from thuban.          # status can set to true or false from thuban.
# Line 617  class MF_Layer: Line 620  class MF_Layer:
620      def add_thubanclass(self, tb_class, type=""):      def add_thubanclass(self, tb_class, type=""):
621          """          """
622          Add a thuban class object          Add a thuban class object
623          """              """
624          new_class = MF_Class(classObj(self._mf_layer))          new_class = MF_Class(classObj(self._mf_layer))
625            self._classes.append(new_class)
626          # set the class name to the Label form thuban if given,          # set the class name to the Label form thuban if given,
627          # else set it to the value          # else set it to the value
628          if tb_class.GetLabel() != "":          if tb_class.GetLabel() != "":
# Line 698  class MF_Layer: Line 702  class MF_Layer:
702              else:              else:
703                  new_class.set_expressionstring(str(tb_class.GetValue()))                  new_class.set_expressionstring(str(tb_class.GetValue()))
704          new_class.set_status(tb_class.IsVisible())          new_class.set_status(tb_class.IsVisible())
         self._classes.append(new_class)  
705    
706        def remove_allclasses(self):
707            for i in range(0,len(self.get_classes()), 1):
708                self._mf_layer.removeClass(i)
709            self.set_classes([])
710    
711  class MF_Scalebar:  class MF_Scalebar:
712      """      """
# Line 873  class MF_Map: Line 880  class MF_Map:
880          # Create Metadata          # Create Metadata
881          self._metadata = MF_Metadata(self._mf_map)          self._metadata = MF_Metadata(self._mf_map)
882            
883        def create_new_layer(self):
884            """
885            the new layer must create inside the mapobj, because mapscript
886            need the mapscript object as parameter for layerObj
887            """
888            new_layer = MF_Layer(layerObj(self._mf_map))
889            self._layers.append(new_layer)
890            # the new created layer must remove from the mapobject
891            # because all layer will create new in export.
892            #self._mf_map.removeLayer(self._mf_map.numlayers-1)
893            return new_layer  
894        
895      def get_mappath(self):      def get_mappath(self):
896          return self._mf_map.mappath          return self._mf_map.mappath
897            
# Line 945  class MF_Map: Line 964  class MF_Map:
964          # shows the order of layer as list          # shows the order of layer as list
965          return self._mf_map.getLayerOrder()          return self._mf_map.getLayerOrder()
966            
967        def set_layerorder(self, new_order):
968            self._mf_map.setLayerOrder(new_order)
969        
970      def get_size(self):      def get_size(self):
971          #returns the size          #returns the size
972          return (self._mf_map.width, self._mf_map.height)          return (self._mf_map.width, self._mf_map.height)
# Line 977  class MF_Map: Line 999  class MF_Map:
999                                      newextent[2],newextent[3]))                                      newextent[2],newextent[3]))
1000              self._mf_map.setExtent(newextent[0],newextent[1], \              self._mf_map.setExtent(newextent[0],newextent[1], \
1001                                      newextent[2],newextent[3])                                          newextent[2],newextent[3])    
   
1002            
1003      def set_size(self, newwidth, newheight):      def set_size(self, newwidth, newheight):
1004          self._mf_map.width = newwidth          self._mf_map.width = newwidth
# Line 1006  class MF_Map: Line 1027  class MF_Map:
1027          """          """
1028          Add a thuban layer          Add a thuban layer
1029          """          """
1030          new_layer = MF_Layer(layerObj(self._mf_map))          # this import statement placed here, because if it is placed at the
1031            # beginning of this file, it produced the following error:
1032            # NameError: global name 'AnnotationLayer' is not defined
1033            # don't know why this error is produced and why it works
1034            # if it is placed here instead of the beginning.
1035            from Extensions.umn_mapserver.mf_import import AnnotationLayer
1036            if hasattr(tb_layer,"extension_umn_layerobj"):
1037                #print tb_layer.extension_umn_layerobj
1038                #new_layer = MF_Layer(layerObj(self._mf_map))
1039                new_layer = tb_layer.extension_umn_layerobj
1040            else:
1041                new_layer = MF_Layer(layerObj(self._mf_map))
1042                self._layers.append(new_layer)
1043                tb_layer.extension_umn_layerobj = new_layer
1044            new_layer.remove_allclasses()
1045            # init a list to set the layerorder
1046            new_layer.get_index()
1047          new_layer.set_name(tb_layer.Title())          new_layer.set_name(tb_layer.Title())
   
1048          # TODO: implement relative pathnames          # TODO: implement relative pathnames
1049          # yet only absolute pathnames in the LayerObj are set          # yet only absolute pathnames in the LayerObj are set
1050          if isinstance(tb_layer, RasterLayer ):          if isinstance(tb_layer, RasterLayer ):
# Line 1018  class MF_Map: Line 1054  class MF_Map:
1054          elif isinstance(tb_layer, AnnotationLayer):          elif isinstance(tb_layer, AnnotationLayer):
1055              new_layer.set_type("annotation")              new_layer.set_type("annotation")
1056              new_layer.set_status(tb_layer.Visible())              new_layer.set_status(tb_layer.Visible())
1057                new_layer.set_data(tb_layer.ShapeStore().FileName())
1058          else:          else:
1059              new_layer.set_data(tb_layer.ShapeStore().FileName())              new_layer.set_data(tb_layer.ShapeStore().FileName())
1060              new_layer.set_status(tb_layer.Visible())              new_layer.set_status(tb_layer.Visible())
1061              new_layer.set_type(tb_layer.ShapeType())              new_layer.set_type(tb_layer.ShapeType())
           
1062              if tb_layer.GetClassificationColumn():              if tb_layer.GetClassificationColumn():
1063                  new_layer.set_classitem(tb_layer.GetClassificationColumn())                  new_layer.set_classitem(tb_layer.GetClassificationColumn())
1064              if tb_layer.GetProjection():              if tb_layer.GetProjection():
# Line 1045  class MF_Map: Line 1081  class MF_Map:
1081                  new_layer.add_thubanclass( \                  new_layer.add_thubanclass( \
1082                                 tb_layer.GetClassification().GetDefaultGroup(), \                                 tb_layer.GetClassification().GetDefaultGroup(), \
1083                                 type="default")                                 type="default")
         
1084          # set the projection to the layer.          # set the projection to the layer.
1085          # if the layer has its own definition use is,          # if the layer has its own definition use it,
1086             # else use the main projection             # else use the main projection
1087          if tb_layer.GetProjection():          if tb_layer.GetProjection():
1088              new_layer.set_projection(tb_layer.GetProjection())              new_layer.set_projection(tb_layer.GetProjection())
1089          else:          else:
1090              new_layer.set_projection(self._projection.get_projection())              new_layer.set_projection(self._projection.get_projection())
         self._layers.append(new_layer)  
1091            
1092      def remove_layer(self, nr):      def remove_layer(self, delnr):
1093          #remove the last layer from the layer list and not the one which          if delnr < len(self._layers):
1094          # is removed in mapscript. This must be, becaus mapscript              # if a layer is removed, the links for the mapscript layer and
1095          # set the object links anew. Don't understand really :)              # the metadata must set new
1096          self._layers.pop()              # TODO: All other object in a layer obj must set a new, e.g proj.
1097          self._mf_map.removeLayer(nr)              for ll in range(len(self._layers)-1, delnr, -1):
1098                        self._layers[ll]._mf_layer = self._layers[ll-1]._mf_layer
1099      def remove_all_layers(self):                  self._layers[ll].set_metadata(self._layers[ll-1].get_metadata())
1100          for i in range (self._mf_map.numlayers,0,-1):                
1101              self.remove_layer(i-1)              self._mf_map.removeLayer(delnr)
1102                self._layers.pop(delnr)
1103            
1104      def save_map(self, filepath):      def save_map(self, filepath):
1105          # save the Map          # save the Map

Legend:
Removed from v.2325  
changed lines
  Added in v.2326

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26