tzf 及相关项目的基础开发工作基本稳定了,在之前的文章零星有些开发和设计过程的资料:
- 2022-05-29, 在 Go 中将经纬度转时区
- 2022-08-01, Python 中经纬度转时区新的选择
- 2022-08-27, 用 Go 编写 Python 扩展
- 2022-09-10, tzf 预览图制作
- 2022-11-24, tzfpy Rust 重写
这一篇是最终的总结,从项目的启动到逐步优化和演进的过程。
tzf 及相关项目的基础开发工作基本稳定了,在之前的文章零星有些开发和设计过程的资料:
这一篇是最终的总结,从项目的启动到逐步优化和演进的过程。
在处理大规模的散点数据时,有时候我们需要提供一个只读的查询 API 在地图上做可视化。 当数据量过大,比如百万这个量级,将数据一口气全部返回给前端在浏览器上处理是不太合适的。 应当在后端服务内完成一定聚合,将聚合后的搜索返回给前端。 这里介绍下在 Go 中如何使用 MongoDB + Tile 索引实现这件事。
tzfpy 是 tzf 的 Python
binding。 如果只是本地可用,Go 代码加上 CGO 扩展编译成 .so
文件就能用了。
不过要做成发布到 PyPI 上在其他地方能直接安装的 wheel 是有些曲折的,看 CI
失败的记录就挺明显的。
基本数据处理流程:
挺想用 Rust 实现一遍,然后用 pyo3 封装下,看看能不能比 Numba 加速的 timezonefinder 更快。
在 Go 里定义 struct 及其序列化&反序列化的方式都是通过 Tag 的方式做的, 但是在我开始使用 Apollo 的时候没有找到社区的解决方案,所以翻了下 BSON/JSON/YAML 的反序列化实现方式, 觉得用反射机制好像是可以做的,于是就开搞了,项目在 https://github.com/caiyunapp/oap。
好奇想试下能否实现聚合一些数据然后再处理,情况是:
基本实现: