No Description

Ding 71858943cf Merge branch 'ding' of Ding/AcidMap into master 1 week ago
Cd_Prediction_Integrated_System 5591d4885d 创建数据库模型 2 weeks ago
Water d434940ef1 实现灌溉水通过修改土地利用系数来计算并制图,以及统计结果 1 week ago
app 71858943cf Merge branch 'ding' of Ding/AcidMap into master 1 week ago
data f71ea95b92 通过迁移脚本添加county表 2 months ago
docs 50b64bcb17 集成耕地质量分类接口 1 week ago
migrations a74247eb3b 同步数据库备份文件 1 week ago
scripts 50b64bcb17 集成耕地质量分类接口 1 week ago
ssl d1eeffc54d 补充ssl文件 2 months ago
tests 50b64bcb17 集成耕地质量分类接口 1 week ago
.gitignore ea8ff8a3c1 init 3 months ago
LICENSE e66c414c3d 合并冲突 3 months ago
PROJECT_RULES.md 3ba8b7d417 更新数据库连接信息加载方式,使用dotenv从配置文件中读取环境变量; 1 week ago
README.md 50b64bcb17 集成耕地质量分类接口 1 week ago
alembic.ini bcdf820419 使用 Alembic 进行数据库版本控制和迁移管理 2 months ago
config.env 0a18ac5139 完善灌溉水代码 1 week ago
db_migrate.py 3ba8b7d417 更新数据库连接信息加载方式,使用dotenv从配置文件中读取环境变量; 1 week ago
environment.yml 6ec6d60142 增加依赖环境包、返回结果中更改序列类型 3 months ago
main.py 0a18ac5139 完善灌溉水代码 1 week ago
package-lock.json 0a18ac5139 完善灌溉水代码 1 week ago
package.json 0a18ac5139 完善灌溉水代码 1 week ago
reset_db.py 3ba8b7d417 更新数据库连接信息加载方式,使用dotenv从配置文件中读取环境变量; 1 week ago
soilgd.dump a74247eb3b 同步数据库备份文件 1 week ago
test_cd_flux_removal.py 976caa7879 提供农产品投入Cd通量计算&统计接口; 1 week ago
test_cd_integration.py 5591d4885d 创建数据库模型 2 weeks ago

README.md

地图数据处理系统

这是一个基于 FastAPI 开发的地图数据处理系统,支持栅格和矢量数据的处理、存储和管理。

功能特点

  • 支持栅格数据的导入和导出
  • 支持矢量数据的导入和导出
  • 单元分类功能: 基于空间插值算法的土壤环境质量分类
  • 使用 PostgreSQL + PostGIS 存储空间数据
  • 提供 RESTful API 接口
  • 支持空间数据查询和分析

系统架构

app/
├── api/            # API 路由层
│   ├── raster.py   # 栅格数据接口
│   ├── vector.py   # 矢量数据接口
│   └── unit_grouping.py  # 单元分类接口
├── services/       # 业务逻辑层
│   ├── raster_service.py
│   ├── vector_service.py
│   └── unit_grouping_service.py  # 单元分类服务
├── models/         # 数据模型
├── utils/          # 工具函数
├── database.py     # 数据库配置
└── main.py         # 主程序入口

docs/
├── features/       # 功能文档
│   └── unit-grouping/
│       └── README.md  # 单元分类功能说明

tests/
├── integration/    # 集成测试
│   └── test_unit_grouping.py

scripts/
├── demos/          # 演示脚本
│   └── unit_grouping_demo.py
└── ...

安装依赖

  1. 确保已安装 Python 3.8+
  2. 安装 PostgreSQL 数据库并启用 PostGIS 扩展
  3. 安装项目依赖:

    pip install -r requirements.txt
    

配置

  1. 复制 .env.example 文件为 .env
  2. 修改 .env 文件中的数据库连接信息:

    DB_HOST=localhost
    DB_PORT=5432
    DB_NAME=your_database
    DB_USER=your_username
    DB_PASSWORD=your_password
    

数据库初始化

  1. 创建数据库:

    createdb -U postgres data_db
    
  2. 导入数据库备份:

    pg_restore -U postgres -d data_db soilgd.sql
    
  3. 验证数据库连接:

    psql -U postgres -d data_db -c "\dt"
    
  4. 导出导入指定数据库

    # 导出(生成可被pg_restore恢复的文件)
    pg_dump -U postgres -Fc data_db > soilgd.sql
    
    # 导入(恢复上面生成的文件)
    pg_restore -U postgres -d data_db soilgd.sql
    

运行

  1. 启动服务:

    uvicorn app.main:app --reload
    
  2. 快速演示单元分类功能:

    python scripts/demos/unit_grouping_demo.py
    
  3. 运行单元分类集成测试:

    python tests/integration/test_unit_grouping.py
    
  4. 访问 API 文档:

  5. Swagger UI: http://localhost:8000/docs

  6. ReDoc: http://localhost:8000/redoc

API 接口

栅格数据接口 (/api/raster)

  • POST /import: 导入栅格数据
  • GET /export: 导出栅格数据
  • GET /query: 查询栅格数据

矢量数据接口 (/api/vector)

  • POST /import: 导入矢量数据
  • GET /export: 导出矢量数据
  • GET /query: 查询矢量数据

单元分类接口 (/api/unit-grouping)

  • GET /h_xtfx: 获取所有单元的h_xtfx分类结果
  • GET /statistics: 获取统计信息
  • GET /unit/{unit_id}: 获取特定单元的h_xtfx值
  • GET /points/statistics: 获取点位统计信息
  • GET /database/summary: 获取数据库摘要信息
  • GET /units/batch: 批量获取单元信息

详细说明请参考: 单元分类功能文档

开发环境

  • Python 3.8+
  • PostgreSQL 12+
  • PostGIS 3.0+
  • FastAPI 0.104.1
  • Uvicorn 0.24.0

贡献指南

  1. Fork 项目
  2. 创建特性分支
  3. 提交更改
  4. 推送到分支
  5. 创建 Pull Request

许可证

MIT License