# 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渲染。