You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何制作阿尔伯斯/等距圆锥投影栅格瓦片?QGIS尝试失败求方案

制作非墨卡托投影瓦片并在Leaflet中通过Proj4Leaflet展示的方法

一、QGIS生成非墨卡托瓦片的正确流程

之前用QGIS失败大概率是关键步骤没踩对,按下面的流程来:

  • 先转换数据源投影:如果你的数据源是其他投影(比如WGS84),用QGIS的「重新投影图层」工具(菜单栏矢量/栅格 → 投影 → 重新投影图层)转成你需要的非墨卡托投影(比如UTM、高斯-克吕格等)。
  • 打开瓦片导出工具:菜单栏选项目 → 导出 → 导出瓦片。
  • 核心配置项:
    • 瓦片坐标系:必须选择目标非墨卡托投影,别用默认的Web墨卡托(EPSG:3857)。
    • 缩放级别:根据数据范围和精度设置,小范围高精度可以多设几级,大范围则减少级别避免生成时间过长。
    • 输出目录:选一个空文件夹,QGIS会按z/x/y层级生成瓦片(少数投影可能是z/y/x结构,记好这个规则)。
    • 勾选「覆盖现有瓦片」,防止旧瓦片干扰新导出结果。
  • 导出后检查文件夹结构,确认每个缩放级的瓦片都生成完整。

二、用Proj4Leaflet加载瓦片到Leaflet

1. 准备依赖

确保页面本地引入三个库:Leaflet、Proj4.js、Proj4Leaflet(直接用本地文件,无需CDN)。

2. 定义自定义投影

用Proj4字符串定义目标投影,以UTM 50N(EPSG:32650)为例:

// 替换成你需要的投影参数
var customCRS = new L.Proj.CRS('EPSG:32650',
  '+proj=utm +zone=50 +datum=WGS84 +units=m +no_defs',
  {
    // 分辨率数组:单位米/像素,必须和QGIS导出时的分辨率一一对应
    resolutions: [8192, 4096, 2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1],
    // 投影原点:可先使用Web墨卡托原点测试,再根据实际范围调整
    origin: [-20037508.342789244, 20037508.342789244]
  }
);

注:投影参数需对应EPSG代码的官方定义,确保字符串完全正确。

3. 创建地图实例

初始化Leaflet地图时指定自定义CRS:

var map = L.map('map', {
  crs: customCRS,
  continuousWorld: true, // 非墨卡托投影必须开启,避免地图重复显示
  worldCopyJump: false
}).setView([30, 120], 5); // 替换成你的数据中心坐标和初始缩放级

4. 添加瓦片图层

根据QGIS导出的瓦片结构设置路径:

L.tileLayer('tiles/{z}/{x}/{y}.png', { // 若为z/y/x结构则改成{z}/{y}/{x}.png
  maxZoom: 13, // 和QGIS导出的最大缩放级保持一致
  minZoom: 0,
  attribution: '自定义瓦片'
}).addTo(map);

常见问题排查

  • 瓦片偏移:检查数据源是否正确转成目标投影,或分辨率数组与QGIS导出的不匹配。
  • 地图不显示:检查瓦片路径是否正确、投影参数是否写错,或缩放级超出了导出范围。

内容的提问来源于stack exchange,提问作者Nikolay Zolotov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 21:11:29