ClearCrop Map

体验地址:https://map.mliae.ccwu.cc/
开源地址:https://github.com/mliae/ClearCrop-Map (有需要的可以联系我定制)
ClearCrop Map 一款专为植保无人机而生的高清卫星地图,专为大疆、极飞打造的自定义地图瓦片服务。0.1 米级高清影像,AI 研判图块时效,一键接入遥控器与农服 App,让每一次巡田、测绘都看得清、飞得准。

面向植保飞手的高清卫星地图瓦片服务:注册后拿到专属瓦片链接,填入大疆 / 极飞 App 的「自定义地图」,即可在国内访问增强后的高清卫星影像(WGS-84 无偏移,与无人机 GPS 对齐)。

基于 Cloudflare 全家桶(Workers + R2 + D1 + KV)构建,零服务器、零出口费,免费额度即可跑起 MVP。

✨ 特性

  • 多源择优:谷歌 + Esri + 必应三源,按区域自动选最清晰源,单源失效自动回退
  • 高清度增强:2× 高分瓦片(512px)、放开缩放层级至 z=21/22、首次回源时图像增强(对比度/锐化/去雾)后永久缓存
  • 用户系统:邮箱注册 + JWT 会话 + 每用户专属 API Token(填入遥控器长期使用)
  • 配额分级:free / basic / pro 三档,按小时限流防刷爆,阈值后台可调
  • R2 缓存:瓦片永久缓存,命中率 >90%,增强只做一次,后续零处理成本
  • 可视化后台:6 个单一职责标签页(概览 / 图源配置 / 增强与缩放 / 配额配置 / 用户管理 / 管理员设置),运营数据(请求量、缓存命中率、活跃用户、图源占比、14 天趋势)一目了然
  • 域名解耦:路由全相对路径,换域名仅需 Cloudflare 控制台绑定 Custom Domain,代码零改动

🛠 技术栈

| 层 | 技术 |
|---|---|
| 边缘运行时 | Cloudflare Workers + Hono |
| 对象存储 | Cloudflare R2(瓦片缓存,零出口费) |
| 关系数据库 | Cloudflare D1(用户、配置、运营统计) |
| 键值存储 | Cloudflare KV(限流计数) |
| 鉴权 | Web Crypto PBKDF2-SHA256(密码)+ HS256 JWT(会话) |
| 前端 | 原生 HTML + Leaflet,Workers Assets 托管,零构建 |
| 语言 | TypeScript(严格类型) |

🏗 架构

用户(遥控器/App/网页)
      │  GET /tiles/{z}/{x}/{y}?token=xxx&scale=2
      ▼
┌───────────────────────────────────────────┐
│  Cloudflare Workers (Hono)                │
│  1. 鉴权(token→用户/等级)  2. 配额限流      │
│  3. 查 R2 缓存(含增强版) → 命中即返         │
│  4. 未命中 → 多源回源 → 图像增强 → 写 R2    │
└───────────────┬───────────────────────────┘
                │
       ┌────────┼──────────────┐
       ▼        ▼              ▼
   R2(瓦片)   KV(限流)       D1(用户/配置/统计)
  零出口费    配额计数        users · configs · stats
       ▲
       └──── 多源:谷歌 mt.google.com · Esri · 必应 (均 WGS-84)

📁 项目结构

ClearCrop Map/
├── src/
│   ├── index.ts                # Hono 路由总装
│   ├── routes/
│   │   ├── tiles.ts            # 瓦片:鉴权→限流→缓存→多源回源→增强
│   │   ├── auth.ts             # 注册/登录/JWT
│   │   └── admin.ts            # 后台 API + 统计 + 账号管理
│   ├── middleware/
│   │   ├── auth.ts             # token/JWT 鉴权
│   │   └── ratelimit.ts        # 配额限流 + 埋点
│   ├── lib/
│   │   ├── sources.ts          # 多源 URL 构造 + 择优/回退
│   │   ├── enhance.ts          # 图像增强(对比度/锐化)
│   │   ├── cache.ts            # R2 读写
│   │   ├── crypto.ts           # PBKDF2 / JWT
│   │   ├── config.ts           # 配置读取(D1)
│   │   ├── stats.ts            # 运营统计写入
│   │   └── init.ts             # D1 初始化
│   └── schema.sql              # 建表语句
├── public/                     # index.html + admin.html + Leaflet
├── wrangler.toml
├── DESIGN.md                   # 完整技术设计文档
└── package.json

🚀 快速开始

前置要求

  • Node.js 18+
  • Cloudflare 账号(免费额度即可)

部署步骤

# 1. 安装依赖
npm install

# 2. 登录 Cloudflare
npx wrangler login

# 3. 创建资源
npx wrangler r2 bucket create clearcrop-tiles
npx wrangler kv namespace create RL
npx wrangler d1 create clearcrop

# 4. 把上一步输出的 ID 填入 wrangler.toml,然后建表
npx wrangler d1 execute clearcrop --remote --file=./src/schema.sql

# 5. 配置密钥
npx wrangler secret put JWT_SECRET
npx wrangler secret put ADMIN_EMAIL      # 初始管理员邮箱
npx wrangler secret put ADMIN_PASSWORD   # 初始管理员密码

# 6. 本地调试 / 部署上线
npm run dev
npm run deploy

部署后在 Cloudflare 控制台为 Worker 绑定自定义域名即可,代码无需任何改动。

📡 遥控器接入

  1. 注册 / 登录后在「我的账号」复制专属瓦片链接,格式:

``
https://你的域名/tiles/{z}/{x}/{y}?token=用户专属token
``

  1. 大疆农服 App:开始 → 图层 → 二级高清地图 → 自定义链接 → 粘贴
  2. 极飞 App:图层 → 自定义地图 → 粘贴
坐标系为 WGS-84 无偏移,与无人机 RTK/GPS 完全对齐,不走 GCJ-02/BD-09 偏移图源。

🗺 路线图

| 阶段 | 内容 | 状态 |
|---|---|---|
| P0 | 多源择优 + 2× 高分 + 图像增强 + R2 缓存 + 用户系统 + 配额 + 后台 + 展示页 | ✅ |
| P3 | 仪表盘完善(请求量/命中率/活跃用户/图源占比/14 天趋势) | ✅ |
| P3+ | 后台用户管理(创建/删除/改级)+ 管理员账号设置(改密/重置 Token) | ✅ |
| P1 | 离线超分工具(Real-ESRGAN,选定农田区域按需预生成) | 🔜 |
| P2 | 地块规划(画多边形 + 一键导出 KML/KMZ 供作业) | 🔜 |

⚠️ 免责声明

本项目为技术学习与交流用途,面向个人植保作业辅助。

  • 代理第三方(谷歌/必应)瓦片存在服务条款风险,公开商业运营需自行评估并承担责任;
  • 向公众提供地图服务涉及《测绘法》等法规,使用者需自行评估合规边界;
  • 项目作者不对任何因使用本代码产生的后果负责,请控制规模、合规使用。

📄 许可