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

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

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

revision 1389 by jonathan, Thu Jul 10 14:53:27 2003 UTC revision 1662 by bh, Wed Aug 27 13:51:01 2003 UTC
# Line 132  class DBFTable(TitledObject, OldTableInt Line 132  class DBFTable(TitledObject, OldTableInt
132      # work because a DBF file object buffers some data      # work because a DBF file object buffers some data
133    
134      def __init__(self, filename):      def __init__(self, filename):
135          self.filename = filename          self.filename = os.path.abspath(filename)
136    
137          # Omit the extension in the title as it's not really needed and          # Omit the extension in the title as it's not really needed and
138          # it can be confusing because dbflib removes extensions and          # it can be confusing because dbflib removes extensions and
# Line 187  class DBFTable(TitledObject, OldTableInt Line 187  class DBFTable(TitledObject, OldTableInt
187          """          """
188          return self.column_map.has_key(col)          return self.column_map.has_key(col)
189    
190      def ReadRowAsDict(self, row):      def RowIdToOrdinal(self, gid):
191          """Return the entire row as a dictionary with column names as keys"""          """Return the row ordinal given its id
192    
193            Since for DBFTables the row id is the row number, return the
194            value unchanged.
195            """
196            return gid
197    
198        def RowOrdinalToId(self, num):
199            """Return the rowid for given its ordinal
200    
201            Since for DBFTables the row id is the row number, return the
202            value unchanged.
203            """
204            return num
205    
206        def ReadRowAsDict(self, row, row_is_ordinal = 0):
207            """Return the entire row as a dictionary with column names as keys
208    
209            The row_is_ordinal is ignored for DBF tables because the row id
210            is always the row number.
211            """
212          return self.dbf.read_record(row)          return self.dbf.read_record(row)
213    
214      def ReadValue(self, row, col):      def ReadValue(self, row, col, row_is_ordinal = 0):
215          """Return the value of the specified row and column          """Return the value of the specified row and column
216    
217          The col parameter may be the index of the column or its name.          The col parameter may be the index of the column or its name.
218    
219            The row_is_ordinal is ignored for DBF tables because the row id
220            is always the row number.
221          """          """
222          return self.dbf.read_record(row)[self.column_map[col].name]          return self.dbf.read_record(row)[self.column_map[col].name]
223    
# Line 331  class MemoryTable(TitledObject, OldTable Line 354  class MemoryTable(TitledObject, OldTable
354          """Return the number of rows in the table"""          """Return the number of rows in the table"""
355          return len(self.data)          return len(self.data)
356    
357      def ReadValue(self, row, col):      def RowIdToOrdinal(self, gid):
358            """Return the row ordinal given its id
359    
360            Since for MemoryTables the row id is the row number, return the
361            value unchanged.
362            """
363            return gid
364    
365        def RowOrdinalToId(self, num):
366            """Return the rowid for given its ordinal
367    
368            Since for MemoryTables the row id is the row number, return the
369            value unchanged.
370            """
371            return num
372    
373        def ReadValue(self, row, col, row_is_ordinal = 0):
374          """Return the value of the specified row and column          """Return the value of the specified row and column
375    
376          The col parameter may be the index of the column or its name.          The col parameter may be the index of the column or its name.
377    
378            The row_is_ordinal is ignored for DBF tables because the row id
379            is always the row number.
380          """          """
381          return self.data[row][self.column_map[col].index]          return self.data[row][self.column_map[col].index]
382    
383      def ReadRowAsDict(self, index):      def ReadRowAsDict(self, index, row_is_ordinal = 0):
384          """Return the entire row as a dictionary with column names as keys"""          """Return the entire row as a dictionary with column names as keys
385    
386            The row_is_ordinal is ignored for DBF tables because the row id
387            is always the row number.
388            """
389          return dict([(col.name, self.data[index][col.index])          return dict([(col.name, self.data[index][col.index])
390                        for col in self.columns])                        for col in self.columns])
391    
# Line 465  def _find_dbf_column_names(names): Line 511  def _find_dbf_column_names(names):
511    
512      return name_map      return name_map
513    
514  def table_to_dbf(table, filename, records = None):  def table_to_dbf(table, filename, rows = None):
515      """Create the dbf file filename from the table"""      """Create the dbf file filename from the table.
516        
517        If rows is not None (the default) then it must be a list of row
518        indices to be saved to the file, otherwise all rows are saved.
519        """
520    
521      dbf = dbflib.create(filename)      dbf = dbflib.create(filename)
522    
523      dbflib_fieldtypes = {FIELDTYPE_STRING: dbflib.FTString,      dbflib_fieldtypes = {FIELDTYPE_STRING: dbflib.FTString,
# Line 486  def table_to_dbf(table, filename, record Line 537  def table_to_dbf(table, filename, record
537          dbf.add_field(name_map[col.name], dbflib_fieldtypes[col.type],          dbf.add_field(name_map[col.name], dbflib_fieldtypes[col.type],
538                        width, prec)                        width, prec)
539    
540      if records is None:      if rows is None:
541          records = range(table.NumRows())          rows = range(table.NumRows())
542    
543      recNum = 0      recNum = 0
544      for i in records:      for i in rows:
545          record = {}          record = {}
546          for key, value in table.ReadRowAsDict(i).items():          for key, value in table.ReadRowAsDict(i).items():
547              record[name_map[key]] = value              record[name_map[key]] = value
# Line 498  def table_to_dbf(table, filename, record Line 549  def table_to_dbf(table, filename, record
549          recNum += 1          recNum += 1
550      dbf.close()      dbf.close()
551    
552  def table_to_csv(table, filename, records = None):  def table_to_csv(table, filename, rows = None):
553      """Export table to csv file."""      """Export table to csv file.
554        
555        If rows is not None (the default) then it must be a list of row
556        indices to be saved to the file, otherwise all rows are saved.
557        """
558    
559      file = open(filename,"w")      file = open(filename,"w")
560      columns = table.Columns()      columns = table.Columns()
# Line 510  def table_to_csv(table, filename, record Line 565  def table_to_csv(table, filename, record
565          header = header + "\n"          header = header + "\n"
566          file.write(header)          file.write(header)
567    
568          if records is None:          if rows is None:
569              records = range(table.NumRows())              rows = range(table.NumRows())
570    
571          for i in records:          for i in rows:
572              record = table.ReadRowAsDict(i)              record = table.ReadRowAsDict(i)
573              if len(record):              if len(record):
574                  line = "%s" % record[columns[0].name]                  line = "%s" % record[columns[0].name]

Legend:
Removed from v.1389  
changed lines
  Added in v.1662

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26