示例#1
0
class BaseAttr(db.Model):
    __abstract__ = True
    __table_args__ = {"schema": "attrs"}
    id = db.Column(db.String(10), primary_key=True)
    name = db.Column(db.String())
    HEADERS = ["id", "name"]
    median_moe = 0

    @classmethod
    def get_supported_levels(cls):
        return {}

    def serialize(self):
        return {
            key: val
            for key, val in self.__dict__.items() if not key.startswith("_")
        }

    def data_serialize(self):
        return [self.id, self.name]

    def __repr__(self):
        return '<{}, id: {}, name: {}>'.format(self.__class__, self.id,
                                               self.name)

    @staticmethod
    def is_attr():
        return True
示例#2
0
class PovertyGeo(JoinableAttr, BaseModel):
    __tablename__ = 'poverty_geo'
    iso3 = db.Column(db.String)
    poverty_geo_parent_name = db.Column(db.String)
    poverty_geo = db.Column(db.String, primary_key=True)
    poverty_geo_name = db.Column(db.String)

    @classmethod
    def get_supported_levels(cls):
        return {"poverty_geo": ['all', 'adm0', 'adm1']}
示例#3
0
class DHSGeo(JoinableAttr, BaseModel):
    __tablename__ = 'dhs_geo'
    dhs_geo = db.Column(db.String, primary_key=True)
    dhs_geo_name = db.Column(db.String)

    regcode = db.Column(db.String)
    iso2 = db.Column(db.String)
    start_year = db.Column(db.Integer)

    dhs_geo_parent_name = column_property(
        select([Geo.name]).where(and_(Geo.iso2 == iso2, Geo.level == 'adm0')))
示例#4
0
class Survey_Yg(BasePoverty):
    __tablename__ = "survey_yg"
    median_moe = 1

    year = db.Column(db.Integer(), primary_key=True)
    poverty_geo = db.Column(db.String(), primary_key=True)
    geo = column_property(PovertyXWalk.geo)
    gini = db.Column(db.Float)
    totpop = db.Column(db.Float)
    url_name = column_property(
        select([Geo.url_name])
        .where(and_(poverty_geo == PovertyXWalk.poverty_geo, Geo.id == PovertyXWalk.geo)).limit(1)
    )
示例#5
0
class Survey_Ygl(BasePoverty, PovertyValues):
    __tablename__ = "survey_ygl"
    median_moe = 2

    year = db.Column(db.Integer(), primary_key=True)
    poverty_geo = db.Column(db.String(), primary_key=True)
    poverty_level = db.Column(db.String(), primary_key=True)
    geo = column_property(PovertyXWalk.geo)

    @classmethod
    def get_supported_levels(cls):
        base_levels = super(Survey_Ygl, cls).get_supported_levels()
        return dict(base_levels, **{POVERTY_LEVEL: [ALL, PPP1, PPP2]})
示例#6
0
class Conditions(BaseDHS):
    __tablename__ = "conditions"
    median_moe = 1

    year = db.Column(db.Integer, primary_key=True)
    dhs_geo = db.Column(db.String, primary_key=True)
    condition = db.Column(db.String, primary_key=True)
    severity = db.Column(db.String, primary_key=True)
    geo = column_property(DHSXWalk.geo)

    proportion_of_children = db.Column(db.Float)
    url_name = column_property(
        select([Geo.url_name]).where(
            and_(dhs_geo == DHSXWalk.dhs_geo,
                 Geo.id == DHSXWalk.geo)).limit(1))
示例#7
0
class Survey_Ygg(BasePoverty):
    __tablename__ = "survey_ygg"
    median_moe = 2

    year = db.Column(db.Integer(), primary_key=True)
    gender = db.Column(db.String(), primary_key=True)
    poverty_geo = db.Column(db.String(), primary_key=True)
    geo = column_property(PovertyXWalk.geo)
    gini = db.Column(db.Float)
    totpop = db.Column(db.Float)

    @classmethod
    def get_supported_levels(cls):
        base_levels = super(Survey_Ygg, cls).get_supported_levels()
        return dict(base_levels, **{GENDER: [ALL, MALE, FEMALE]})
示例#8
0
class Survey_Ygr(BasePoverty):
    __tablename__ = "survey_ygr"
    median_moe = 2

    year = db.Column(db.Integer(), primary_key=True)
    residence = db.Column(db.String(), primary_key=True)
    poverty_geo = db.Column(db.String(), primary_key=True)
    geo = column_property(PovertyXWalk.geo)
    gini = db.Column(db.Float)
    totpop = db.Column(db.Float)

    @classmethod
    def get_supported_levels(cls):
        base_levels = super(Survey_Ygr, cls).get_supported_levels()
        return dict(base_levels, **{RESIDENCE: [ALL, URBAN, RURAL]})
示例#9
0
class Rainfall(BaseClimate):
    __tablename__ = "rainfall"
    median_moe = 0
    year = db.Column(db.Integer, primary_key=True)
    geo = db.Column(db.String(), primary_key=True)

    start_year = db.Column(db.Integer)
    cropland_total_ha = db.Column(db.Float)
    rainfall_awa_mm = db.Column(db.Float)
    cropland_rainfallCVgt20pct_pct = db.Column(db.Float)
    cropland_rainfallCVgt20pct_ha = db.Column(db.Float)
    cropland_rainfallCVgt30pct_pct = db.Column(db.Float)
    cropland_rainfallCVgt30pct_ha = db.Column(db.Float)
示例#10
0
class Geo(BaseAttr, ImageAttr, BaseModel):
    __tablename__ = 'geo'
    adm0_id = db.Column(db.Integer)
    adm1_id = db.Column(db.Integer)
    iso3 = db.Column(db.String)
    iso2 = db.Column(db.String)
    level = db.Column(db.String)
    url_name = db.Column(db.String)
    parent_name = db.Column(db.String)
    geo = db.Column(db.String, primary_key=True)

    def child_filter(self, tbl):
        if self.id.startswith("040"):
            target = '050AF' + self.id[5:]
            return tbl.geo.startswith(target)
        return True
示例#11
0
class Crop(BaseAttr, BaseModel):
    __tablename__ = 'crop'
    median_moe = 0
    parent = db.Column(db.String)
    children = db.Column(postgresql.ARRAY(db.String))
    internal_id = db.Column(db.Integer)
    crop = db.Column(db.String())
    crop_parent = db.Column(db.String())
    crop_name = db.Column(db.String())

    @classmethod
    def get_supported_levels(cls):
        return {"crop": ['all', 'lowest']}
示例#12
0
class ConditionsGender(BaseDHS):
    __tablename__ = "conditions_gender"
    median_moe = 2

    year = db.Column(db.Integer, primary_key=True)
    dhs_geo = db.Column(db.String, primary_key=True)
    condition = db.Column(db.String, primary_key=True)
    severity = db.Column(db.String, primary_key=True)
    gender = db.Column(db.String, primary_key=True)
    proportion_of_children = db.Column(db.Float)
    geo = column_property(DHSXWalk.geo)
    url_name = column_property(
        select([Geo.url_name]).where(
            and_(dhs_geo == DHSXWalk.dhs_geo,
                 Geo.id == DHSXWalk.geo)).limit(1))

    @classmethod
    def get_supported_levels(cls):
        base_levels = super(ConditionsGender, cls).get_supported_levels()
        return dict(base_levels, **{GENDER: [ALL, MALE, FEMALE]})
示例#13
0
class ConditionsResidence(BaseDHS):
    __tablename__ = "conditions_residence"
    median_moe = 2

    year = db.Column(db.Integer, primary_key=True)
    dhs_geo = db.Column(db.String, primary_key=True)
    condition = db.Column(db.String, primary_key=True)
    severity = db.Column(db.String, primary_key=True)
    residence = db.Column(db.String, primary_key=True)

    geo = column_property(DHSXWalk.geo)
    proportion_of_children = db.Column(db.Float)
    url_name = column_property(
        select([Geo.url_name]).where(
            and_(dhs_geo == DHSXWalk.dhs_geo,
                 Geo.id == DHSXWalk.geo)).limit(1))

    @classmethod
    def get_supported_levels(cls):
        base_levels = super(ConditionsResidence, cls).get_supported_levels()
        return dict(base_levels, **{RESIDENCE: [ALL, URBAN, RURAL]})
示例#14
0
 def water_supply(cls):
     return db.Column(db.String(), primary_key=True)
示例#15
0
class HarvestedAreaBySupply(WaterSupply):
    __tablename__ = "area_by_supply"
    median_moe = 2

    harvested_area = db.Column(db.Integer())
示例#16
0
class ValueOfProduction(BaseCell5M):
    __tablename__ = "value"
    median_moe = 1

    value_of_production = db.Column(db.Integer())
示例#17
0
 def year(cls):
     return db.Column(db.Integer(), primary_key=True)
示例#18
0
class PovertyValues(db.Model):
    __abstract__ = True
    sevpov = db.Column(db.Float)
    povgap = db.Column(db.Float)
    hc = db.Column(db.Float)
    num = db.Column(db.Float)
示例#19
0
 def geo(cls):
     return db.Column(db.String(), db.ForeignKey(Geo.id), primary_key=True)
示例#20
0
class HarvestedArea(BaseCell5M):
    __tablename__ = "area"
    median_moe = 1

    harvested_area = db.Column(db.Integer())
示例#21
0
 def crop(cls):
     return db.Column(db.String(), db.ForeignKey(Crop.id), primary_key=True)
示例#22
0
class ImageAttr(db.Model):
    __abstract__ = True
    image_link = db.Column(db.String)
    image_author = db.Column(db.String)
示例#23
0
class ValueOfProductionBySupply(WaterSupply):
    __tablename__ = "value_by_supply"
    median_moe = 2

    value_of_production = db.Column(db.Integer())