summit/README.md

129 lines
3.1 KiB
Markdown

# Summit 14 Peaks - Phase 1 Complete! 🏔️
## 项目状态
**Phase 1 初步实现已完成**
现在你可以在浏览器中看到:
- 🗺️ 基于 MapLibre GL 的交互式地图
- 🏔️ 5座8000米级雪山的标记和信息
- 📍 点击侧边栏山峰可飞行到对应位置
- 🖱️ 点击标记查看山峰详细信息
## 快速开始
### 1. 启动后端服务器
```bash
cd backend
source venv/bin/activate
python -m app.main
```
后端将运行在: http://localhost:8000
### 2. 启动前端开发服务器
```bash
cd frontend
yarn dev
```
前端将运行在: http://localhost:5173
### 3. 访问应用
打开浏览器访问: **http://localhost:5173**
## 当前功能
### 已实现 ✅
- [x] MapLibre GL 地图初始化
- [x] Esri World Imagery 卫星底图
- [x] PostgreSQL + PostGIS 数据库
- [x] FastAPI 后端 API
- [x] 5座山峰数据 (Everest, K2, Kangchenjunga, Lhotse, Makalu)
- [x] 山峰标记和弹窗
- [x] 交互式侧边栏
- [x] 飞行到山峰功能
### 数据库中的山峰
1. **Mount Everest (珠穆朗玛峰)** - 8,849m
2. **K2 (乔戈里峰)** - 8,611m
3. **Kangchenjunga (干城章嘉峰)** - 8,586m
4. **Lhotse (洛子峰)** - 8,516m
5. **Makalu (马卡鲁峰)** - 8,485m
## API 端点
- `GET /api/v1/peaks/` - 获取所有山峰
- `GET /api/v1/peaks/{id}` - 获取单个山峰详情
- `POST /api/v1/peaks/` - 创建新山峰
- `GET /health` - 健康检查
## 下一步计划 (ROADMAP)
### Phase 2: 地形数据处理
- [ ] 下载 NASA SRTM 珠峰地区数据
- [ ] 使用 rio-rgbify 处理地形数据
- [ ] 生成地形瓦片并部署
- [ ] 在地图上加载3D地形
### Phase 3: 完整14座山峰
- [ ] 添加剩余9座8000米山峰数据
- [ ] 批量处理所有山峰地形
- [ ] 添加攀登路线数据
### Phase 4: 视觉增强
- [ ] Three.js 自定义图层
- [ ] 攀登路线可视化
- [ ] 营地标记
- [ ] 光照和大气效果
## 技术栈
- **前端**: React 18 + TypeScript + Vite + MapLibre GL + TailwindCSS
- **后端**: Python + FastAPI + SQLAlchemy (Async)
- **数据库**: PostgreSQL 15 + PostGIS
- **缓存**: Redis 7
- **地图引擎**: MapLibre GL JS (开源)
- **底图**: Esri World Imagery (免费)
## 开发笔记
### 添加更多山峰数据
编辑 `backend/seed_data.py` 并运行:
```bash
cd backend
source venv/bin/activate
python seed_data.py
```
### 数据库管理
```bash
# 初始化数据库
python init_db.py
# 连接到数据库
docker exec -it postgis-db-1 psql -U postgres -d summit_db
```
## 故障排除
### 地图不显示?
1. 检查浏览器控制台是否有JavaScript错误
2. 确认后端API正在运行 (http://localhost:8000/health)
3. 检查前端是否正确代理API请求
### 无法连接数据库?
1. 确认PostgreSQL容器正在运行: `docker ps | grep postgis`
2. 检查 `.env` 文件中的数据库配置
3. 确认端口5432未被占用
### Redis连接失败?
1. 确认Redis容器正在运行: `docker ps | grep redis`
2. 检查 `.env` 中的Redis配置
---
**🎉 恭喜!你已经完成了 Phase 1 的初步实现!**
现在可以在地图上看到山峰了,接下来可以继续实现地形瓦片处理和3D渲染。