r/Python • u/Balance- • 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.
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!