diff --git a/shean_ICESat-2_hackweek_tutorial_GeospatialAnalysis.ipynb b/shean_ICESat-2_hackweek_tutorial_GeospatialAnalysis.ipynb index 01d78fc..deba5a1 100644 --- a/shean_ICESat-2_hackweek_tutorial_GeospatialAnalysis.ipynb +++ b/shean_ICESat-2_hackweek_tutorial_GeospatialAnalysis.ipynb @@ -9,7 +9,7 @@ "*Not intended for trillions of ATL03 points\n", "\n", "ICESat-2 hackweek \n", - "June 18, 2019 \n", + "June 19, 2019 \n", "David Shean" ] }, @@ -62,17 +62,22 @@ "\n", "## The Scientific Python landscape\n", "\n", - "* Python, iPython, Jupyter\n", + "* Python\n", + "* iPython, Jupyter\n", "* NumPy, Pandas, Matplotlib, SciPy\n", - "* xarray, scikit-learn, \n", + "* xarray, scikit-image, scikit-learn\n", + "\n", + "One interpretation of this stack:\n", "\n", "![2017 Scientific Python Stack](https://ryanwingate.com/assets/images/python/python-1-1.png)\n", "Slide from Jake VanderPlas’s presentation at PyCon 2017, entitled “The Unexpected Effectiveness of Python in Science.”\n", "\n", "## The Geospatial Python landscape\n", "* GDAL/OGR, GEOS, PROJ\n", - "* shapely, fiona\n", - "* geopandas, rasterio, Ccrtopy\n", + "* shapely, fiona, pyproj\n", + "* geopandas, rasterio, cartopy\n", + "\n", + "[Insert shiny new figure here]\n", "\n", "## Complementary approaches for ICESat-2 data\n", "\n", @@ -81,14 +86,15 @@ " * Basic array manipulations\n", " * Array size limited by memory\n", "2. Higher-level data science - *analysis, interpetation, and visualization*\n", - " * NumPy under the hood, convenience/functionality comes with small performance hit\n", + " * NumPy under the hood\n", + " * Convenience and flexibility comes with small performance hit\n", " * Labels make life easier (don't need to remember integer indices)\n", "\n", - "At the end of the day, most of us just want/need (x,y,z,t) with ICESat.\n", + "Here, we're going to explore #2 with an existing dataset.\n", "\n", - "As with all things in the *nix/open-source/Python world, there are always multiple approaches that can be used to accomplish the same goals. The user must decide on an approach based on complexity, time constraints, etc.\n", + "At the end of the day, most of us just want/need (x,y,z,t) with ICESat-2.\n", "\n", - "Here, we're going to explore #2 with an existing dataset." + "As with all things in the *nix/open-source/Python world, there are always multiple approaches that can be used to accomplish the same goals. The user must decide on an approach based on complexity, time constraints, etc." ] }, { @@ -129,7 +135,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Wait a minute, I thought this was an ICESat-2 hackweek!\n", + "## Wait, I thought this was an ICESat-2 hackweek?\n", "\n", "Note that we could (and should!) swap similarly processed/filtered ATL06 points over CONUS for this tutorial. I did not have time to do this before the hackweek, but it would make a great project (nudge). After opening this updated file with Pandas, it should mostly be a matter of updating field names throughout the notebook." ] @@ -235,8 +241,7 @@ "metadata": {}, "outputs": [], "source": [ - "glas_df = pd.read_csv(glas_fn)\n", - "#That's it!" + "glas_df = pd.read_csv(glas_fn)" ] }, { @@ -1558,12 +1563,14 @@ "\n", "Note that leaflet uses tiled basemaps: https://en.wikipedia.org/wiki/Tiled_web_map \n", "\n", - "Default projection is Web Mercator (EPSG:3857): https://en.wikipedia.org/wiki/Web_Mercator_projection. This works well for lower latitudes, but not the polar regions. I know QGIS can reproject tiled basemaps on the fly - I haven't tested with ipyleaflet." + "Default projection is Web Mercator (EPSG:3857): https://en.wikipedia.org/wiki/Web_Mercator_projection. This works well for lower latitudes, but not the polar regions. I know QGIS can reproject tiled basemaps on the fly - I haven't tested with ipyleaflet.\n", + "\n", + "FYI, `folium` provides similar functionality outside of the iPython/Jupyter stack: https://python-visualization.github.io/folium/" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 155, "metadata": {}, "outputs": [], "source": [