FluxCd_output.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from sqlalchemy import Column, Integer, Float, ForeignKeyConstraint
  2. from app.database import Base
  3. from app.models import FluxCdInputData
  4. class FluxCdOutputData(Base):
  5. """
  6. 通量镉预测模型输出数据模型
  7. @param {int} id - 主键ID(自增)
  8. @param {int} farmland_id - 区域农业用地矢量点编号(关联Farmland_data表)
  9. @param {int} sample_id - 采样点ID(关联Farmland_data表)
  10. @param {float} in_cd - Cd输入总通量(g/ha/a)
  11. @param {float} out_cd - Cd输出总通量(g/ha/a)
  12. @param {float} net_cd - Cd净通量(g/ha/a)
  13. @param {float} end_cd - 当年Cd浓度(mg/kg)
  14. """
  15. __tablename__ = 'FluxCd_output_data'
  16. id = Column('ID', Integer, primary_key=True, autoincrement=True)
  17. farmland_id = Column('Farmland_ID', Integer)
  18. sample_id = Column('Sample_ID', Integer)
  19. in_cd = Column('In_Cd', Float, nullable=True)
  20. out_cd = Column('Out_Cd', Float, nullable=True)
  21. net_cd = Column('Net_Cd', Float, nullable=True)
  22. end_cd = Column('End_Cd', Float, nullable=True)
  23. # 定义复合外键,关联到Farmland_data表
  24. __table_args__ = (
  25. ForeignKeyConstraint(
  26. ['Farmland_ID', 'Sample_ID'],
  27. ['Farmland_data.Farmland_ID', 'Farmland_data.Sample_ID']
  28. ),
  29. {'comment': '通量镉预测模型输出数据'}
  30. )
  31. def calculate_fluxes(self, input_data: FluxCdInputData):
  32. """根据输入数据计算通量"""
  33. self.in_cd = input_data.input_flux()
  34. self.out_cd = input_data.output_flux() # 使用输出通量方法
  35. self.net_cd = self.in_cd - self.out_cd