# 地图数据处理系统 这是一个基于 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. 安装项目依赖: ```bash 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. 创建数据库: ```bash createdb -U postgres data_db ``` 2. 导入数据库备份: ```bash pg_restore -U postgres -d data_db soilgd.sql ``` 3. 验证数据库连接: ```bash psql -U postgres -d data_db -c "\dt" ``` 4. 导出导入指定数据库 ```bash # 导出(生成可被pg_restore恢复的文件) pg_dump -U postgres -Fc data_db > soilgd.sql # 导入(恢复上面生成的文件) pg_restore -U postgres -d data_db soilgd.sql ``` ## 运行 1. 启动服务: ```bash uvicorn app.main:app --reload ``` 2. 快速演示单元分类功能: ```bash python scripts/demos/unit_grouping_demo.py ``` 3. 运行单元分类集成测试: ```bash python tests/integration/test_unit_grouping.py ``` 4. 访问 API 文档: - Swagger UI: http://localhost:8000/docs - 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: 批量获取单元信息 详细说明请参考: [单元分类功能文档](docs/features/unit-grouping/README.md) ## 开发环境 - 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