使用GDAL实现地图瓦片切片:从PNG到Web地图的完整指南

使用GDAL实现地图瓦片切片:从PNG到Web地图的完整指南

在WebGIS开发中,将静态地图图片转换为可缩放的瓦片地图是常见需求。本文将手把手教你使用GDAL工具完成从PNG到Web地图的完整工作流程。

准备工作

1. 安装GDAL

conda install -c conda-forge gdal

2. 准备地图文件

  • 源文件:map.png
  • 中国大致范围(EPSG:4326):
    • 左上角:73.40, 53.33
    • 右下角:135.05, 3.58

步骤1:PNG转GeoTIFF

基本转换

gdal_translate map.png map.tif

添加地理参考信息

gdal_translate -a_srs EPSG:4326 -a_ullr 73.40 53.33 135.05 3.58 map.png map_geo.tif

压缩输出

gdal_translate -co COMPRESS=LZW map.png map_compressed.tif

步骤2:验证地理信息

gdalinfo map_geo.tif

详细验证

gdalinfo -stats -mm -proj4 map_geo.tif

步骤3:坐标系转换(如需要)

WGS84转兰伯特投影

gdalwarp -t_srs "EPSG:4326" input.tif output.tif

添加自定义投影(使用.prj文件)

gdal_edit.py -a_srs "D:/path/lambert_custom.prj" map.tif

步骤4:生成瓦片地图

基本命令

gdal2tiles.py -p raster -z 0-10 map_geo.tif output_tiles

参数说明

  • -p raster:生成栅格瓦片(默认格式为 PNG)。
  • -z 0-10:生成 0(全局)到 10 级瓦片(根据数据分辨率调整,级别越高瓦片越详细)。
  • --processes=4:使用 4 个 CPU 核心加速生成(按需调整)。
  • --webviewer=all:生成所有预览 HTML(包括 OpenLayers、Leaflet 等)。
  • 输入文件路径:"D:\work\433专业教室建设\code\map-slice\resources\xian.tif"
  • 输出目录:"D:\work\433专业教室建设\output_tiles"

不同投影支持

# 麦卡托投影
gdal2tiles.py -p mercator -z 0-10 map.tif output_tiles

# 大地测量投影
gdal2tiles.py -p geodetic -z 0-8 map.tif output_tiles

步骤5:结果验证

目录结构检查

output_tiles/
├── 0/         # 0级瓦片
├── 1/         # 1级瓦片
...
├── 12/        # 12级瓦片
├── tilemapresource.xml
└── openlayers.html  # 预览文件

预览地图

在浏览器中打开output_tiles/openlayers.html,检查:

  • 地图显示是否正常
  • 缩放功能是否流畅
  • 各层级细节是否完整

其他

也可以使用ArcMap进行GUI可视化操作进行地理配准,再进行瓦片制作,多种实现方式根据自己需求选择。

posted @ 2025-07-07 15:26  AJun816  阅读(221)  评论(0)    收藏  举报