Пример #1
0
 def __init__(self,
              data=None,
              start=None,
              end=None,
              periods=None,
              freq='D',
              index=None):
     if index is None:
         if not data is None:
             if isinstance(data, MIArray):
                 data = data.aslist()
             self.data = data
             if isinstance(data[0], datetime.datetime):
                 self._index = MIDateTimeIndex(miutil.jdate(data))
             else:
                 self._index = MIDateTimeIndex(data)
         else:
             if start is None:
                 self._index = MIDateTimeIndex(periods, end, freq)
             elif end is None:
                 self._index = MIDateTimeIndex(start, periods, freq)
             else:
                 self._index = MIDateTimeIndex(start, end, freq)
             self.data = miutil.pydate(list(self._index.getDateValues()))
     else:
         self._index = index
         self.data = miutil.pydate(list(self._index.getDateValues()))
Пример #2
0
 def gettimes(self):
     '''
     Get time list.
     '''
     tt = self.dataset.getDataInfo().getTimes()
     times = []
     for t in tt:
         times.append(miutil.pydate(t))
     return times
Пример #3
0
 def gettime(self, idx):
     '''
     Get time by index.
     
     :param idx: (*int*) Time index.
     
     :returns: (*datetime*) The time
     '''
     t = self.dataset.getDataInfo().getTimes().get(idx)
     t = miutil.pydate(t)
     return t
Пример #4
0
 def __init__(self, data=None, start=None, end=None, periods=None, freq='D', index=None):
     if index is None:
         if not data is None:
             if isinstance(data, MIArray):
                 data = data.aslist()
             self.data = data
             if isinstance(data[0], datetime.datetime):
                 self._index = MIDateTimeIndex(miutil.jdate(data))
             else:
                 self._index = MIDateTimeIndex(data)
         else:
             if start is None:
                 self._index = MIDateTimeIndex(periods, end, freq)
             elif end is None:
                 self._index = MIDateTimeIndex(start, periods, freq)
             else:
                 self._index = MIDateTimeIndex(start, end, freq)
             self.data = miutil.pydate(list(self._index.getDateValues()))
     else:
         self._index = index
         self.data = miutil.pydate(list(self._index.getDateValues()))
Пример #5
0
 def getvalue(self, row, col):
     '''
     Return a value in the table.
     
     :param row: (*int*) Row index.
     :param col: (*int*) Column index.
     
     :returns: The value at the row and column.
     '''
     r = self.data.getValue(row, col)
     if isinstance(r, Date):
         r = miutil.pydate(r)
     return r
Пример #6
0
 def getvalue(self, row, col):
     '''
     Return a value in the table.
     
     :param row: (*int*) Row index.
     :param col: (*int*) Column index.
     
     :returns: The value at the row and column.
     '''
     r = self.data.getValue(row, col)
     if isinstance(r, Date):
         r = miutil.pydate(r)
     return r
Пример #7
0
 def cellvalue(self, fieldname, shapeindex):
     '''
     Get attribute table cell value.
     
     :param fieldname: (*string*) Field name.
     :param shapeindex: (*int*) Shape index.
     
     :returns: The value in attribute table identified by field name and shape index.
     '''
     v = self.layer.getCellValue(fieldname, shapeindex)
     if isinstance(v, LocalDateTime):
         dt = miutil.pydate(v)
         return dt
     else:
         return v
Пример #8
0
 def get_values(self):
     if isinstance(self._data[0], Date):
         return miutil.pydate(self._data.aslist())
     else:
         return self._data
Пример #9
0
 def get_values(self):
     if isinstance(self._data[0], Date):
         return miutil.pydate(self._data.aslist())
     else:
         return self._data
Пример #10
0
 def __getitem__(self, key):
     if isinstance(key, basestring):     
         coldata = self.data.getColumnData(key)
         if coldata.getDataType().isNumeric():
             return NDArray(ArrayUtil.array(coldata.getDataValues()))
         elif coldata.getDataType() == DataType.DATE:
             vv = coldata.getData()
             r = []
             for v in vv:
                 dt = miutil.pydate(v)
                 r.append(dt)
             return r
         else:
             return NDArray(ArrayUtil.array(coldata.getData()))
                     
     hascolkey = True
     if isinstance(key, tuple): 
         ridx = key[0]
         cidx = key[1]
         if isinstance(ridx, int) and isinstance(cidx, int):
             if ridx < 0:
                 ridx = self.shape[0] + ridx
             if cidx < 0:
                 cidx = self.shape[1] + cidx
             return self.data.getValue(ridx, cidx)
         elif isinstance(ridx, int) and isinstance(cidx, basestring):
             if ridx < 0:
                 ridx = self.shape[0] + ridx
             return self.data.getValue(ridx, cidx)
     else:
         key = (key, slice(None))
         hascolkey = False
         
     k = key[0]
     if isinstance(k, int):
         sidx = k
         if sidx < 0:
             sidx = self.shape[0] + sidx
         eidx = sidx + 1
         step = 1
         rowkey = Range(sidx, eidx, step)
     elif isinstance(k, slice):
         if isinstance(k.start, basestring):
             t = miutil.str2date(k.start)
             t = miutil.jdate(t)
             sidx = self.data.getTimeIndex(t)
             if sidx < 0:
                 sidx = 0
         else:
             sidx = 0 if k.start is None else k.start
             if sidx < 0:
                 sidx = self.shape[0] + sidx
         if isinstance(k.stop, basestring):
             t = miutil.str2date(k.stop)
             t = miutil.jdate(t)
             eidx = self.data.getTimeIndex(t) + 1
             if eidx < 0:
                 eidx = self.shape[0]
         else:
             eidx = self.shape[0] if k.stop is None else k.stop
             if eidx < 0:
                 eidx = self.shape[0] + eidx                    
         step = 1 if k.step is None else k.step
         rowkey = Range(sidx, eidx, step)
     elif isinstance(k, list):
         if isinstance(k[0], basestring):
             tlist = []
             for tstr in k:
                 t = miutil.jdate(miutil.str2date(tstr))
                 idx = self.data.getTimeIndex_Ex(t)
                 if idx >= 0:
                     tlist.append(idx)
             rowkey = tlist
         else:
             rowkey = k
     else:
         return None
                
     tcolname = self.data.getTimeColName()
     if not hascolkey:
         r = self.data.select(rowkey)
         if r.findColumn(tcolname) is None:
             r = TableData(r)
         else:
             r = TimeTableData(r, tcolname)
         return PyTableData(r)
         
     k = key[1]
     if isinstance(k, int):
         sidx = k
         if sidx < 0:
             sidx = self.shape[1] + sidx
         eidx = sidx + 1
         step = 1
         colkey = Range(sidx, eidx, step)
     elif isinstance(k, slice):
         sidx = 0 if k.start is None else k.start
         if sidx < 0:
             sidx = self.shape[1] + sidx
         eidx = self.shape[1] if k.stop is None else k.stop
         if eidx < 0:
             eidx = self.shape[1] + eidx                    
         step = 1 if k.step is None else k.step
         colkey = Range(sidx, eidx, step)        
     elif isinstance(k, list):
         if isinstance(k[0], basestring):
             cols = self.data.findColumns(k)
         else:
             cols = self.data.findColumns_Index(k)
         colkey = cols
     elif isinstance(k, basestring):
         rows = self.data.getRows(rowkey)
         coldata = self.data.getColumnData(rows, k)
         if coldata.getDataType().isNumeric():
             return NDArray(ArrayUtil.array(coldata.getDataValues()))
         else:
             return NDArray(ArrayUtil.array(coldata.getData()))
     else:
         return None
     
     r = self.data.select(rowkey, colkey)
     if r.findColumn(tcolname) is None:
         r = TableData(r)
     else:
         r = TimeTableData(r, tcolname)
     return PyTableData(r)