经纬志
首页 / deck.gl / API 文档

COORDINATE_SYSTEM

先看结论

坐标系统常量。它告诉图层数据里的位置该怎么解释——是经纬度、相对某个原点的偏移, 还是已经转换好的世界坐标。

最后验证 2026-11-03 · deck.gl 9.0 · 更新 2026-10-29 · 引用本文
import { COORDINATE_SYSTEM } from '@deck.gl/core'

常量

常量位置的含义
COORDINATE_SYSTEM.DEFAULT默认值,等价于 LNGLAT
COORDINATE_SYSTEM.LNGLAT[经度, 纬度, 高度],度与米,适用于大多数地理数据
COORDINATE_SYSTEM.LNGLAT_OFFSETS相对 coordinateOrigin 的经纬度增量,[Δlng, Δlat, Δz]
COORDINATE_SYSTEM.METER_OFFSETS相对 coordinateOrigin 的米制偏移,按投影平面计算
COORDINATE_SYSTEM.CARTESIAN直接给出世界坐标,不再做投影换算

相关图层属性

属性说明
coordinateSystem选择上表中的某个常量
coordinateOrigin局部坐标的原点,[lng, lat] 或 [lng, lat, z],仅对 OFFSETS 系列有效
modelMatrix整体变换矩阵,用于把图层放到自定义坐标系中

示例:以站点为中心的局部坐标

var origin = [116.391, 39.907, 0];

// 数据里的位置是相对站点的米制偏移
var local = new deck.ScatterplotLayer({
  id: 'local-points',
  data: offsets,                   // [{ dx: 120, dy: -80, dz: 12 }, ...]
  coordinateSystem: deck.COORDINATE_SYSTEM.METER_OFFSETS,
  coordinateOrigin: origin,
  getPosition: function (d) { return [d.dx, d.dy, d.dz]; },
  getRadius: 6,
  radiusUnits: 'pixels',
  getFillColor: [64, 140, 220, 200]
});

什么时候用偏移坐标

经纬度用双精度浮点表示,把几百万个局部点整体平移到离原点很远的位置再计算, 着色器里的单精度浮点会产生可见抖动(顶点跳变)。以站点或瓦片中心为原点、 用米制偏移描述位置,能让数值保持在较小范围内,抖动随之消失。 这是三维管线里常见的做法,deck.gl 通过 METER_OFFSETS 直接支持。

v9 的不可变更新

deck.gl 9 的图层不可变。切换坐标系或原点必须新建图层实例, 用 clone 加 deckgl.setProps 完成:

var next = local.clone({
  coordinateOrigin: [121.473, 31.230, 0],
  coordinateSystem: deck.COORDINATE_SYSTEM.LNGLAT
});

deckgl.setProps({ layers: [next] });

坐标系与数据必须一起换。coordinateSystem 只改变解释方式, 不会替你换算数值。把经纬度数据标成 CARTESIAN, 所有点会挤在原点附近,看起来像图层消失。

引用本文

经纬志(2026)。《COORDINATE_SYSTEM》。https://www.jingweizhi.com/deckgl/api/coordinate-system.html(访问日期 2026-11-03)。