123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- from sqlalchemy import Column, Integer, Float
- from sqlalchemy import ForeignKeyConstraint
- from app.database import Base # 统一的Base导入
- class EffCdInputData(Base):
- """
- 有效态镉预测模型输入数据模型
- 存储预测土壤有效态镉所需的所有输入参数,包括:
- - 土壤理化性质指标
- - 有机质-铁结合态参数
- - 颗粒组成数据(黏土、粉粒、砂粒、石砾)
- - 养分元素含量(速效钾、有效磷等)
- - 重金属元素总量
- - 络合模型输出转化值
- 该模型通过Farmland_ID和Sample_ID与农田样点数据关联
- """
- __tablename__ = 'EffCd_input_data'
- # 主键配置
- id = Column('ID', Integer, primary_key=True, autoincrement=True,
- comment='主键ID')
- # 外键关联到农田样点
- farmland_id = Column('Farmland_ID', Integer, nullable=False)
- sample_id = Column('Sample_ID', Integer, nullable=False)
- # 有机质-铁结合态参数
- oc_fe_0_30 = Column('OC-Fe_0-30', Float, nullable=True,
- comment='土壤铁结合态有机碳(g/kg)')
- # 土壤颗粒组成
- silt_content = Column('002_0002IDW', Float, nullable=True,
- comment='粉粒组分(0.002~0.02mm)质量占比[%]')
- sand_content = Column('02_002IDW', Float, nullable=True,
- comment='砂粒组分(0.02~0.2mm)质量占比[%]')
- gravel_content = Column('2_02IDW', Float, nullable=True,
- comment='石砾组分(>2mm)质量占比[%]')
- # 养分元素
- available_potassium = Column('AvaK_IDW', Float, nullable=True,
- comment='速效钾(mg/kg)')
- available_phosphorus = Column('AvaP_IDW', Float, nullable=True,
- comment='有效磷(mg/kg)')
- electrical_conductivity = Column('EC_IDW', Float, nullable=True,
- comment='电导率(mS/cm)')
- slow_available_potassium = Column('SAvaK_IDW', Float, nullable=True,
- comment='缓效钾(mg/kg)')
- # 重金属及营养元素总量
- total_aluminum = Column('TAl_IDW', Float, nullable=True,
- comment='全铝含量(%)')
- total_calcium = Column('TCa_IDW', Float, nullable=True,
- comment='全钙含量(%)')
- total_cadmium = Column('TCd_IDW', Float, nullable=True,
- comment='总镉含量(mg/kg)')
- soluble_salts = Column('TEB_IDW', Float, nullable=True,
- comment='水溶性盐总量(mg/L)')
- exchangeable_acidity = Column('TExH_IDW', Float, nullable=True,
- comment='交换性酸总量[cmol/kg]')
- total_iron = Column('TFe_IDW', Float, nullable=True,
- comment='全铁含量(%)')
- total_potassium = Column('TK_IDW', Float, nullable=True,
- comment='全钾含量(g/kg)')
- total_magnesium = Column('TMg_IDW', Float, nullable=True,
- comment='全镁含量(%)')
- total_manganese = Column('TMn_IDW', Float, nullable=True,
- comment='全锰含量(mg/kg)')
- total_nitrogen = Column('TN_IDW', Float, nullable=True,
- comment='全氮含量(g/kg)')
- total_phosphorus = Column('TP_IDW', Float, nullable=True,
- comment='全磷含量(g/kg)')
- total_sulfur = Column('TS_IDW', Float, nullable=True,
- comment='全硫含量(g/kg)')
- # 络合模型输出转换值
- cd_solution = Column('Cdsolution', Float, nullable=True,
- comment='LN(POR_Layer/bd020_90 * 112000*Cd.solution)')
- # 复合外键约束,确保数据一致性
- __table_args__ = (
- ForeignKeyConstraint(
- ['Farmland_ID', 'Sample_ID'],
- ['Farmland_data.Farmland_ID', 'Farmland_data.Sample_ID']
- ),
- {'comment': '有效态镉预测模型输入数据'}
- )
|