BuildNot yet confirmed elsewhere1 publisher2 min readPublished
Aida van de Wetering rebuilds GeoPolars as a geo namespace inside Polars in about 125 commits
Aida van de Wetering has pushed about 125 commits to GeoPolars' dev branch since mid-September, rebuilding it as a geo expression namespace inside Polars. Polars teams with spatial work now have something to test before they reach for GeoPandas, though the project is still a prototype.
The Engineer · Build desk

What happened
- The prototype handles points, linestrings and polygons, their multi-variants, and a bounding box type.
- It reads and writes WKB and WKT, and it can write GeoParquet.
- Affine transforms cover translate, rotate, scale, skew and arbitrary matrices, and the matrix can differ from row to row.
Why it matters
- decision Polars teams can now try geometry inside their existing queries before deciding to convert frames to GeoPandas for spatial steps.
- constraint Going by the published feature list, pipelines that start from GeoParquet files or depend on spatial joins cannot move to the prototype yet.
- cost Code written against the dev branch can break as the API changes, so evaluating it means pinning a commit and budgeting for rework.
The case the dev.to write-up makes for the rebuild is integration. It argues that putting geometry inside Polars removes an external dependency and the overhead of switching between libraries [10]. That saving only shows up in a given pipeline if a real share of its runtime goes into moving frames between Polars and GeoPandas. If most of the time goes into the geometry operations themselves, we would not expect a namespace alone to change the total.
The affine transforms show the expression design most clearly. Translate, rotate, scale, skew and arbitrary matrices are all supported, and the matrix can vary per row [7]. That makes the transform parameters column data, so one query can move each geometry by its own offset. This is good design, and it is what a geo namespace inside a DataFrame engine should look like.
We'd spend the first afternoon on the CRS work. The prototype keeps CRS metadata and computes distance, length and area according to it. The write-up gives the split between geodesic and planar methods as the example of why that matters [5]. A useful first test is one polygon of known area stored twice, once in a geographic CRS and once in a projected one. The two results should agree with each other and with a reference value.
The operations list is short. It names centroid, boundary, interior and coordinate accessors [6]. The write-up does not list spatial predicates, spatial joins or buffering. On I/O, WKB and WKT go both ways, and GeoParquet only goes out [4]. A pipeline whose inputs arrive as GeoParquet could, going by that list, write its output through GeoPolars and still need another route to read its input.
GeoPolars has gone dormant once already [1]. The write-up credits the revival to one contributor [2]. It also warns that if the project stalls again, users risk staying locked into GeoPandas [11]. Its own guidance is to use GeoPolars once it matures when performance and Polars integration are critical, and to rely on GeoPandas for stability otherwise [9]. In our view that is the right split for production. The dev branch is ready for a test against a team's own geometry now, on an API the write-up calls fluid [8].
What to watch
- A tagged release or a written API stability commitment for GeoPolars.
- Spatial predicates, spatial joins and GeoParquet reading landing on the dev branch.
- Whether commits start arriving from contributors other than Aida van de Wetering.
Clarity's read
What the record supports and how the coverage leans. The claims behind it follow.
Reality
- Evidence30
- Adoption
- Insufficient
- Hype gap+35
- Incentives
- Insufficient
- Confidence35
Claim ledger
Ranked by verification strength, evidence, and original report placement.
- [1]
GeoPolars, a geospatial extension for the Polars DataFrame library, is being revived after a period of dormancy.
- [2]
Since mid-September, Aida van de Wetering has driven the project with approximately 125 commits to the dev branch, turning GeoPolars into a Polars-native geo expression namespace.
- [3]
The prototype supports point, linestring and polygon geometry types, their multi-variants, and a bounding box type.
- [4]
The prototype reads and writes WKB and WKT formats and writes GeoParquet.
- [5]
The prototype manages Coordinate Reference System metadata, with distance, length and area calculations tailored to the CRS; the write-up says different CRSs require specific geometric methods, e.g. geodesic vs. planar.
- [6]
Geometric operations in the prototype include centroid, boundary, interior and coordinate accessors.
- [7]
Affine transforms supported are translate, rotate, scale, skew and arbitrary matrices, which can vary per row.
- [8]
GeoPolars remains a prototype with a fluid API.
- [9]
The write-up's rule: if performance and integration with Polars are critical, use GeoPolars once it matures; otherwise rely on GeoPandas for stability.
- [10]
The write-up argues that embedding geospatial capabilities directly into Polars eliminates the need for external dependencies and the overhead of switching between libraries.
- [11]
The write-up warns that if GeoPolars stalls again, the community risks remaining locked into GeoPandas.
Sources
1 independent publisher whose own reporting we read for this story.
- dev.toGeoPolars Development Resumes: New Features and Functionality Added to Geospatial Extension for Polars
1 article · October 11, 2026
Topics and entities
Follow any of these and your For You feed starts watching them — no settings page required.
Topics
- Geospatial data processingFollow
- DataFrame librariesFollow