<div dir="ltr">+1<br><div>Anna</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Apr 19, 2022 at 6:42 PM Michael Barton <<a href="mailto:Michael.Barton@asu.edu">Michael.Barton@asu.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">



<div style="overflow-wrap: break-word;">
+1 Michael<br>
<div>
<div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">
<div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">
<div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">
<div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">
<div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">
<div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">
<div dir="auto" style="letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div dir="auto" style="text-align:start;text-indent:0px">
<div style="text-align:start;text-indent:0px">
<div style="text-align:start;text-indent:0px">
<div style="text-align:start;text-indent:0px">
<div style="text-align:-webkit-auto;text-indent:0px">
<span style="border-collapse:separate;text-indent:0px;border-spacing:0px">
<div style="overflow-wrap: break-word;">
<span style="border-collapse:separate;text-indent:0px;border-spacing:0px">
<div style="overflow-wrap: break-word;">
<span style="border-collapse:separate;text-indent:0px;border-spacing:0px">
<div style="overflow-wrap: break-word;">
<span style="border-collapse:separate;text-indent:0px;border-spacing:0px">
<div style="overflow-wrap: break-word;">
<span style="border-collapse:separate;text-indent:0px;border-spacing:0px">
<div style="overflow-wrap: break-word;">
<span style="border-collapse:separate;text-indent:0px;border-spacing:0px">
<div style="overflow-wrap: break-word;">
<span style="border-collapse:separate;text-indent:0px;border-spacing:0px">
<div style="overflow-wrap: break-word;">
<span style="border-collapse:separate;text-indent:0px;border-spacing:0px">
<div style="overflow-wrap: break-word;">
<font>
<div style="letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;font-variant-ligatures:normal;font-variant-east-asian:normal;line-height:normal">
<font color="#929292" face="Calibri" style="font-style:normal;font-size:11px">_____________________________</font></div>
<div style="font-variant-ligatures:normal;font-variant-east-asian:normal;line-height:normal">
<p style="margin-bottom:0in"><font color="#929292" face="Calibri" style="font-style:normal;font-size:11px"><font><span>C. Michael Barton<br>
Associate Director, School of Complex Adaptive Systems (</span></font><a href="https://scas.asu.edu/" target="_blank">https://scas.asu.edu</a><font><span>)<br>
Professor, School of Human Evolution & Social Change (<a href="https://shesc.asu.edu" target="_blank">https://shesc.asu.edu</a>)<br>
Director, Center for Social Dynamics & Complexity (<a href="https://complexity.asu.edu" target="_blank">https://complexity.asu.edu</a>)<br>
Arizona State University<br>
Tempe, AZ 85287-2701<br>
USA<br>
<br>
Executive Director, Open Modeling Foundation (</span></font><a href="https://openmodelingfoundation.github.io/" target="_blank">https://openmodelingfoundation.github.io</a><font><span>)<br>
Director, Network for Computational Modeling in Social & Ecological Sciences (<a href="https://comses.net" target="_blank">https://comses.net</a>)<br>
<br>
personal website: <a href="http://www.public.asu.edu/~cmbarton" target="_blank">http://www.public.asu.edu/~cmbarton</a> <br>
</span></font></font><br>
</p>
</div>
</font></div>
</span></div>
</span></div>
</span></div>
</span></div>
</span></div>
</span></div>
</span></div>
</span></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div><br>
<blockquote type="cite">
<div>On Apr 19, 2022, at 3:20 PM, Helena Mitasova via grass-psc <<a href="mailto:grass-psc@lists.osgeo.org" target="_blank">grass-psc@lists.osgeo.org</a>> wrote:</div>
<br>
<div>
<div dir="ltr" style="font-family:LucidaSans;font-size:14px;font-style:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">
<div dir="ltr">+1 Helena<br clear="all">
<div>
<div dir="ltr">
<div dir="ltr">
<div>
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr"><span style="font-family:Helvetica"><font size="1">
<div>Helena Mitasova</div>
<div>
<div>Professor, Department of Marine, Earth and Atmospheric Sciences</div>
<div>Faculty Fellow, Center for Geospatial Analytics</div>
<div>North Carolina State University</div>
<div>Raleigh, NC 27695-8208</div>
</div>
</font></span></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<br>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Tue, Apr 19, 2022 at 5:25 PM Vaclav Petras <<a href="mailto:wenzeslaus@gmail.com" target="_blank">wenzeslaus@gmail.com</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div dir="ltr">
<div>+1, Vaclav<br>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Tue, 19 Apr 2022 at 17:17, Veronica Andreo <<a href="mailto:veroandreo@gmail.com" target="_blank">veroandreo@gmail.com</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div dir="auto">
<div dir="auto">Dear PSC,
<div dir="auto"><br>
</div>
<div dir="auto">Caitlin has just completed her project for the student grant and submitted the final report (I FWD it here in case you missed it).</div>
<div dir="auto"><br>
</div>
<div dir="auto">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!</div>
<div dir="auto"><br>
</div>
<div dir="auto">I start with my +1 !!</div>
<div dir="auto"><br>
</div>
<div dir="auto">Vero</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">---------- Forwarded message ---------<br>
De:<span> </span><strong class="gmail_sendername" dir="auto">Caitlin Haedrich</strong><span> </span><span dir="auto"><<a href="mailto:caitlin.haedrich@gmail.com" rel="noreferrer" target="_blank">caitlin.haedrich@gmail.com</a>></span><br>
Date: lun., 18 abr. 2022 19:25<br>
Subject: [GRASS-dev] grass.jupyter Mini Project Final Report<br>
To: <<a href="mailto:grass-dev@lists.osgeo.org" rel="noreferrer" target="_blank">grass-dev@lists.osgeo.org</a>>, <<a href="mailto:grass-user@lists.osgeo.org" rel="noreferrer" target="_blank">grass-user@lists.osgeo.org</a>><br>
</div>
<br>
<br>
<div dir="ltr">Hi all,<br>
<br>
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!<br>
<br>
<b>The state of the art BEFORE the start of the Mini Project:</b><br>
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.<br>
<br>
<b>Project Goals</b>:<span> </span><br>
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).<br>
<br>
<b>The state of the art AFTER the Mini Project:</b><br>
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]<br>
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]<br>
3. Updated class names:
<ul>
<li>GrassRenderer -> Map</li><li>Grass3dRenderer -> Map3D</li><li>InteractiveMap</li><li>TimeSeries -> TimeSeriesMap</li></ul>
4. Thanks to Vaclav Petras, we also have a manual page for grass.jupyter [3]<br>
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:
<div>
<blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px">
<blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px">
</blockquote>
</blockquote>
<blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px">
>>> import pandas as pd<br>
<blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px">
</blockquote>
>>> import sqlite3<br>
>>> sql_path = gs.read_command("db.databases", driver="sqlite").replace('\n', '')<br>
>>> con = sqlite3.connect(sql_path)<br>
>>> sql_stat="SELECT * FROM field"<br>
>>> df = pd.read_sql_query(sql_stat, con)
<blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px">
</blockquote>
>>> con.close()<br>
>>> df</blockquote>
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.<br>
<br>
<b>Next Steps:</b><br>
1. Bug: InteractiveMap does not honor use_region=True for vectors.<br>
2. Bug: InteractiveMap for Jupyter does not handle not existing data properly (<a href="https://urldefense.com/v3/__https://github.com/OSGeo/grass/issues/2302__;!!IKRxdwAv5BmarQ!O6p_95e3SKYK5mKOIkmws-FQ3JJ3WRTZefvkke9v6p7LEJ21bU3fwxtja0adUtsw5WY$" rel="noreferrer noreferrer" target="_blank">https://github.com/OSGeo/grass/issues/2302</a>)<br>
3. InteractiveMap: add legend options for rasters, support simpleCRS for faster rendering, ToolTip integration for vector attributes<br>
4. Continue Pandas integration by adding standard json or csv output to modules that return text<br>
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.<br>
<br>
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!<br>
<br>
Best,<br>
Caitlin<br>
<br>
[1]<span> </span><a href="https://urldefense.com/v3/__https://mybinder.org/v2/gh/OSGeo/grass/main?urlpath=lab*2Ftree*2Fdoc*2Fnotebooks*2Ftemporal.ipynb__;JSUlJQ!!IKRxdwAv5BmarQ!O6p_95e3SKYK5mKOIkmws-FQ3JJ3WRTZefvkke9v6p7LEJ21bU3fwxtja0adprRiMPc$" rel="noreferrer noreferrer" target="_blank">https://mybinder.org/v2/gh/OSGeo/grass/main?urlpath=lab%2Ftree%2Fdoc%2Fnotebooks%2Ftemporal.ipynb</a><br>
[2]<span> </span><a href="https://urldefense.com/v3/__https://mybinder.org/v2/gh/OSGeo/grass/main?urlpath=lab*2Ftree*2Fdoc*2Fnotebooks*2Fgrass_jupyter.ipynb__;JSUlJQ!!IKRxdwAv5BmarQ!O6p_95e3SKYK5mKOIkmws-FQ3JJ3WRTZefvkke9v6p7LEJ21bU3fwxtja0adRk6yl2Q$" rel="noreferrer noreferrer" target="_blank">https://mybinder.org/v2/gh/OSGeo/grass/main?urlpath=lab%2Ftree%2Fdoc%2Fnotebooks%2Fgrass_jupyter.ipynb</a><br>
[3]<span> </span><a href="https://urldefense.com/v3/__https://grass.osgeo.org/grass81/manuals/libpython/grass.jupyter.html__;!!IKRxdwAv5BmarQ!O6p_95e3SKYK5mKOIkmws-FQ3JJ3WRTZefvkke9v6p7LEJ21bU3fwxtja0adpmpuH4w$" rel="noreferrer noreferrer" target="_blank">https://grass.osgeo.org/grass81/manuals/libpython/grass.jupyter.html</a><br>
[4]<span> </span><a href="https://urldefense.com/v3/__https://trac.osgeo.org/grass/wiki/GSoC/2021/JupyterAndGRASS/MiniGrant2022__;!!IKRxdwAv5BmarQ!O6p_95e3SKYK5mKOIkmws-FQ3JJ3WRTZefvkke9v6p7LEJ21bU3fwxtja0ad6AgVJHI$" rel="noreferrer noreferrer" target="_blank">https://trac.osgeo.org/grass/wiki/GSoC/2021/JupyterAndGRASS/MiniGrant2022</a><br>
[5]<span> </span><a href="https://urldefense.com/v3/__https://github.com/OSGeo/grass/projects/7__;!!IKRxdwAv5BmarQ!O6p_95e3SKYK5mKOIkmws-FQ3JJ3WRTZefvkke9v6p7LEJ21bU3fwxtja0ad5RqNnz4$" rel="noreferrer noreferrer" target="_blank">https://github.com/OSGeo/grass/projects/7</a></div>
</div>
_______________________________________________<br>
grass-dev mailing list<br>
<a href="mailto:grass-dev@lists.osgeo.org" rel="noreferrer noreferrer" target="_blank">grass-dev@lists.osgeo.org</a><br>
<a href="https://urldefense.com/v3/__https://lists.osgeo.org/mailman/listinfo/grass-dev__;!!IKRxdwAv5BmarQ!O6p_95e3SKYK5mKOIkmws-FQ3JJ3WRTZefvkke9v6p7LEJ21bU3fwxtja0ad4KaWWAc$" rel="noreferrer noreferrer noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/grass-dev</a><br>
</div>
</div>
_______________________________________________<br>
grass-psc mailing list<br>
<a href="mailto:grass-psc@lists.osgeo.org" target="_blank">grass-psc@lists.osgeo.org</a><br>
<a href="https://urldefense.com/v3/__https://lists.osgeo.org/mailman/listinfo/grass-psc__;!!IKRxdwAv5BmarQ!O6p_95e3SKYK5mKOIkmws-FQ3JJ3WRTZefvkke9v6p7LEJ21bU3fwxtja0adSHlKPSg$" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/grass-psc</a><br>
</blockquote>
</div>
_______________________________________________<br>
grass-psc mailing list<br>
<a href="mailto:grass-psc@lists.osgeo.org" target="_blank">grass-psc@lists.osgeo.org</a><br>
<a href="https://urldefense.com/v3/__https://lists.osgeo.org/mailman/listinfo/grass-psc__;!!IKRxdwAv5BmarQ!O6p_95e3SKYK5mKOIkmws-FQ3JJ3WRTZefvkke9v6p7LEJ21bU3fwxtja0adSHlKPSg$" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/grass-psc</a><br>
</blockquote>
</div>
</div>
<span style="font-family:LucidaSans;font-size:14px;font-style:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;float:none;display:inline">_______________________________________________</span><br style="font-family:LucidaSans;font-size:14px;font-style:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">
<span style="font-family:LucidaSans;font-size:14px;font-style:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;float:none;display:inline">grass-psc
 mailing list</span><br style="font-family:LucidaSans;font-size:14px;font-style:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">
<a href="mailto:grass-psc@lists.osgeo.org" style="font-family:LucidaSans;font-size:14px;font-style:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank">grass-psc@lists.osgeo.org</a><br style="font-family:LucidaSans;font-size:14px;font-style:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">
<a href="https://urldefense.com/v3/__https://lists.osgeo.org/mailman/listinfo/grass-psc__;!!IKRxdwAv5BmarQ!O6p_95e3SKYK5mKOIkmws-FQ3JJ3WRTZefvkke9v6p7LEJ21bU3fwxtja0adSHlKPSg$" style="font-family:LucidaSans;font-size:14px;font-style:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank">https://urldefense.com/v3/__https://lists.osgeo.org/mailman/listinfo/grass-psc__;!!IKRxdwAv5BmarQ!O6p_95e3SKYK5mKOIkmws-FQ3JJ3WRTZefvkke9v6p7LEJ21bU3fwxtja0adSHlKPSg$</a><span style="font-family:LucidaSans;font-size:14px;font-style:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none;float:none;display:inline"></span></div>
</blockquote>
</div>
<br>
</div>

_______________________________________________<br>
grass-psc mailing list<br>
<a href="mailto:grass-psc@lists.osgeo.org" target="_blank">grass-psc@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/grass-psc" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/grass-psc</a><br>
</blockquote></div>