예제 #1
0
 def set_table(self, arch):
     attrs = OrderedDict({
         '__tablename__':
         'stats',
         'ocgid':
         Column(Integer, primary_key=True),
         'gid':
         Column(Integer, ForeignKey(self.db.Geometry.gid)),
         'level':
         Column(Integer, nullable=False, index=True)
     })
     for key, value in arch.iteritems():
         if key in ['gid', 'level']: continue
         if key in ['day', 'month', 'year']:
             index = True
         else:
             index = False
         attrs.update({
             key:
             Column(self.__types[type(value[0])],
                    nullable=False,
                    index=index)
         })
     try:
         self.db.Stat = type('Stat', (self.db.AbstractValue, self.db.Base),
                             attrs)
     except InvalidRequestError:
         self.db.metadata.remove(self.db.Stat.__table__)
         self.db.Stat = type('Stat', (self.db.AbstractValue, self.db.Base),
                             attrs)
     try:
         self.db.Stat.__table__.create()
     except OperationalError:
         self.db.Stat.__table__.drop()
         self.db.Stat.__table__.create()
예제 #2
0
 def set_table(self,arch):
     attrs = OrderedDict({'__tablename__':'stats',
                          'ocgid':Column(Integer,primary_key=True),
                          'gid':Column(Integer,ForeignKey(self.db.Geometry.gid)),
                          'level':Column(Integer,nullable=False,index=True)})
     for key,value in arch.iteritems():
         if key in ['gid','level']: continue
         if key in ['day','month','year']:
             index = True
         else:
             index = False
         attrs.update({key:Column(self.__types[type(value[0])],
                                        nullable=False,
                                        index=index)})
     try:
         self.db.Stat = type('Stat',
                             (self.db.AbstractValue,self.db.Base),
                             attrs)
     except InvalidRequestError:
         self.db.metadata.remove(self.db.Stat.__table__)
         self.db.Stat = type('Stat',
                             (self.db.AbstractValue,self.db.Base),
                             attrs)
     try:
         self.db.Stat.__table__.create()
     except OperationalError:
         self.db.Stat.__table__.drop()
         self.db.Stat.__table__.create()
예제 #3
0
 def iter_time(self,expand=True):
     for dt in self.dim_time:
         d = OrderedDict(zip(['TID','TIME'],[int(self.tid[dt]),self.timevec[dt]]))
         if expand:
             attrs = ['YEAR','MONTH','DAY']
             for attr in attrs:
                 d.update({attr:getattr(d['TIME'],attr.lower())})
         yield(d)
예제 #4
0
 def iter_stats(self,caps=True,keep_geom=True,wkt=False,wkb=False):
     if caps:
         keys = [k.upper() for k in self.stats.keys()]
     else:
         keys = self.stats.keys()
     if not keep_geom:
         keys.remove('GEOMETRY')
     keys.insert(0,'OCGID')
     for ii in range(0,len(self.stats['gid'])):
         d = OrderedDict(zip(keys,
                         [ii+1] + [self.stats[k.lower()][ii] for k in keys[1:]]))
         if wkt:
             d.update({'WKT':self.stats['geometry'][ii][0].wkt})
         if wkb:
             d.update({'WKT':self.stats['geometry'][ii][0].wkb})
         yield(d)
예제 #5
0
 def iter_geom_with_area(self,area_srid=3005,keep_geom=True,wkt=False,wkb=False):
     sr_orig = get_sr(4326)
     sr_dest = get_sr(area_srid)
     for gid,geom in zip(self.gid,self.geometry):
         if keep_geom:
             d = OrderedDict(zip(
                 ['GID','AREA_M2','geometry'],
                 [int(gid),get_area(geom,sr_orig,sr_dest),geom]))
         else:
             d = OrderedDict(zip(
                 ['GID','AREA_M2'],
                 [int(gid),get_area(geom,sr_orig,sr_dest)]))
         if wkt:
             d.update(dict(WKT=geom.wkt))
         if wkb:
             d.update(dict(WKB=geom.wkb))
         yield(d)
예제 #6
0
 def iter_stats(self, caps=True, keep_geom=True, wkt=False, wkb=False):
     if caps:
         keys = [k.upper() for k in self.stats.keys()]
     else:
         keys = self.stats.keys()
     if not keep_geom:
         keys.remove('GEOMETRY')
     keys.insert(0, 'OCGID')
     for ii in range(0, len(self.stats['gid'])):
         d = OrderedDict(
             zip(keys,
                 [ii + 1] + [self.stats[k.lower()][ii] for k in keys[1:]]))
         if wkt:
             d.update({'WKT': self.stats['geometry'][ii][0].wkt})
         if wkb:
             d.update({'WKT': self.stats['geometry'][ii][0].wkb})
         yield (d)