# 地图数据处理系统 这是一个基于 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 └── ... ``` ## 环境安装 ### conda环境导出工具 项目提供了专门的环境导出脚本,用于管理和分享环境配置: ```bash # 导出当前环境(包含conda显式安装包和pip包) python scripts/demos/conda_env_export_tool.py -e GeoSys -o environment.yml # 查看帮助 python scripts/demos/conda_env_export_tool.py --help ``` **功能特点:** - ✅ 只导出显式安装的包(不包含依赖包) - ✅ 合并 conda 和 pip 安装的包 - ✅ 自动备份现有文件 ### 使用 Conda 环境 1. **安装 Anaconda/Miniconda** - 下载并安装 [Anaconda](https://www.anaconda.com/products/distribution) 或 [Miniconda](https://docs.conda.io/en/latest/miniconda.html) 2. **创建项目环境** ```bash # 使用项目提供的环境文件 conda env create -f enviroment.yml # 激活环境 conda activate GeoSys ``` ## 配置 1. 修改 `config.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 ``` 4. 访问 API 文档: - Swagger UI: http://localhost:8000/docs - ReDoc: http://localhost:8000/redoc ## 开发环境 - Python 3.8 - PostgreSQL 12+ - PostGIS 3.0+ - FastAPI 0.104.1 - Uvicorn 0.24.0 ## 贡献指南 1. Fork 项目 2. 创建特性分支 3. 提交更改 4. 推送到分支 5. 创建 Pull Request