119 lines
2.3 KiB
Markdown
119 lines
2.3 KiB
Markdown
# 瓦片服务器 (Tile Server)
|
||
|
||
基于 Axum 的高性能瓦片服务器,支持通过时间参数动态加载不同时次的瓦片数据。
|
||
|
||
## 功能特性
|
||
|
||
- ✅ 支持时间参数动态加载瓦片
|
||
- ✅ 标准 XYZ 瓦片格式支持
|
||
- ✅ 高性能异步文件读取
|
||
- ✅ 适当的 HTTP 缓存头设置
|
||
- ✅ 完整的错误处理
|
||
- ✅ CORS 支持
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
tiles/
|
||
└── 202507220000/ ← 时次目录(YYYYMMDDHHMM)
|
||
└── {z}/{x}/{y}.png
|
||
└── 202507220006/
|
||
└── {z}/{x}/{y}.png
|
||
```
|
||
|
||
## API 接口
|
||
|
||
### 获取瓦片
|
||
|
||
**请求**
|
||
```
|
||
GET /tiles/{z}/{x}/{y}.png?time={time}
|
||
```
|
||
|
||
**参数说明**
|
||
- `z`: 缩放级别 (u8)
|
||
- `x`: X 坐标 (u32)
|
||
- `y`: Y 坐标 (u32)
|
||
- `time`: 时间参数,格式为 YYYYMMDDHHMM (12位数字)
|
||
|
||
**响应**
|
||
- `200 OK` - 返回 PNG 图像数据
|
||
- `400 Bad Request` - 参数错误
|
||
- `404 Not Found` - 瓦片文件不存在
|
||
|
||
**示例请求**
|
||
```bash
|
||
curl "http://localhost:3050/tiles/6/42/20.png?time=202507220006"
|
||
```
|
||
|
||
## 快速开始
|
||
|
||
### 1. 编译运行
|
||
|
||
```bash
|
||
cargo run
|
||
```
|
||
|
||
### 2. 测试 API
|
||
|
||
访问根路径查看服务状态:
|
||
```bash
|
||
curl http://localhost:3050/
|
||
```
|
||
|
||
获取示例瓦片:
|
||
```bash
|
||
curl "http://localhost:3050/tiles/6/42/20.png?time=202507220006"
|
||
```
|
||
|
||
### 3. 创建瓦片数据
|
||
|
||
按照以下目录结构组织您的瓦片文件:
|
||
|
||
```bash
|
||
mkdir -p tiles/202507220000/6/42
|
||
# 将您的瓦片文件放入相应目录
|
||
cp your-tile.png tiles/202507220000/6/42/20.png
|
||
```
|
||
|
||
## 配置说明
|
||
|
||
- **端口**: 3050 (可在 main.rs 中修改)
|
||
- **绑定地址**: 0.0.0.0 (监听所有网络接口)
|
||
- **缓存策略**: 1小时 (public, max-age=3600)
|
||
|
||
## 错误处理
|
||
|
||
服务器会返回详细的错误信息:
|
||
|
||
- 缺少时间参数: `400 Bad Request`
|
||
- 时间格式无效: `400 Bad Request`
|
||
- 瓦片不存在: `404 Not Found`
|
||
- 服务器错误: `500 Internal Server Error`
|
||
|
||
## 开发说明
|
||
|
||
### 项目结构
|
||
|
||
```
|
||
src/
|
||
└── main.rs # 主服务器代码
|
||
Cargo.toml # 依赖配置
|
||
README.md # 项目说明
|
||
tiles/ # 瓦片数据目录
|
||
```
|
||
|
||
### 核心依赖
|
||
|
||
- `axum`: Web 框架
|
||
- `tokio`: 异步运行时
|
||
- `tower-http`: HTTP 中间件 (CORS)
|
||
- `tracing`: 日志记录
|
||
|
||
### 扩展建议
|
||
|
||
- 添加瓦片格式验证
|
||
- 实现瓦片缓存机制
|
||
- 支持多种图像格式
|
||
- 添加访问日志
|
||
- 实现配置文件支持 |