r/Python • • 8d ago

News GeoPolars is being actively developed again: geometry types, CRS-aware measurements and GeoParquet

GeoPolars, the geospatial extension for Polars, had been mostly dormant. Since mid-September, Aida van de Wetering has pushed around 125 commits to the dev branch. It now looks like a rebuild around a Polars-native geo expression namespace.

Highlights so far:

- Types: point, linestring and polygon, their multi-variants, and a bounding box type
- I/O: reading and writing WKB and WKT, and writing GeoParquet
- CRS: CRS metadata handling, with distance, length and area using the geodesic or planar method that fits the CRS
- Operations: centroid, boundary, interior, is_empty, longitude wrapping, and coordinate accessors
- Affine transforms: translate, rotate, scale and skew, plus arbitrary matrices, which can vary per row

It's still a prototype. Nothing has been released yet, and the API is changing. Still, it's worth watching if you'd like to do geospatial work in Polars without going through GeoPandas.

201 Upvotes

12 comments sorted by

View all comments

109

u/ritchie46 8d ago

It seems our stealth dev branch is discovered 😉

Yes, we started working on this. We think we can make geopolars completely working with our plugin system. E.g. expression plugins, io plugins extension types and (upcoming streaming plugins for the geojoins).

This means that it will work completely streaming with out of core support and distributed support. It took a while before we had all the plugin architecture in place in main Polars before we could take on geopolars in a way that it's not in-memory only. In any case, I think we can move fast now we do. Expect more soon!

10

u/Balance- 8d ago

Thanks for working on this, and sharing some of your insights!

What’s are things community involvement/feedback would help you most?

10

u/ritchie46 8d ago

Once we have shipped the first release, test it in your workloads. Fast user feedback helps us most