-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Geopanda functionalities in polars #1830
Comments
Not that I know. I never used GeoPandas, but after a quick look it seems to rely on storing python objects in a pandas dataframe (shapely objects?). It also depends on |
Seems like I was right: https://blog.dask.org/2017/09/21/accelerating-geopandas-1
Which resulted in this issue: geopandas/geopandas#473 which resulted in PyGEOS package:
Using the optional |
In rust there is the https://georust.org/ project, the idea was to implement functionalities similar to those that geopandas have for polars but manipulating geographic data that are widely used these days Thanks !! |
In this context it is probably good to know that there is currently an ongoing effort to create a common specification for storing geodata in arrow and parquet: https://github.com/geopandas/geo-arrow-spec |
I was just musing about geospatially-extended polars today, and surprised to see that there are already multiple issues about it here. Some thoughts:
In my mind, this gives us all we need to create an add-on library for geospatial support in polars. The todo list would look something like:
An initial question is just: can an extension package wrap Polars and can it implement a simple item-wise operation like |
@kylebarron The idea of keeping the projects separate seems perfect to me.
|
I don't know of a native proj port in Rust, and I think it would be a massive undertaking. Presumably |
I would think having rust-only dependencies would be preferable. While geos is really powerful and well tested, it will surely complicate things when targeting multiple platforms or providing binary artifacts. On the other side there are things missing in the rust ecosystem which are already present elsewhere. Going with geozero and the georust ecosystem sounds reasonable to me, though. Regarding a proj-alternative in rust, there is https://github.com/busstoptaktik/geodesy , but the project already mentions in the Readme that it is currently at an early stage. |
@kylebarron I am also very interested in working on this. Have been doing a lot of geo just using the arrow2 and geo crate but having geopandas like functionality in polars would make things a lot easier. If it's something your working on and looking for a collaborator let me know! |
@stuartlynn This is the geopolars repo, you can visit it and contribute https://github.com/kylebarron/geopolars |
Hey @stuartlynn. I did start hacking in a repo as mentioned above. So far there's enough to serve as a minimal proof of concept. It's currently on hold while researching an RFC to georust on using Arrow memory as a zero-copy format for georust algorithms. You're welcome to create an issue or discuss on geopolars/geopolars#1. |
Love it thanks! |
https://github.com/geopolars/geopolars exists, and it looks like it's coming together nicely - going to close this issue then, but please let me know if I've misunderstood and can reopen |
It appears geopolars is on hold: the last commit to main is from 7 months ago, and the last alpha release about 1.5 years ago. Is it perhaps possible to re-open the current issue to signal that other solutions are welcome as well? |
The main blocker for geopolars is #9112. I don't want to build out a full subclassing approach like GeoPandas does, which I think has a pretty high maintenance overhead. I'm working on Arrow-based Rust/Python functionality in https://github.com/geoarrow/geoarrow-rs, and then whenever #9112 is solved (see also discussion in #7288) we can resume integration in geopolars. |
There is some known way to work in polars with geo shapes like Geopandas does in python?
The text was updated successfully, but these errors were encountered: