数据可视化数据分析【免费下载链接】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),仅供参考
企业数字化 ERP 产品动态
相关推荐
高光谱数据预处理实战:基于Python的完整流程与参数详解 简介:面向毕业设计、课程设计与高光谱研究场景,一套基于Python的高光谱数据预处理方法项目提供了标准正态变换、多元散射校正、Savitzky-Golay平滑滤波、滑动平均、一阶/二阶差分、小波变换、均值中心化、标准化、最大最小归一化、矢量归一化等经典算法&… · 2026/9/23 9:55:23
windows7和vista老项目入门到精通实战避坑指南 windows7和vista老项目入门到精通实战避坑指南 是不是也遇到过这种情况:手头有个老系统,基于windows7和vista开发,文档寥寥无几,看了一堆教程还是不会写项目,代码一跑就报错,配置改了三遍还是连不上数据库。这种“入门到精通… · 2026/9/23 9:55:23
Knip 完全指南:检测并修复 JS/TS 项目中未使用的依赖、导出与文件 代码质量静态分析CLI 【免费下载链接】knip ✂️ Find unused files, dependencies and exports in your JavaScript and TypeScript projects. Knip it before you ship it! 项目地址: https://gitcode.com/gh_mirrors/kn/knip 点击查看 免费下载 Knip(… · 2026/9/23 12:08:11
带GIPS音频处理库的libjingle老工程编译指南:从环境搭建到全量构建 做老项目维护的人一定有过这种体验:拿到一份多年前的工程代码,第一眼看到的是 README 里那句“请先安装 XXX,然后运行 XXX”,然后照着做,第一步就卡住了。“带GIPS音频处理库的libjingle工程”就是这类工程里很典型的一… · 2026/9/23 12:08:05
3分钟搞定电信永久0月租卡,2026最新实战解析 3分钟搞定电信永久0月租卡,2026最新实战解析 别被那些“官方文档太长抓不住重点”的坑坑了。很多人以为办张0月租卡就是填个表单,其实背后是一整套复杂的业务逻辑校验、跨省数据同步和资费套餐匹配。在2026年的最新实战环境中,电信的0月租卡已… · 2026/9/23 12:08:05
免Root安卓远程控制横评:ToDesk、向日葵、Airdroid延迟画质实测对比 免Root手机远程控制横评:ToDesk、向日葵、Airdroid三款APP谁才是安卓端真正能打的?2024年做远程控制的横测,其实挺有意思的。市面上叫得出名字的安卓远程桌面App不算少,但真正值得拿上台面比一比的,我个人觉得还得是这… · 2026/9/23 12:08:05
Tweepy 版本演进全解析:从 v1.0 到 v4.x 的 API 变迁与技术路线图 Tweepy 版本演进全解析:从 v1.0 到 v4.x 的 API 变迁与技术路线图 【免费下载链接】tweepy Twitter for Python! 项目地址: https://gitcode.com/gh_mirrors/tw/tweepy 本文以 tweepy 官方 变更日志 为骨架,结合当前仓库源码(版本 4.17… · 2026/9/23 12:08:05
狂奔弗雷德源码解析:3种主流实现方案横向对比 狂奔弗雷德源码解析:3种主流实现方案横向对比 看了一堆教程还是不会写项目?问题往往不在于语法,而在于你根本没看懂核心逻辑是怎么跑起来的。今天咱们不聊虚的,直接上干货,通过 源码解析… · 2026/9/23 12:07:58
3招搞定手机怎么下载微信面试难题实战项目解析 3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29