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

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

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

revision 1282 by bh, Mon Jun 23 09:47:18 2003 UTC revision 1408 by frank, Mon Jul 14 09:38:29 2003 UTC
# Line 24  from Thuban import _ Line 24  from Thuban import _
24  from Thuban.Model.table import FIELDTYPE_INT, FIELDTYPE_DOUBLE, \  from Thuban.Model.table import FIELDTYPE_INT, FIELDTYPE_DOUBLE, \
25       FIELDTYPE_STRING       FIELDTYPE_STRING
26    
27    from Thuban.Model.color import Color, Transparent
28    
29  from Thuban.Model.session import Session  from Thuban.Model.session import Session
30  from Thuban.Model.map import Map  from Thuban.Model.map import Map
31  from Thuban.Model.layer import Layer, RasterLayer  from Thuban.Model.layer import Layer, RasterLayer
 from Thuban.Model.color import Color  
32  from Thuban.Model.proj import Projection  from Thuban.Model.proj import Projection
33  from Thuban.Model.range import Range  from Thuban.Model.range import Range
34  from Thuban.Model.classification import Classification, \  from Thuban.Model.classification import Classification, \
# Line 51  def parse_color(color): Line 52  def parse_color(color):
52      """      """
53      color = string.strip(color)      color = string.strip(color)
54      if color == "None":      if color == "None":
55          result = Color.Transparent          result = Transparent
56      elif color[0] == '#':      elif color[0] == '#':
57          if len(color) == 7:          if len(color) == 7:
58              r = string.atoi(color[1:3], 16) / 255.0              r = string.atoi(color[1:3], 16) / 255.0
# Line 119  class SessionLoader(XMLReader): Line 120  class SessionLoader(XMLReader):
120              'labellayer'    : ("start_labellayer",     None),              'labellayer'    : ("start_labellayer",     None),
121              'label'         : ("start_label",          None)}              'label'         : ("start_label",          None)}
122    
123          # all dispatchers should be used for the 0.8 namespace          # all dispatchers should be used for the 0.8 and 0.9 namespaces too
124          xmlns = "http://thuban.intevation.org/dtds/thuban-0.8.dtd"          for xmlns in ("http://thuban.intevation.org/dtds/thuban-0.8.dtd",
125          for key, value in dispatchers.items():                        "http://thuban.intevation.org/dtds/thuban-0.9-dev.dtd"):
126              dispatchers[(xmlns, key)] = value              for key, value in dispatchers.items():
127                    dispatchers[(xmlns, key)] = value
128    
129          XMLReader.AddDispatchers(self, dispatchers)          XMLReader.AddDispatchers(self, dispatchers)
130    
# Line 248  class SessionLoader(XMLReader): Line 250  class SessionLoader(XMLReader):
250                                    AttrDesc("left", True, conversion="table"),                                    AttrDesc("left", True, conversion="table"),
251                                    AttrDesc("leftcolumn", True),                                    AttrDesc("leftcolumn", True),
252                                    AttrDesc("right", True, conversion="table"),                                    AttrDesc("right", True, conversion="table"),
253                                    AttrDesc("rightcolumn")])                                    AttrDesc("rightcolumn", True),
254    
255                                      # jointype is required for file
256                                      # version 0.9 but this attribute
257                                      # wasn't in the 0.8 version because of
258                                      # an oversight so we assume it's
259                                      # optional since we want to handle
260                                      # both file format versions here.
261                                      AttrDesc("jointype", False,
262                                               default="INNER")])
263    
264            jointype = attrs["jointype"]
265            if jointype == "LEFT OUTER":
266                outer_join = True
267            elif jointype == "INNER":
268                outer_join = False
269            else:
270                raise LoadError("jointype %r not supported" % jointype )
271          table = TransientJoinedTable(self.theSession.TransientDB(),          table = TransientJoinedTable(self.theSession.TransientDB(),
272                                       attrs["left"], attrs["leftcolumn"],                                       attrs["left"], attrs["leftcolumn"],
273                                       attrs["right"], attrs["rightcolumn"])                                       attrs["right"], attrs["rightcolumn"],
274                                         outer_join = outer_join)
275          table.SetTitle(attrs["title"])          table.SetTitle(attrs["title"])
276          self.idmap[attrs["id"]] = self.theSession.AddTable(table)          self.idmap[attrs["id"]] = self.theSession.AddTable(table)
277    
278      def start_map(self, name, qname, attrs):      def start_map(self, name, qname, attrs):
279          """Start a map."""          """Start a map."""
280          self.aMap = Map(attrs.get((None, 'title'), None))          self.aMap = Map(self.encode(attrs.get((None, 'title'), None)))
281    
282      def end_map(self, name, qname):      def end_map(self, name, qname):
283          self.theSession.AddMap(self.aMap)          self.theSession.AddMap(self.aMap)
# Line 343  class SessionLoader(XMLReader): Line 363  class SessionLoader(XMLReader):
363          elif fieldType == FIELDTYPE_DOUBLE:          elif fieldType == FIELDTYPE_DOUBLE:
364              self.conv = float              self.conv = float
365    
366          self.aLayer.GetClassification().SetField(field)          self.aLayer.GetClassification().SetFieldInfo(field, fieldType)
367    
368      def end_classification(self, name, qname):      def end_classification(self, name, qname):
369          pass          pass
# Line 384  class SessionLoader(XMLReader): Line 404  class SessionLoader(XMLReader):
404              if range is not None:              if range is not None:
405                  self.cl_group = ClassGroupRange(Range(range))                  self.cl_group = ClassGroupRange(Range(range))
406              elif min is not None and max is not None:              elif min is not None and max is not None:
407                  self.cl_group = ClassGroupRange(self.conv(min), self.conv(max))                  self.cl_group = ClassGroupRange((self.conv(min),
408                                                     self.conv(max)))
409              else:              else:
410                  self.cl_group = ClassGroupRange(Range(None))                  self.cl_group = ClassGroupRange(Range(None))
411    

Legend:
Removed from v.1282  
changed lines
  Added in v.1408

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26