新闻详情

新闻详情

首页 / 资讯中心 / 详情

Kepler.gl 数据容器升级指南:从 `allData` 二维数组迁移到 `DataContainerInterface`

发布时间:2026/10/28 2:59:42来源:尧图网络
Kepler.gl 数据容器升级指南:从 `allData` 二维数组迁移到 `DataContainerInterface`
数据可视化数据分析【免费下载链接】kepler.glKepler.gl is a powerful open source geospatial analysis tool for large-scale data sets.项目地址https://gitcode.com/gh_mirrors/ke/kepler.gl点击查看免费下载Kepler.gl 在数据层架构上完成了一次重要演进KeplerTable不再直接持有allData: any[][]二维数组而是通过统一的DataContainerInterface数据容器接口来存取数据从而在保持既有图层、过滤与交互能力的同时为 Arrow、DuckDB 等列式数据源铺平了道路。本文以仓库内 src/table/UPGRADE-data-container.md 为骨架结合 kepler-table.ts、data-container-interface.ts 等源码逐文件说明升级点、接口语义与典型迁移写法帮助使用自定义图层、处理器或访问器的开发者平滑完成迁移。一、升级背景为什么要引入 Data Container本次升级的核心变更只有一句话KeplerTable.allData: any[][]被替换为KeplerTable.dataContainer: DataContainerInterface。在旧架构中KeplerTable内部维护一个二维数组allData所有图层、过滤器和数据处理器都直接按row[fieldIdx]方式读取单元格。在新架构中行数据不再以“数组拷贝”的形式暴露而是通过数据容器按需读取。从源码结构看这一变更的直接证据位于 kepler-table.tsKeplerTable类声明了dataContainer: DataContainerInterface字段并通过get length()返回this.dataContainer.numRows()行数、取值、索引等所有数据访问都转交给容器完成。KeplerTable的importData/updateSchema方法也统一通过createDataContainer(data, {fields, arrowTable, inputDataFormat})构造容器见 kepler-table.ts。数据容器体系由>// 旧写法示意accessor config row row[fieldIdx]新式访问器采用柯里化结构先接收数据容器dc再接收包含行索引的对象dconst pointPosAccessor config dc d { // d 形如 {index: number}通过容器按需取值 return dc.valueAt(d.index, fieldIdx); };注意这里d不是行数组而是{index}对象。访问器内部应通过dc.valueAt(d.index, fieldIdx)或封装好的Field.valueAccessor({index})取值。这一设计保证了访问器不依赖具体存储布局行式 / 列式也便于在mapIndex这类只传索引的遍历中复用。4.2Field.valueAccessor与getValue在 kepler-table.ts 中getFieldValueAccessor(f, i, dc)为每个字段绑定数据容器返回的访问器接收{index: number} | any[]参数// kepler-table.ts 中访问器的生成逻辑节选 return readFieldValue.bind(null, i, dc); // readFieldValue: Array.isArray(d) ? d[fieldIdx] : dc.valueAt(d.index, fieldIdx)也就是说Field.valueAccessor现在同时兼容{index}对象与物化行数组后者用于 trip 图层等需要悬停物化信息的场景。相应地KeplerTable.getValue(columnName, rowIdx)内部通过field.valueAccessor({index: rowIdx})取值见 kepler-table.ts。如果你的自定义代码直接调用field.valueAccessor(row)请改为field.valueAccessor({index: rowIndex})。4.3 过滤器管道getFilterFunction与filterDataByFilterTypes过滤逻辑集中在 filter-utils.ts。升级后getFilterFunction(field, dataId, filter, layers, dataContainer)新增第 5 个参数dataContainer且返回的谓词函数第 1 个参数变为{index}对象filterDataByFilterTypes({dynamicDomainFilters, cpuFilters, filterFuncs}, dataContainer)的第 2 个参数为DataContainerInterface域计算函数getNumericFieldDomain(dataContainer, valueAccessor)、getTimestampFieldDomain(dataContainer, valueAccessor)以及>// dc (getIndex, getData) d {...} const gpuFilterProps getGpuFilterProps(filters, dataId, fields, prevGpuFilter); // 之后gpuFilterProps.filterValueAccessor(dc)(getIndex, getData)(d, {index})KeplerTable中的GpuFilter类型kepler-table.ts完整描述了这一签名filterValueAccessor: (dc) (getIndex?, getData?) (d, objectInfo?) (number | number[])[]。GPU 过滤通过把过滤范围与取值访问器下发到 GPU 侧完成大规模数据的快速过滤升级后访问器必须能从dc读取值。4.5 地理数据工具mapbox-utils.ts 的geoJsonFromData()不再接收allDatagetGeometry、getProperties两个回调的参数改为{index}对象内部通过数据容器取值geojson-utils.ts 的getGeojsonDataMaps(dataContainer, ...)第 1 个参数为容器trip-utils.ts 的isTripGeoJsonField(dataContainer, field)第 1 个参数为容器h3 相关isHexField/getHexFields也按清单新增容器参数。4.6 数据与交互工具kepler-table.ts 中maybeToDate(isTime, fieldIdx, format, dc, d)新增第 4 个参数DataContainerInterface用于在过滤 / 排序时将时间字符串按格式转换为 Unix 毫秒interaction-utils中getTooltipDisplayValue/getTooltipDisplayDeltaValue的参数类型改为DataRow即悬停信息的数据载体从“数组”变为“行对象”需要改用row.valueAt(columnIndex)或row.values()读取见>赞分享数据可视化数据分析【免费下载链接】kepler.glKepler.gl is a powerful open source geospatial analysis tool for large-scale data sets.项目地址https://gitcode.com/gh_mirrors/ke/kepler.gl点击查看免费下载相关推荐CANN/ops-tensor Block Epilogue 基础框架Block Epilogue 基础框架 公共接口说明 概述 Block 层后处理组件用于矩阵乘计算后的额外处理。不同实现Empty、StreamK提供不同算子库人工智能高性能计算CANNAscendOpenProject 运维迁移指南从打包安装到 Docker Compose、PostgreSQL 升级与旧数据迁移实战OpenProject 运维迁移指南从打包安装到 Docker Compose、PostgreSQL 升级与旧数据迁移实战 OpenProject 作为开源项后端前端项目管理企业应用协同办公Meetily升级指南从v0.0.4到v0.0.5数据迁移教程Meetily升级指南从v0.0.4到v0.0.5数据迁移教程 前言为什么这次升级至关重要 你是否曾因软件升级导致重要会议记录丢失根据Meetily用户人工智能AI 应用语音本地部署桌面应用上一篇推荐项目Django-HTMX - 为你的Django应用注入现代Web魔力下一篇auto-save.nvim完全配置教程从基础设置到高级自定义打造你的专属自动保存体验创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/10/27 6:27:07

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/10/27 8:06:52

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/10/26 12:48:02

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/10/27 15:44:59

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/10/27 1:55:44

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/10/26 21:26:08

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉