Well said Stefan, great improvements done through these grants!
-jeff
On 2022-04-20 4:31 a.m., Stefan Blumentrath wrote:
Yes, great work indeed!
Also kudos to those who initiated the mini-grant concept! It is for sure
a very good and very fruitful investment of resources. Speaking for
myself, it really motivates to donate to the project when one sees such
great outcome as from Linda and Caitlin!
Cheers
Stefan
*From:*grass-psc <[email protected]> *On Behalf Of
*Veronica Andreo
*Sent:* tirsdag 19. april 2022 22:07
*To:* GRASS-PSC <[email protected]>
*Subject:* [GRASS-PSC] [Motion] Approve Caitlin's student grant final
report and issue the second payment
Dear PSC,
Caitlin has just completed her project for the student grant and
submitted the final report (I FWD it here in case you missed it).
I hereby propose to approve her final report and issue the second half
of the payment. Big thanks to Caitlin and her mentors for your work and
commitment! Thanks as well to those testing and providing feedback along
the process! Great work Caitlin!! Congratulations!
I start with my +1 !!
Vero
---------- Forwarded message ---------
De: *Caitlin Haedrich* <[email protected]
<mailto:[email protected]>>
Date: lun., 18 abr. 2022 19:25
Subject: [GRASS-dev] grass.jupyter Mini Project Final Report
To: <[email protected] <mailto:[email protected]>>,
<[email protected] <mailto:[email protected]>>
Hi all,
Last week, we wrapped a final push on grass.jupyter and are excited for
its official release with GRASS 8.2. Here's my final report along with a
summary of grass.jupyter changes introduced as part of the project.
Thank you all for your support, feedback and testing over the past few
months!
*The state of the art BEFORE the start of the Mini Project:*
During GSoC 2021, we created “grass.jupyter”, a package that improves
the integration of GRASS GIS and Jupyter with a set of functions for
displaying GRASS data in Jupyter Notebooks. In its previous state,
“grass.jupyter” allows users to create static visuals and simple
interactive maps. However, several additional features are needed to
allow Jupyter users to fully and easily access the power GRASS,
including space-time dataset visualization and more options for
interactive mapping.
*Project Goals*:
In preparation for the stable release of grass.jupyter with GRASS 8.2,
this project had three main goals: (1) create space time dataset
visualizations for use in Jupyter Notebooks, (2) improve the integration
of GRASS with folium (leaflet library for Python) and (3) write a
function for displaying vector attributes in nicely-formatted tables
(using Pandas or Geopandas). Along the way, we also wanted to finalize
the naming of grass.jupyter classes and create documentation (thank you
Vaclav Petras).
*The state of the art AFTER the Mini Project:*
1. New TimeSeriesMap class that creates ipywidget time sliders of space
time datasets (see attached timeseriesmap.png) and a notebook
documenting it's usage [1]
2. Improved GRASS-folium integration allowing rasters and vectors to be
added to existing folium maps (see attached grass-folium.png) and
updated notebook demonstrating its usage [2]
3. Updated class names:
* GrassRenderer -> Map
* Grass3dRenderer -> Map3D
* InteractiveMap
* TimeSeries -> TimeSeriesMap
4. Thanks to Vaclav Petras, we also have a manual page for grass.jupyter [3]
5. I didn't end up working to integrate GRASS and Pandas. It seems that
it is quite straightforward to display vector attributes in
nicely-formatted Pandas tables. For example:
>>> import pandas as pd
>>> import sqlite3
>>> sql_path = gs.read_command("db.databases",
driver="sqlite").replace('\n', '')
>>> con = sqlite3.connect(sql_path)
>>> sql_stat="SELECT * FROM field"
>>> df = pd.read_sql_query(sql_stat, con)
>>> con.close()
>>> df
There are other outputs that would be nice to display in nice Pandas
tables, like text output from r.univar, r.stats, or t.vect.list.
However, this is difficult since there is no standard output that is
easily parse-able to pandas. I think the best way would be to create a
standard json or csv output for all modules that return text. Then, it
would be simple to take any module output and convert to a nice-looking
Pandas table.
*Next Steps:*
1. Bug: InteractiveMap does not honor use_region=True for vectors.
2. Bug: InteractiveMap for Jupyter does not handle not existing data
properly (https://github.com/OSGeo/grass/issues/2302
<https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FOSGeo%2Fgrass%2Fissues%2F2302&data=05%7C01%7Cstefan.blumentrath%40nina.no%7C1d6e6450cf894890572208da224a0d9d%7C6cef373021314901831055b3abf02c73%7C0%7C0%7C637859999631379871%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=BOvuume3H23ptQ8orKnhuptwIJMQg%2FqhBNWGYkx5kLo%3D&reserved=0>)
3. InteractiveMap: add legend options for rasters, support simpleCRS for
faster rendering, ToolTip integration for vector attributes
4. Continue Pandas integration by adding standard json or csv output to
modules that return text
5. ... And many others! I think there's still lots of ways we can
improve and expand the integration of GRASS and Jupyter. Ideas welcome.
You can find an archive of all my weekly reports at [4] and follow next
steps for grass.jupyter on our project page on GitHub [5]. Thank you
again to Vaclav Petras and Anna Petrasova for their guidance and
contributions to grass.jupyter. And, another thank you to Vero Andreo,
Stefan Blumentrath and Markus Neteler for their feedback and testing!
Best,
Caitlin
[1]
https://mybinder.org/v2/gh/OSGeo/grass/main?urlpath=lab%2Ftree%2Fdoc%2Fnotebooks%2Ftemporal.ipynb
<https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmybinder.org%2Fv2%2Fgh%2FOSGeo%2Fgrass%2Fmain%3Furlpath%3Dlab%252Ftree%252Fdoc%252Fnotebooks%252Ftemporal.ipynb&data=05%7C01%7Cstefan.blumentrath%40nina.no%7C1d6e6450cf894890572208da224a0d9d%7C6cef373021314901831055b3abf02c73%7C0%7C0%7C637859999631379871%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=xoIEUwwuiGAAxxm1yLnooXMqImHY%2BgYgyCCFtAA6V5c%3D&reserved=0>
[2]
https://mybinder.org/v2/gh/OSGeo/grass/main?urlpath=lab%2Ftree%2Fdoc%2Fnotebooks%2Fgrass_jupyter.ipynb
<https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmybinder.org%2Fv2%2Fgh%2FOSGeo%2Fgrass%2Fmain%3Furlpath%3Dlab%252Ftree%252Fdoc%252Fnotebooks%252Fgrass_jupyter.ipynb&data=05%7C01%7Cstefan.blumentrath%40nina.no%7C1d6e6450cf894890572208da224a0d9d%7C6cef373021314901831055b3abf02c73%7C0%7C0%7C637859999631379871%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=2tGXMGTj5lXgLZDdWfdJ7PyBrZm9MbMB49wUFOYjeKs%3D&reserved=0>
[3] https://grass.osgeo.org/grass81/manuals/libpython/grass.jupyter.html
<https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgrass.osgeo.org%2Fgrass81%2Fmanuals%2Flibpython%2Fgrass.jupyter.html&data=05%7C01%7Cstefan.blumentrath%40nina.no%7C1d6e6450cf894890572208da224a0d9d%7C6cef373021314901831055b3abf02c73%7C0%7C0%7C637859999631379871%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=q2tfFUqGYSj5Htv2MMsbu%2B2zjEOTFpAGAtIRonLClVA%3D&reserved=0>
[4]
https://trac.osgeo.org/grass/wiki/GSoC/2021/JupyterAndGRASS/MiniGrant2022 <https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftrac.osgeo.org%2Fgrass%2Fwiki%2FGSoC%2F2021%2FJupyterAndGRASS%2FMiniGrant2022&data=05%7C01%7Cstefan.blumentrath%40nina.no%7C1d6e6450cf894890572208da224a0d9d%7C6cef373021314901831055b3abf02c73%7C0%7C0%7C637859999631379871%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=KUvSF3OicSOBsbOw4VWnTzEDqlFDExbH5OhndpWE04I%3D&reserved=0>
[5] https://github.com/OSGeo/grass/projects/7
<https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FOSGeo%2Fgrass%2Fprojects%2F7&data=05%7C01%7Cstefan.blumentrath%40nina.no%7C1d6e6450cf894890572208da224a0d9d%7C6cef373021314901831055b3abf02c73%7C0%7C0%7C637859999631379871%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=RgwtNmsiBK%2FWDCOyo3BPuQGUeBtOnAKn9jcV5RufVQU%3D&reserved=0>
_______________________________________________
grass-dev mailing list
[email protected] <mailto:[email protected]>
https://lists.osgeo.org/mailman/listinfo/grass-dev
<https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.osgeo.org%2Fmailman%2Flistinfo%2Fgrass-dev&data=05%7C01%7Cstefan.blumentrath%40nina.no%7C1d6e6450cf894890572208da224a0d9d%7C6cef373021314901831055b3abf02c73%7C0%7C0%7C637859999631379871%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=IOxrtKnf1rxScAA9Wzeim8Scnmrpq4IB865PUBfhhWY%3D&reserved=0>
_______________________________________________
grass-psc mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/grass-psc