Skip to content
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

Google Summer of Code 2022 #11

Closed
martinfleis opened this issue Jan 27, 2022 · 5 comments
Closed

Google Summer of Code 2022 #11

martinfleis opened this issue Jan 27, 2022 · 5 comments

Comments

@martinfleis
Copy link
Member

During the last community call, we agreed that we should try to participate in the GSoC again this year. Note that the rules are a bit different and more flexible that they were before. See this blog for more.

The deadline for our application will be around end of March I guess (we'll participate via NumFOCUS umbrella org as before).

Until then, we can brainstorm some project ideas. Some can be reused from the last year (below).

Topics that can be reused

Pure Python GeoPackage IO

GeoPandas currently depends on fiona to read and write geospatial file formats. fiona, in turn, depends on GDAL, a mighty C library which allows reading almost any GIS file. However, installing fiona and GDAL can be cumbersome due to various dependency conflicts, which are not always easy to resolve.

To make it easier to get started with GeoPandas, we would like to make fiona an optional dependency. In order to do so, GeoPandas needs to support alternative file I/O that does not depend on GDAL or any additional C library; it should support this functionality purely in Python. We do not want to replace the full capability of fiona; fiona can still be optionally installed by those that need the full suite of capabilities.

We would like to enable native Python support for reading and writing the three most widely used geospatial file formats:

  • GeoJSON: nearly complete
  • ESRI Shapefile: proof of concept
  • GeoPackage: this project

GeoPandas can already generate GeoJSON-like output and create GeoDataFrames from JSON, and the methods need only minor amendments to fully support GeoJSON I/O.

Preliminary support for ESRI Shapefiles has been developed (see PR #1580) using a relatively light-weight implementation based on pyshp, which deals with the file format itself.

We have started prototyping GeoPackage support in a package called pgpkg and we believe this could become the basis for support within GeoPandas.

The GSoC project should expand and refine pgpkg and turn it into a production-ready library linked directly to GeoPandas to deliver pure Python interface to GeoPackage, limited to the reading and writing of vector data. Major tasks include updating the code to correctly support the GeoPackage specification, adding tests, and integrating within GeoPandas.

This project will contribute toward enabling GeoPandas to natively read and write vector files without fiona or GDAL.

Skills

  • Experience with vector GIS file formats
  • Familiarity with GeoPandas data structures (GeoSeries, GeoDataFrame)

Difficulty level

  • intermediate

Resources

GeoPackage implementation

Relevant Python projects

ESRI Shapefile implementation


Beautiful maps made simple: a static plotting project

GeoPandas currently covers a broad range of geospatial tasks, from data exploration to advanced analysis. However, one moment may tempt the user to use different software - plotting. GeoPandas can create static maps based on matplotlib, but they are a bit basic at the moment. It isn't straightforward to generate a complex map in a production-quality which can go straight to an academic journal or an infographic. We want to change this and remove barriers which we currently have and make it simple to create beautiful maps.

The project is composed of multiple tasks. We need to link matplotlib functionality better, to remove existing limitations of plot customisation. We should rework how the legend works and allow its easy adaptation to users' needs. Adding scale bar, north arrow, and other cartographic features (e.g. graticules) should be straightforward. And more, depending on the student's analysis.

We need to diagnose what is required, fix bugs we are aware of and bring new features closely linked to the existing plotting ecosystem built around matplotlib and GeoPandas.

The project is a cooperation with matplotlib team.

Skills

  • Experience with plotting
  • Familiarity with GeoPandas and matplotlib

Difficulty level

  • intermediate

Resources

GeoPandas plotting issues

Relevant Python packages

@martinfleis
Copy link
Member Author

Some other ideas to be considered:

@martinfleis
Copy link
Member Author

I have drafted the project proposals for this year - https://github.com/geopandas/geopandas/wiki/Google-Summer-of-Code-2022 with 4 projects:

Three of those are either reused or adapted from the last year (2 were not done and I have slightly modified dask-geopandas one). On top of those, I have included one on S2.

I will submit them to NumFOCUS as they are now (we have a deadline coming on Monday) but we can edit them as we want later.

I have tentatively kept mentors from the last year. @jorisvandenbossche and @brendan-ward have a look and let me know if you're fine with that. We may adapt/limit projects if some of you have a limited availability this year.
@geopandas/collaborators if any of you is interested in mentoring, give me a shout, anyone is welcome!

@benbovy I think it would also be great if you could be part of the S2 project (if we'll find a good student/contributor of course). Would you be willing to be one of the mentors of that project?

@martinfleis
Copy link
Member Author

Also, if you have any suggestions, feel free to edit the wiki!

@benbovy
Copy link

benbovy commented Mar 2, 2022

@benbovy I think it would also be great if you could be part of the S2 project (if we'll find a good student/contributor of course). Would you be willing to be one of the mentors of that project?

Yes I'd be happy to help.

@martinfleis
Copy link
Member Author

Thanks! I've edited the wiki accordingly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants