Python 中批量将经纬度转换为时区名称方式对比
对比的维度有两个: 不同的 DataFrame 实现,这里用的是 Pandas 和 Polars,前者是最流行的框架,后者则是用 Rust 驱动的更节约内存的框架 不同的经纬度转时区库的实现,这里用的是 timezonefinder1 和 tzfpy2 相关代码可以在仓库中浏览 df-lng-lat-timezones-showcase ...
对比的维度有两个: 不同的 DataFrame 实现,这里用的是 Pandas 和 Polars,前者是最流行的框架,后者则是用 Rust 驱动的更节约内存的框架 不同的经纬度转时区库的实现,这里用的是 timezonefinder1 和 tzfpy2 相关代码可以在仓库中浏览 df-lng-lat-timezones-showcase ...
tzf 及相关项目的基础开发工作基本稳定了,在之前的文章零星有些开发和设计过程的资料: 2022-05-29, 在 Go 中将经纬度转时区 2022-08-01, Python 中经纬度转时区新的选择 2022-08-27, 用 Go 编写 Python 扩展 2022-09-10, tzf 预览图制作 2022-11-24, tzfpy Rust 重写 这一篇是最终的总结,从项目的启动到逐步优化和演进的过程。 ...
书接上文: 在 Go 中将经纬度转时区 经过一个周末的各种折腾,终于用 Rust 实现了 tzf 的功能,代码在 ringsaturn/tzf-rs。 又用了晚上跑了多次 CI 将 Python 移植也重写出来了 ringsaturn/tzfpy。 tzfpy 只要安装 >= 0.11.0 版本的就是用纯 Rust 实现的,在这个版本号之前都是 Python+CGO 实现的。 API 参数和之前一样,没有变化,但是索引命中的时候只需要 3~4 微妙,之前 Python+Go 需要 16 微妙。 最慢的单次查询 300 多微妙,timezonefinder(用 C 实现的多边形算法版本) 最慢的时候会有 1000 多微妙。 ...
上周花了点时间学习下 mbtiles 文件格式,顺手给 tzf 项目制作了一个 social preview media: 制作流程很简单: 安装 https://github.com/mapbox/tippecanoe 安装 https://github.com/mapbox/mbview 下载时区的 GeoJSON 文件 1 2 3 # 根据 GeoJSON 制作 .mbtiles 文件 tippecanoe -o timezone.mbtiles -l Timezons -z7 combined-with-oceans.fmt.json mbview ./timezone.mbtiles 网页里调整合适的角度,截图,调整下图片的分辨率即可。 ...
https://www.zeitverschiebung.net/ https://blog.ringsaturn.me/posts/tzf-social-media/ https://www.rfc-editor.org/rfc/rfc6557.html https://data.iana.org/time-zones/tz-link.html https://github.com/evansiroky/timezone-boundary-builder http://ringsaturn.github.io/tzf-web/
上回 说到在 Go 里弄出了一个 tzf 的库,可以非常快速得到经纬度所在的时区信息。 当时的想法是用 Rust 实现出来然后用 maturin 制作 Python 扩展。 经过一段时间的摸索发现 Rust 的坑有点大,于是 2022-07-23 转换了方向,在 Python 里调用 Go 编译出来的 .so 文件。 验证 demo 还算简单 ringsaturn/tzf#11。 ...
2022-05-29 01:04 +0800 立了个年度 Flag:在 Go 里用多边形搜索实现经纬度转时区 2022-05-29 20:47 +0800 搞出来了 https://github.com/ringsaturn/tzf 基本数据处理流程: 挺想用 Rust 实现一遍,然后用 pyo3 封装下,看看能不能比 Numba 加速的 timezonefinder 更快。 ...