Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Spatial Polars

A package that extends polars for working with geospatial data.

Spatial polars relies on polars, shapely, pyogrio, geoarrow-python, and pyproj for I/O and processing.

Spatial polars uses lonboard for displaying geospatial data on an interactive map

Spatial polars is mostly just glue code connecting the work of others to bring spatial funcitonality to polars.

Documentation

Documentation can be found here: https://atl2001.github.io/spatial_polars/

Lazily access data

Spatial polars scan_spatial function will scan geoparquet files and any other data source supported by pyogrio and return a polars lazy frame. A read_spatial function is also provided which simply wraps scan_spatial with a .collect() at the end to return a polars dataframe. The scan_spatial function was the reason this package was created, it is much preferred over the read_spatial function for the same reasons that polars recommends using the lazy API over the eager API.

Geometry

When reading data from a spatial data source, the geometries are stored in a polars struct, with one polars binary field holding the geometry of the feature as WKB and another polars categorical field which stores the coordinate reference system as WKT. Storing the geometries in this manner has an advantage over using a polars binary field holding EWKB, because this allows spatial polars to work with custom projections which do not have a SRID, without a need to store custom SRID codes/CRS definition elsewhere.

All geometries in a single column are expected to have the same CRS, currently there is nothing enforcing or validating this.

Spatial polars allows you to intermix geometry types (eg. points and lines) in the same geometry column. Attempting to write a dataframe with a geometry column that has mixed geometry types may produce an error if the format is not capable of handling more than one geometry type.

Spatial Expressions

Many expressions are included which work with the geometry struct to convert the data in the polars series to a numpy array of WKB, then convert the array of WKB to shapely geometry objects, and then use shapely's functions to do the spatial operation, then if the result is an array of geometries, they will be converted back to WKB and stored in a struct with the same CRS as the input. Shapely functions that return something which is not a geometry will result in an appropriately typed polars series. Spatial polars expressions can be accesssed under the .spatial namespace or directly from the SpatialExpr class. When accessing the expressions thru the SpatialExpr class type hints will be available.

Spatial expressions which use more than one geometry

Expressions in polars require a single column as the input. For computations involving two geometries, if the computation should be applied to the geometries in the column and a single other geometry, that geometry can be supplied to the expression as a scalar. However if the computation needs to be run between two geometries each coming from different column in the dataframe, the two geometry struct columns must be placed into a single struct which is then supplied to the spatial polars expression.

Motivation

Spatial polars was motivated by interest in polars IO plugins, and wanting to be able to easily read data from geopackages and GPX files into a polars dataframe.

Thank you!

This project would not be possible without all the work from the maintainers/contributors of of all the packages it's built on listed above, along with all the code they're built on, and inspired by.

Metadata

Release files for spatial-polars 0.5.0b1

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

Source distribution (sdist)

Source distribution for spatial-polars 0.5.0b1
File Size Uploaded
spatial_polars-0.5.0b1.tar.gz 20.1 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for spatial-polars 0.5.0b1
File
spatial_polars-0.5.0b1-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details
spatial_polars-0.5.0b1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 abi3 Linux glibc 2.17+ x86-64 Details
spatial_polars-0.5.0b1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.9 abi3 Linux glibc 2.17+ ARM64 Details
spatial_polars-0.5.0b1-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details
spatial_polars-0.5.0b1-cp39-abi3-macosx_10_12_x86_64.whl CPython 3.9 abi3 macOS 10.12+ x86-64 Details

Total release size: 42.5 MB

Release files / spatial_polars-0.5.0b1.tar.gz

Download URL spatial_polars-0.5.0b1.tar.gz
Size 20.1 MB
Tags Source
SHA-256 checksum
How to use checksums
c9f9daa674b3fc8023a445eb82abed7cdf83084806e1c1cf02035fc005734191
BLAKE2b-256 checksum
How to use checksums
c3835b21b6c56f2263fb88fa469954308fd176fbd59249d0374b77f7880e8728
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / spatial_polars-0.5.0b1-cp39-abi3-win_amd64.whl

Download URL spatial_polars-0.5.0b1-cp39-abi3-win_amd64.whl
Size 4.3 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
8a475526f11617a4ea0923d4391e8e2f1d8e9b82f42836b839a048057d134515
BLAKE2b-256 checksum
How to use checksums
deba32aa44a38066729c23d3a997bce40bd142a68d9ac7d90b24a355c256613b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / spatial_polars-0.5.0b1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL spatial_polars-0.5.0b1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 4.9 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
d9dced6d6ff629f5792d43724147b967343c99e1db5e512255f061c3cf32f28f
BLAKE2b-256 checksum
How to use checksums
aebc1bedc0cfc0cbf42c20177b7590fc3b0bec4dbbfdc88d5b9f4e53537c09af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / spatial_polars-0.5.0b1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL spatial_polars-0.5.0b1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 4.8 MB
Tags CPython 3.9 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
a9a6d92de41173bddf94141151511ed5259fbba1ae53ecbdb15fc54b21a0efbb
BLAKE2b-256 checksum
How to use checksums
781c9a02b8bdcf5c7e29a1c7e6a480c4e7870296d0aef0ed378997e703e4180d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / spatial_polars-0.5.0b1-cp39-abi3-macosx_11_0_arm64.whl

Download URL spatial_polars-0.5.0b1-cp39-abi3-macosx_11_0_arm64.whl
Size 4.1 MB
Tags CPython 3.9 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e1c0155e28a78ac722e92da03380e6faaa1d6d6e98fbda5c49bf8908a8dd59b8
BLAKE2b-256 checksum
How to use checksums
a9009a8533f4047e419e2e2c1f863e59d4b75306199f4db2f704a8ad2c7e2c0d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / spatial_polars-0.5.0b1-cp39-abi3-macosx_10_12_x86_64.whl

Download URL spatial_polars-0.5.0b1-cp39-abi3-macosx_10_12_x86_64.whl
Size 4.2 MB
Tags CPython 3.9 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
05d86b8cd799b76b67f8008ef9c88a183f4836ba00b11aab736897b23123d049
BLAKE2b-256 checksum
How to use checksums
4a48f2cae24b6ed442efa0f0c0029bde37076c69c49c7472b013405ddcb64b6a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0
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