12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- # app/models/effcd_output.py
- from sqlalchemy import Column, Integer, Float
- from sqlalchemy import ForeignKeyConstraint
- from app.database import Base # 统一的基础模型
- class EffCdOutputData(Base):
- """
- 有效态镉预测模型输出数据模型
- 存储预测模型计算的对数化有效态镉浓度,可通过指数函数还原为实际浓度:
- EffCd = exp(LnEffCd) [单位:mg/kg]
- 模型特点:
- - 通过Farmland_ID/Sample_ID与农田样点严格关联
- - 核心输出字段需经指数转换获取物理意义值
- - 可用于直接评估农田有效态镉污染水平
- """
- __tablename__ = 'EffCd_output_data'
- # 主键配置
- id = Column('ID', Integer, primary_key=True, autoincrement=True,
- comment='自增主键')
- # 外键字段(关联农田样点)
- farmland_id = Column('Farmland_ID', Integer, nullable=False,
- comment='关联农地ID')
- sample_id = Column('Sample_ID', Integer, nullable=False,
- comment='关联样点ID')
- # 模型输出结果
- ln_eff_cd = Column('LnEffCd', Float, nullable=False,
- comment='有效态镉浓度的自然对数值[ln(mg/kg)]')
- # 复合外键约束
- __table_args__ = (
- ForeignKeyConstraint(
- ['Farmland_ID', 'Sample_ID'],
- ['Farmland_data.Farmland_ID', 'Farmland_data.Sample_ID']
- ),
- {'comment': '有效态镉预测模型输出数据'}
- )
- # 转换方法:获取实际有效态镉浓度
- def effective_cadmium(self):
- """
- 计算实际有效态镉浓度(单位:mg/kg)
- 公式: EffCd = exp(LnEffCd)
- """
- import math
- return math.exp(self.ln_eff_cd)
|