Skip to main content

Banner

Polars ST

Polars ST provides spatial operations on Polars DataFrames, Series, and Expressions. Just like Shapely and GeoPandas, it make use of the GEOS library, meaning that its API is mostly identical to theirs.

>>> import polars_st as st
>>> gdf = st.GeoDataFrame({
...     "category": ["A", "A", "B"],
...     "geometry": [
...         "POLYGON((0 0, 0 4, 4 2, 0 0))",
...         "POLYGON((4 0, 4 4, 0 2, 4 0))",
...         "POLYGON((0 0, 2 2, 2 0, 0 0))",
...     ]
... })
>>> gdf = gdf.group_by("category").agg(st.intersection_all()).with_columns(area=st.area())
>>> gdf.with_columns(st.to_wkt())
shape: (2, 3)
┌──────────┬─────────────────────────────────────┬──────┐
│ category ┆ geometry                            ┆ area │
│ ---      ┆ ---                                 ┆ ---  │
│ str      ┆ str                                 ┆ f64  │
╞══════════╪═════════════════════════════════════╪══════╡
│ B        ┆ POLYGON ((0 0, 2 2, 2 0, 0 0))      ┆ 2.0  │
│ A        ┆ POLYGON ((4 2, 2 1, 0 2, 2 3, 4 2)) ┆ 4.0  │
└──────────┴─────────────────────────────────────┴──────┘

Installation

Polars ST is published on PyPI so you can install it with your preferred package manager.

pip install polars-st

How it works

Geometries are stored as EWKB in regular Polars Binary columns. EWKB is a extension to the WKB standard popularized by PostGIS, that also stores information about the CRS of each geometry as an integer code called SRID.

For every spatial operations, the WKB will be parsed into a Geometry object so the operation can be done. If the operation result is a geometry, it will then be serialized back to WKB. Because of that round-trip, some operations might turn out to be slower than GeoPandas. In most cases however, the performance penalty will be marginal and you will fully benefit from the parallelization capabilities of Polars.

About GeoPolars

GeoPolars is an very promising tool for manipulating geographic data in Polars based on the GeoArrow specification. It however seems to be quite a long way from being ready and feature-complete, mostly due to Polars lack of support for Arrow Extension Types and subclassing of core datatypes.

polars-st stores geometry as EWKB in regular Binary columns and delegates core functionality to GEOS, which allows it to be ready now, with full support for Z / M coordinates, curved geometry types (CircularString, CurvePolygon, ...) and Series with mixed geometry type and SRIDs.

About Polars

This project is not affiliated with Polars. The design language was deliberately made very close to that of Polars to highlight the fact that this is an exclusive extension to Polars, and as a tribute to the effectiveness of the original design.

About GEOS

In order to save myself (and yourself) from the burden of GEOS version-specific features and bugs, polars-st statically link to GEOS main. This means that all documented features are guaranteed to be available. This also means that this project is LGPL licensed, the same way GEOS is.

License

Copyright (C) 2024 Aurèle Ferotin

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

Metadata

Release files for polars-st 0.7.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for polars-st 0.7.2
File Size Uploaded
polars_st-0.7.2.tar.gz 257.4 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for polars-st 0.7.2
File
polars_st-0.7.2-cp310-abi3-win_arm64.whl CPython 3.10 abi3 Windows ARM64 Details
polars_st-0.7.2-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
polars_st-0.7.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 abi3 Linux glibc 2.17+ x86-64 Details
polars_st-0.7.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 abi3 Linux glibc 2.17+ ARM64 Details
polars_st-0.7.2-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details
polars_st-0.7.2-cp310-abi3-macosx_10_12_x86_64.whl CPython 3.10 abi3 macOS 10.12+ x86-64 Details

Total release size: 320.7 MB

Release files / polars_st-0.7.2.tar.gz

Download URL polars_st-0.7.2.tar.gz
Size 257.4 kB
Tags Source
SHA-256 checksum
How to use checksums
7dfdb3b98987015d50494a12c7e729dc4234345ab4bbd3fc36cae62a3e92e94b
BLAKE2b-256 checksum
How to use checksums
0be0222e3ec152757e9d207821e10f296e0984b2c6007d4a1004070cd74e4366
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / polars_st-0.7.2-cp310-abi3-win_arm64.whl

Download URL polars_st-0.7.2-cp310-abi3-win_arm64.whl
Size 49.4 MB
Tags CPython 3.10 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
1e6a5a812fa0b2df51e72990e20d97abef4d94a77b5ee5d738324122ec38f5f2
BLAKE2b-256 checksum
How to use checksums
4c5752c6d4d68d579cd00e9dcd7f4f4c0884453f78565e9795b46b2b4d78f916
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / polars_st-0.7.2-cp310-abi3-win_amd64.whl

Download URL polars_st-0.7.2-cp310-abi3-win_amd64.whl
Size 54.8 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
a43cc953f53ad9da03bf390d47b0ba85b326074cf653a21dba1bcbb3ac62d3a1
BLAKE2b-256 checksum
How to use checksums
2a1fb2ac19dedfc59934513b02ac3445574f44ce1945c039a32810a3bd6a57ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / polars_st-0.7.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL polars_st-0.7.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 51.9 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
2230a049b3000d2b163664207f282785ae9e358827af627d74607e123aa9bade
BLAKE2b-256 checksum
How to use checksums
b4ee7ffb1eeb6840b73ffa931bea97bddeb52f293e020dcf73137a51bf165a72
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / polars_st-0.7.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL polars_st-0.7.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 48.3 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
9d969b8fa6a9eea462b300bdef9cb5cd7104c80f2607eff760c4e5663218e652
BLAKE2b-256 checksum
How to use checksums
8be5206324ce522c6ab21b16ccf551b7a994c115f679481ad6d70aa88efdc937
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / polars_st-0.7.2-cp310-abi3-macosx_11_0_arm64.whl

Download URL polars_st-0.7.2-cp310-abi3-macosx_11_0_arm64.whl
Size 57.1 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ab3e32e28b272d54f23588dd626285648feb0d80793adc08c69dd52e0c964d63
BLAKE2b-256 checksum
How to use checksums
e798ac3736eff33c11f6de96636ef1ee0d03d8fffe58ce6c03b05f97b52feece
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release files / polars_st-0.7.2-cp310-abi3-macosx_10_12_x86_64.whl

Download URL polars_st-0.7.2-cp310-abi3-macosx_10_12_x86_64.whl
Size 58.9 MB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
b5b0debbaf9e4038cf1f75a5edf9743da9e004a2f68dc1cb40d067e1c4445551
BLAKE2b-256 checksum
How to use checksums
f0086bbdcf48c911dd579aaa417c2c995f64e93cb638c397646eab3e589124f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.15.0

Release history Release notifications | RSS feed

0.10.0

7 release files

0.9.0

7 release files

0.8.0

7 release files

This release

0.7.2 This release

7 release files

0.7.1

7 release files

0.7.0

7 release files

0.6.2

7 release files

0.6.1

6 release files

0.6.0

6 release files

0.5.0

6 release files

0.4.3

6 release files

0.4.2

6 release files

0.4.1

6 release files

0.4.0

6 release files

0.3.0

6 release files

0.2.0

6 release files

0.1.9

6 release files

0.1.8

6 release files

0.1.7

6 release files

0.1.6

6 release files

0.1.5

6 release files

0.1.4

6 release files

0.1.3

6 release files

0.1.2

6 release files

0.1.1

6 release files

0.1.0

6 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page