地图应用里的一个坐标输入错误,常常不是显示偏一点那么简单。deck.gl 9.3.6 于 2026 年 7 月 2 日发布,修复了 CoordinatesGeocoder 对负度分秒(DMS)坐标的处理,也修复了 Jupyter widget 的 JSON 注册和 GeoJSON 类型依赖。这个小版本提醒 GIS 团队:坐标解析、前端类型和 Notebook 可视化属于同一条交付链,升级时应按真实数据流回归,而不是只看地图能否打开。

可核查事实

  • deck.gl v9.3.6 的 GitHub Release 发布于 2026 年 7 月 2 日,标记为正式版而非 prerelease。

  • Release notes 列出三项修复:负 DMS 度数、Jupyter widget JSON 注册覆盖、@types/geojson 依赖缺失。

  • 对应提交说明,旧的 DMS 计算会将 -37°48'00" 算为 -36.2,修复后结果为 -37.8。

  • 该提交新增两组负 DMS 测试:-37°48'00", 144°57'47" 预期纬度 -37.8;-33°51'36", -70°40'12" 预期纬度 -33.86、经度 -70.67。

  • layers 包的修复把 @types/geojson^7946.0.16 加入 dependencies。

  • pydeck 相关提交将前端兼容范围写为 ~9.3.*,并修正了 widget JSON converter 的注册方式。

  • 同一提交在 widget 示例中加入静态地理位置 PopupWidget 与 hover 模式 InfoWidget。

核心机制:负号必须作用于整个 DMS 值

v9.3.6 的 CoordinatesGeocoder 修复将度数的符号先单独保存,再用度、分、秒的绝对值组成数值,最后把符号作用于完整结果。官方提交给出的反例是 -37°48'00":旧逻辑得到 -36.2,正确结果应为 -37.8。对 GIS 而言,这是输入语法到地理位置的一次实质转换;如果在经纬度、南北半球或跨赤道数据中错了 1.6 度,后续缓冲、叠加和服务范围结论都会失去意义。

官方 Release 的版本边界也要被记录:deck.gl v9.3.6于2026年7月2日发布,且不是prerelease。Release notes列出负DMS度数、Jupyter widget JSON注册覆盖和@types/geojson依赖缺失三项修复。layers包将@types/geojson以^7946.0.16加入dependencies。pydeck前端兼容范围为~9.3.*,并调整widget JSON converter注册。它们分别对应发布对象、坐标解析、类型构建和 Notebook 交互,不能只选择其中一个做验收。旧DMS计算会将-37°48'00"算为-36.2,修复后为-37.8。

提交还新增两组测试:-37°48'00", 144°57'47" 的预期纬度为 -37.8;-33°51'36", -70°40'12" 的预期坐标为纬度 -33.86、经度 -70.67。把这些值放进自身的坐标导入与搜索回归集,能验证应用是否在 deck.gl 之前或之后又引入了不同的符号规则。

GIS 场景:从表单、GeoJSON 到 Notebook 的同一条链

发布说明还修复了 @types/geojson 依赖缺失,实际变更将 ^7946.0.16 写入 layers 包 dependencies。类型声明不会校正坐标,但它会影响 GeoJSON 图层在构建、编辑器检查和下游包解析时是否能可靠识别 geometry 与 feature 定义。升级验收应同时编译使用 GeoJSONLayer 的应用,并加载包含 Point、LineString、Polygon 及空属性的真实数据样本。

Jupyter widget 的 JSON 注册覆盖也在此次修复中出现。相关提交把 pydeck 前端兼容范围写为 ~9.3.*,并调整 JSON converter 的 widget 注册;同一示例加入静态地理位置 PopupWidget 和 hover 模式 InfoWidget。若团队把 Notebook 作为空间分析交付界面,除了检查浏览器地图,还要在固定 Python 环境中重跑导出、交互、鼠标悬停和序列化结果。

技术路径

  1. 收集带正负号、南北东西方向、非零分秒和边界坐标的 DMS 样本;包含官方的 -37.8 与 -33.86/-70.67 回归值。

  2. 在升级前后比较解析出的十进制度、地图落点和下游空间查询结果,发现偏差即阻断发布。

  3. 为 GeoJSON 图层执行 TypeScript 构建和运行时加载测试,确认依赖树实际解析到 @types/geojson

  4. 在锁定的 Python 与前端版本中打开 pydeck Notebook,验证 JSON 序列化、widget 注册、PopupWidget 和 InfoWidget。

  5. 将 deck.gl、pydeck、浏览器、数据样本版本与截图或导出图层一起存档,形成可复现的可视化验收记录。

检查清单

  • 负 DMS 的符号是否覆盖度、分、秒全部值?

  • 经纬度方向字符与显式负号同时出现时,解析规则是否明确?

  • GeoJSON 图层的类型检查、构建和加载是否都通过?

  • Notebook 中的 widget 是否能被 JSON 正确恢复并响应悬停?

  • 升级记录是否包含前端、Python、数据和浏览器版本?

风险边界

v9.3.6 修复的是 deck.gl 已知的解析、注册和依赖问题,不替代坐标参考系转换、轴顺序处理、数据精度校核或业务边界审核。DMS 样本通过也不能证明所有坐标输入格式都安全;应用仍应拒绝不完整坐标、记录原始文本,并让用户确认解析后的点位。~9.3.* 是关联前端范围的实现信息,不是对其他依赖组合的兼容承诺。

资料依据

本文依据 deck.gl v9.3.6 官方 ReleaseCoordinatesGeocoder 与 Jupyter widget 修复提交GeoJSON 类型依赖修复提交 撰写。版本日期、修复范围、测试值、依赖版本和 widget 变更均来自一手材料;验收步骤为工程建议。

结论

地理可视化升级的正确验收对象不是一张能渲染的地图,而是从坐标文本到类型检查、Notebook 交互和空间结论的完整链路。先把负 DMS、GeoJSON 和 widget 回归纳入发布门槛,再扩大版本升级范围。