2 个版本
0.1.0-alpha.3 | 2022年10月15日 |
---|---|
0.1.0-alpha.1 | 2022年7月13日 |
在 地理空间 类别中排名 #221
82KB
1.5K SLoC
GeoPolars
Rust 和 Python 的地理空间 DataFrame
摘要
GeoPolars 扩展了 Polars DataFrame 库,以用于地理空间数据。
- 使用 GeoArrow 作为内部内存模型。
- 使用 Rust 编写
- Python 绑定(以及未来的 WebAssembly)
- 支持多线程
目前,GeoPolars 是一个 原型,不应被视为生产就绪。
使用方式
Rust
GeoPolars 已发布到 crates.io,名称为 geopolars
。
文档可在 docs.rs/geopolars 查看。
Python
早期 alpha 版本 (v0.1.0-alpha.3
) 已发布到 PyPI
pip install --pre geopolars
发布过程包括许多平台的二进制 wheel,因此安装应很方便,无需从源代码编译底层 Rust 代码。
已开始制作文档网站,但尚未上线。
WebAssembly
Polars 本身尚未存在于 WebAssembly 中,尽管已经讨论了为其添加绑定的可能性。GeoPolars 的长期目标是拥有一个 WebAssembly API。
与 GeoPandas 的比较
模仿是最真诚的恭维!GeoPandas — 以及其底层的 shapely
和 GEOS
库 — 是一个令人难以置信的生产就绪工具。
GeoPolars 的功能或稳定性远不及 GeoPandas,但竞争是好的,而且由于它的纯 Rust 内核,GeoPolars 将更容易在 WebAssembly 中使用。
未来工作
未来工作的最大部分是
-
将几何形状存储在高效的Arrow-native格式中,而不是作为WKB缓冲区(如当前原型所做的那样)。这取决于Polars,它目前不支持Arrow
FixedSizeList
数据类型,但他们最近表示愿意添加最小的FixedSizeList
支持。 -
启用
georust/geo
算法以无复制的方式访问Arrow数据。原型当前在每个几何操作中将WKB几何形状复制到geo
结构中,这是昂贵的。这取决于向
geo
库添加对几何访问特性的支持,这是一项大型工作。参见georust/geo/discussions/838。我已经开始探索这个问题。 -
实现GeoArrow扩展类型,以便在Rust中无缝处理CRS元数据,而不是在Python包装器中。
依赖项
~37MB
~679K SLoC