2 个版本

0.1.0-alpha.32022年10月15日
0.1.0-alpha.12022年7月13日

地理空间 类别中排名 #221

MIT 许可证

82KB
1.5K SLoC

GeoPolars

geopolars

Rust 和 Python 的地理空间 DataFrame

Test PyPI Package version Downloads

摘要

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 — 以及其底层的 shapelyGEOS 库 — 是一个令人难以置信的生产就绪工具。

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