# 瓦片地图切片工具 **Repository Path**: lost2/tile-map-slicing-tool-forGo ## Basic Information - **Project Name**: 瓦片地图切片工具 - **Description**: Go实现瓦片地图切片工具 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-24 - **Last Updated**: 2026-02-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Golang 瓦片地图切片工具 将一张带地理范围的地图图片按 Web Mercator 瓦片规范切分为多层级 256×256 瓦片,输出格式兼容常见地图前端(如 Leaflet、OpenLayers)。 ## 功能 - 按 **Z/X/Y** 瓦片方案(与 OSM/Google 一致)生成 256×256 PNG 瓦片 - 支持多层级(minLevel~maxLevel)一次生成 - **并发生成**,大图不卡死、速度更快 - **进度与预估时间**:每秒输出进度百分比与预计剩余时间 - 生成前**自动清空**目标目录,避免旧瓦片残留 - 仅填充瓦片与图片交集的区域,其余透明,不拉伸变形 ## 环境 - Go 1.19+(推荐 1.21+) ## 安装与运行 ```bash # 克隆或进入项目目录 cd mapTiler # 拉取依赖 go mod tidy # 编译 go build -o maptiler . # 运行(使用默认参数) ./maptiler # 或指定参数 ./maptiler -img ./map.png -minlon 113.98 -minlat 22.66 -maxlon 113.99 -maxlat 22.67 -minlevel 15 -maxlevel 18 -out tiles ``` Windows 下可编译为 `maptiler.exe` 后直接运行。 ## 参数说明 | 参数 | 默认值 | 说明 | |------|--------|------| | `-img` | (必填) | 输入地图图片路径,支持 PNG/JPEG/GIF | | `-minlon` | - | 图片覆盖的**最小经度**(WGS84,单位:度) | | `-minlat` | - | 图片覆盖的**最小纬度**(WGS84,单位:度) | | `-maxlon` | - | 图片覆盖的**最大经度**(WGS84,单位:度) | | `-maxlat` | - | 图片覆盖的**最大纬度**(WGS84,单位:度) | | `-minlevel` | 15 | 最小切片层级(含),0 为全球一张瓦片 | | `-maxlevel` | 16 | 最大切片层级(含),越大瓦片数越多 | | `-out` | dist/tiles | 瓦片输出目录(生成前会清空) | 经纬度范围必须满足:`minlon < maxlon` 且 `minlat < maxlat`。图片假设为**北朝上**,左上角对应 (minlon, maxlat),右下角对应 (maxlon, minlat)。 ## 输出结构 - 目录结构:`输出目录/层级/层级-列-行.png` - 示例:`tiles/15/15-26758-14264.png`、`tiles/18/18-214071-114115.png` - 单张瓦片:256×256 像素,PNG;与图片无交集的区域为透明。 ## 使用示例 ```bash # 切一张深圳某区域的地图,层级 15~18,输出到 tiles ./maptiler -img ./shenzhen.png -minlon 113.98 -minlat 22.66 -maxlon 113.99 -maxlat 22.67 -minlevel 15 -maxlevel 18 -out tiles # 查看帮助 ./maptiler -h ``` ## 大图与性能 - 程序会打印**当前图片分辨率**;若单边超过 8192,会提示“分辨率较大”。 - 使用多 worker **并发生成**,worker 数默认为 CPU 核数,大图时不易卡死。 - 若仍较慢,可先用图像工具将源图缩小再切片。 ## 后续开发计划 计划增加**图形界面(UI)**,在保留命令行能力的前提下提供可视化操作与任务控制,主要功能如下: | 功能 | 说明 | |------|------| | **参数传递** | 在界面中填写/选择:图片路径、经纬度范围(minlon/minlat/maxlon/maxlat)、层级范围(minlevel/maxlevel)、输出目录、并发数等;点击“开始”后将参数传给切片引擎执行。 | | **预估时间回显** | 任务开始后,在界面实时展示:当前进度(已完成/总数、百分比)、已用时间、**预计剩余时间**;与当前命令行日志中的进度/预估保持一致,便于用户判断是否等待或停止。 | | **停止任务** | 提供“停止”按钮,用户可随时中断正在进行的切片;实现上需在切片逻辑中支持可取消(如 `context.Context`),停止后已生成的瓦片保留,未完成的不再写入。 | 可选技术方向:本地 UI 可采用 **Fyne**、**Wails**(Go + Web 前端)或 **Tauri + Go 后端**;若做 Web 版则需将切片改为可调用的 HTTP 接口或本地服务,由前端传参并轮询/SSE 获取进度与预估时间。 ## 许可证 按项目需要自行添加。