GRASS GSoC 2024 Improve user experience in Jupyter Notebooks

From GRASS-Wiki
Revision as of 13:28, 17 June 2024 by Hamed5001 (talk | contribs) (Add weeks (0...3) reports)
Jump to navigation Jump to search
Student Name Riya
Organization ​OSGeo - Open Source Geospatial Foundation
Mentor Name Anna Petrasova, Corey White
GitHub Fork View Repo
GSoC proposal View Proposal

Abstract

The grass.jupyter.InteractiveMap() tool offers basic map visualization features like zooming and layer addition but suffers from suboptimal rendering speed (approximately 7.55 seconds per loop) and cumbersome data integration, particularly with large datasets. Additionally, its reliance on the Pseudo-Mercator projection limits its versatility. This abstract highlights the need for enhancements to improve rendering efficiency, streamline data integration, and broaden projection support for increased usability and functionality.

Goal

Main Goals:

  1. Enhance InteractiveMap with interactive data retrieval features, enabling users to query attribute values and draw geometries directly on the map.
  2. Implement support for custom coordinate reference systems (CRS) in InteractiveMap to eliminate the need for layer reprojection and improve visualization speed.
  3. Optimize rendering processes for SeriesMap and TimeseriesMap by parallelizing map rendering using standard Python libraries like multiprocessing.

Stretch Goals:

  1. Improve integration between GRASS and Pandas for smoother data handling and analysis.
  2. Incorporate tile-based rendering to efficiently display extensive datasets without compromising performance.
  3. Integrate a graphical user interface (GUI) within a Jupyter Notebook for enhanced user experience and ease of interaction with InteractiveMap functionalities.

Timeline

Period Timeline Tasks Status
Bonding Period

May 1- May 26

  1. Initial research
  2. Proposal Discussion with Mentor
  3. Work on this PR
Official Coding Period
Week 1 (May 27 - June 1) Write initial function for adding button to grass.jupyter.InteractiveMap()
Week 2 (June 2 - June 8) Add click to see attributes features to the button
Week 3 (June 9 - June 15) Add button to allow users to create drawings in the displayed InteractiveMap()
Week 4 (June 16 - June 22) Add tools to the button to create different drawings
Week 5 (June 23 - June 29) Add functionality to retrieve points from user drawn drawings and add them to the data, if the user wants
Week 6 (June 30 - July 6) Speeding up the rendering of InteractiveMap() by skipping reprojection
Week 7 (July 7 - July 13)
  1. Code refactoring, testing, documentation
  2. Mid-term Evaluation: July 12
Week 8 (July 14 - July 20) Adding parallelization to TimeseriesMap and SeriesMap
Week 9 (July 21 - July 27) Documentation, testing, writing tutorial
Week 10 (July 28 - August 3) Working on a selected stretch goal
Week 11 (August 4 - August 10) Working on a selected stretch goal
Week 12 (August 11 - August 17) Write project summary
Evaluation Period
August 26 - September 2 Submit code and final evaluation


Reports

Community Ponding Period

What did I get done this week?

  • Finished Wiki setup.
  • Throughly read EODAG documentation, and got familiar with its capabilities.
  • Got familiar with the contribution guidelines.
  • Created an initial add-on, with some basic features of EODAG, and went through the compilation process.
  • Setup development environment.

What do I plan on doing next week?

  • I plan on designing and building the initial structure for the i.eodag module.

Am I blocked on anything?

I will be having my final exams for the next two weeks. I have started working on the module and done extra research so that I can extend my work during the exams period. I won’t stop working during that period, but I might not have as much time, so I will get some extra work done before and after the exams to catch up, and so no work will be compromised.

Meetings attended during the community bonding period:

  • May 16th 2024: Introductory meeting about EODAG, and what are the expected results, and how will the add-on be used.
  • May 23rd 2024: Discussing module structure and features.

Week 1

Following is the week 1 report, for adding EODAG support to GRASS GIS, GSoC 2024.

What did I get done this week?

  • Built the initial version of i.eodag, found in this pull request [1].
  • Added feature for searching & downloading by product (aka. dataset) type.
  • Added the following parameter for searching:
    • Start time and end time. Users can specify any time that complies with ISO 8601, including adding the timezone.
    • AOI. As for now, it uses the current computational region, and supporting GeoJSON will be added next week.
    • Provider. Currently specifying a provider is required by the user, and search won’t be done without it. It is planned to add a way to search broadly without specifying a provider.
  • Added feature for downloading products by their IDs.
  • Added option for the user to specify their custom EODAG config file [2].

What do I plan on doing next week?

  • Add cloud coverage parameter for searching.
  • Add printing for relevant metadata information, regarding the products found by searching, and relevant configurations set by the user.
  • Add saving results as a GeoJSON, allowing users to save the search results locally and then load them later, to perform downloading or further filtering.
  • Add an option to download products from a list of IDs saved in a text file.
  • Add handling of AOI as GeoJSON.

Am I blocked on anything?

Nothing, except the previously mentioned exams, but everything is going well.


Week 2

Following is the week #2 report, for adding EODAG support to GRASS GIS, GSoC 2024.

What did I get done this week?

  • Added search filtering for datasets with cloud coverage.
  • Added a method to download datasets, using a text file with a list of IDs.
  • Added printing metadata about the datasets found after searching.
  • All the mentioned above are addressed in this PR [1].

What do I plan on doing next week?

  • Continue working on adding AOI with Vector maps, and possibly GeoJSON.
  • Add an initial test suite, for the i.eodag module.

Am I blocked on anything?

No, and I will be done with my final exams by Wednesday this week.

Week 3

Here is my weekly report for week #3, adding EODAG support to GRASS GIS, GSoC 2024.

What did I get done this week?

  • Added support for setting the AOI based on a Vector Map [1].
  • Added support for two ways of searching:
    • General Search: searches through all the available providers for results.
    • Restricted Search: only searches through a predetermined – set by the user – provider.
  • Started working on a testsuite, for the i.eodag module.
  • i.eodag manual can be found here.

What do I plan on doing next week?

  • Wrap up the initial testsuite.
  • Add filtering & sorting for search results.
  • Attend – online – and give a brief presentation about the i.eodag module, for the GRASS Community Meeting Prague 2024. [2]

Am I blocked on anything?

I am not currently blocked by anything.