# 地图数据处理系统

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

## 功能特点

- 支持栅格数据的导入和导出
- 支持矢量数据的导入和导出
- 使用 PostgreSQL + PostGIS 存储空间数据
- 提供 RESTful API 接口
- 支持空间数据查询和分析

## 系统架构

```
app/
├── api/            # API 路由层
│   ├── raster.py   # 栅格数据接口
│   └── vector.py   # 矢量数据接口
├── services/       # 业务逻辑层
│   ├── raster_service.py
│   └── vector_service.py
├── models/         # 数据模型
├── utils/          # 工具函数
├── database.py     # 数据库配置
└── main.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. 访问 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: 查询矢量数据

## 开发环境

- 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 