29a56094509c_add_four_county_land_use_table.py 4.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. """add_four_county_land_use_table
  2. Revision ID: 29a56094509c
  3. Revises: d89bb52ae481
  4. Create Date: 2025-08-17 10:01:27.121198
  5. """
  6. from alembic import op
  7. import sqlalchemy as sa
  8. import geoalchemy2
  9. # revision identifiers, used by Alembic.
  10. revision = '29a56094509c'
  11. down_revision = 'd89bb52ae481'
  12. branch_labels = None
  13. depends_on = None
  14. def upgrade():
  15. """升级数据库到当前版本 - 创建四县三种用电土地利用类型表"""
  16. # 创建四县三种用电土地利用类型表
  17. op.create_table(
  18. 'four_county_land',
  19. sa.Column('gid', sa.Integer(), autoincrement=True, nullable=False, comment='主键ID'),
  20. sa.Column('objectid', sa.Integer(), nullable=True, comment='对象标识符'),
  21. sa.Column('bsm', sa.String(length=18), nullable=True, comment='标识码'),
  22. sa.Column('ysdm', sa.String(length=10), nullable=True, comment='要素代码'),
  23. sa.Column('tbybh', sa.String(length=18), nullable=True, comment='图斑预编号'),
  24. sa.Column('tbbh', sa.String(length=8), nullable=True, comment='图斑编号'),
  25. sa.Column('dlbm', sa.String(length=5), nullable=True, comment='地类编码'),
  26. sa.Column('dlmc', sa.String(length=60), nullable=True, comment='地类名称'),
  27. sa.Column('qsxz', sa.String(length=2), nullable=True, comment='权属性质'),
  28. sa.Column('qsdwdm', sa.String(length=19), nullable=True, comment='权属单位代码'),
  29. sa.Column('qsdwmc', sa.String(length=60), nullable=True, comment='权属单位名称'),
  30. sa.Column('zldwdm', sa.String(length=19), nullable=True, comment='坐落单位代码'),
  31. sa.Column('zldwmc', sa.String(length=60), nullable=True, comment='坐落单位名称'),
  32. sa.Column('tbmj', sa.Numeric(precision=19, scale=11), nullable=True, comment='图斑面积'),
  33. sa.Column('kcdlbm', sa.String(length=5), nullable=True, comment='扣除地类编码'),
  34. sa.Column('kcxs', sa.Numeric(precision=19, scale=11), nullable=True, comment='扣除系数'),
  35. sa.Column('kcmj', sa.Numeric(precision=19, scale=11), nullable=True, comment='扣除面积'),
  36. sa.Column('tbdlmj', sa.Numeric(precision=19, scale=11), nullable=True, comment='图斑地类面积'),
  37. sa.Column('gdlx', sa.String(length=2), nullable=True, comment='耕地类型'),
  38. sa.Column('gdpdjb', sa.String(length=2), nullable=True, comment='耕地坡度级别'),
  39. sa.Column('xzdwkd', sa.Numeric(precision=19, scale=11), nullable=True, comment='线状地物宽度'),
  40. sa.Column('tbxhdm', sa.String(length=6), nullable=True, comment='图斑细化代码'),
  41. sa.Column('tbxhmc', sa.String(length=20), nullable=True, comment='图斑细化名称'),
  42. sa.Column('zzsxdm', sa.String(length=6), nullable=True, comment='种植属性代码'),
  43. sa.Column('zzsxmc', sa.String(length=20), nullable=True, comment='种植属性名称'),
  44. sa.Column('gddb', sa.Integer(), nullable=True, comment='耕地等别'),
  45. sa.Column('frdbs', sa.String(length=1), nullable=True, comment='非入等标识'),
  46. sa.Column('czcsxm', sa.String(length=4), nullable=True, comment='城镇村属性码'),
  47. sa.Column('sjnf', sa.Integer(), nullable=True, comment='数据年份'),
  48. sa.Column('mssm', sa.String(length=2), nullable=True, comment='模式识别码'),
  49. sa.Column('hdmc', sa.String(length=100), nullable=True, comment='河道名称'),
  50. sa.Column('bz', sa.String(length=254), nullable=True, comment='备注'),
  51. sa.Column('shape_leng', sa.Numeric(precision=19, scale=11), nullable=True, comment='形状长度'),
  52. sa.Column('shape_le_1', sa.Numeric(precision=19, scale=11), nullable=True, comment='形状长度1'),
  53. sa.Column('shape_area', sa.Numeric(precision=19, scale=11), nullable=True, comment='形状面积'),
  54. sa.Column('geom', geoalchemy2.types.Geometry(geometry_type='POLYGON', srid=4526, from_text='ST_GeomFromEWKT', name='geometry'), nullable=True, comment='几何位置信息-多边形'),
  55. sa.PrimaryKeyConstraint('gid'),
  56. comment='四县三种用电土地利用类型数据'
  57. )
  58. # 创建空间索引
  59. op.execute("CREATE INDEX IF NOT EXISTS idx_four_county_land_geom ON four_county_land USING gist (geom)")
  60. def downgrade():
  61. """将数据库降级到上一版本 - 删除四县三种用电土地利用类型表"""
  62. # 删除空间索引
  63. op.drop_index('idx_four_county_land_geom', table_name='four_county_land')
  64. # 删除表
  65. op.drop_table('four_county_land')