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()
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()
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)
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)
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)
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)