-
Earth Lab at University of Colorado, Boulder (Earth Data Analytics Online Certificate):
- Earth Data Analytics Online Certificate online "textbook:" Introduction to Earth Data Science - zero to hero tutorial covering bash, python, git/github, and data science workflows - The best all in one tutorial on these topics I have seen!
- Intermediate earth data science textbook - More necessary details for geospatial analysis and plotting using packages such as rasterio, xarray, rioxarray, shapely, and geopandas.
- Workshop: Get Started With GIS in Open Source Python - Geopandas, Rasterio & Matplotlib - Covers similar material to geohackweek, but with more brevity
-
Geo-Python Course (Department of Geosciences and Geography, University of Helsinki)
-
Five spatial python/QGIS tutorials, recently made freely available by the author, Ujaval Gandhi. Recommended:
- Python Foundation for Spatial Analysis (Full Course Material): Lengthy, and more spatially-focused than CU Earth Lab course (above), but less flashy and current than geohack week.
-
An Introduction to Earth and Environmental Data Science - "This book grew out of a course developed at Columbia University called Research Computing in Earth Science. It was written mostly by Ryan Abernathey, with significant contributions from Kerry Key and Tim Crone. By separating the book from the class, we hope to create an open-source community resource for Python education in the Earth and Environmental Sciences."
-
University of Helsinki courses
-
Automating GIS-processes 2021 - University of Helsinki, python
-
Introduction to Python GIS - CSC Finland – IT Center for Science 3-day course
-
PyGIS - Open Source Spatial Programming & Remote Sensing - George Washington University Geography - Michael Mann, Steven Chao, Jordan Graesser, Nina Feldman
-
Geographic Data Science - Dr. Dani Arribas-Bel - University of Liverpool, Fall 2021.
-
Introduction to Python for Geographic Data Analysis - Henrikki Tenkanen, Vuokko Heikinheimo & David Whipp - Online version of book “Introduction to Python for Geographic Data Analysis”
-
Geographic Data Science with Python - Sergio J. Rey, Dani Arribas-Bel, Levi J. Wolf - looks useful. Uses pysal for stats.
-
ICESat-2 Hackweeks - focused on geospatial data science, of course with a focus on ICESat-2 data manipulation and the icepyx package.
-
Geospatial Data Analysis with Python - course by David Shean at UW, one of the creaters of ICESat-2 Hackweek.
-
Pangeo tutorial - Intro to the main Pangeo packages: jupyter, geopandas, xarray, dask, and intake
-
WVView - a "consortium of public, private, and non-profit remote sensing organizations" with a mission that includes: "Develop free and open courses and training materials associated with a wide range of geospatial topics and technologies." They host several free online courses.
-
Spatial Data Programming with Python - "This book contains the materials of the 3-credit undergraduate course named Introduction to Spatial Data Programming with Python, given at the Department of Geography and Environmental Development, Ben-Gurion University of the Negev, in Spring 2022."
-
Transform to Open Science (TOPS)- an in-progress NASA iniative to train the scientific workforce on open science principles.
-
Project Pythia Python Foundations Course - An education and training hub for the geoscientific Python community, from the education working group for Pangeo. They also publish a variety of "cookbooks" on topics like loading climate model data or machine learning with Landsat imagery.
- Fundamentals of Remote Sensing: Session 2B: Satellites, Sensors, and Earth Systems Models for Water Resources Management and Session 2C: Fundamentals of Aquatic Remote Sensing
- Advanced Webinar: Land Cover Classification with Satellite Imagery and Advanced Webinar: Change Detection for Land Cover Mapping - overview of fundamentals of landcover classification mapping- supervised, unsupervised
- Advanced Webinar: Accuracy Assessment of a Land Cover Classification - converting your accuracy matrix into confidence intervals
- Hyperspectral Data for Land and Coastal Systems
- Integrating Remote Sensing into a Water Quality Monitoring Program
- Forest Mapping and Monitoring with SAR Data
- Earth Data Analytics Online Certificate: Intro to coordinate reference systems
- Understanding Spatial Data - from Ujaval Gandhi course
- List of QGIS tutorials from qgis.org in 6 languages!
- Iowa State University Extension GIS tutorial sheets
- Video demo of digitizing houses in QGIS
- How to Think Like a Computer Scientist: Learning with Python 3: An online, html textbook for an introduction to programming (in Python 3). Referenced in MIT 6.00.
- DataCamp courses. These require a paid membership, but I think it's well worth the money: there are no ads, the lessons have built-in code editors with hints and auto-"grading", and the content is pared down to the essentials.
Python and its numerical array programming package, numpy, have become so ubiquitous in the sciences that they were the topic of a 2020 review article in Nature!
-
A tutorial provided by the developers of python- not recommended for beginners because it is quite formal and technical. Good for reference, though.
-
An introduction to Python for scientific computing (M. Scott Shell / UCSB) - To the point and written by a biochemical modeling professor
-
Python Like You Mean It: this looks good! Written by a former physics grad student who wished something like this had existed when they started. Described as "a free resource for learning the basics of Python & NumPy, and moreover, becoming a competent Python user," and "a lean, one-stop resource for learning the essentials of Python from scratch."
-
Basic, interactive tutorial from W3Schools.com with advertisements.
-
A bare-bones, interactive, 10-minute-long tutorial in python basics, with a more detailed version available for purchase at DataCamp.
-
MIT 6.00: Introduction to Computer Science and Programming: How Ethan learned programming and python. Not recommended because it is quite verbose! It is also taught in python 2.xx, while python 3.xx is now current.
-
An Introduction to Numpy and Scipy (M. Scott Shell / UCSB) - A great introduction to the basic functions available in numpy. Can also be used as a reference guide.
-
Matplotlib plotting style guide
-
Python best practices course - Material for the course "Python best practices", Scientific Software Center, Heidelberg University, by Inga Ulusoy, October 2022. Focused on advanced code formatting topics, like linting and PEP style recommendations.
-
One-page "cheat sheets" for common python data science packages:
- Numpy
- Many others...just google cheat sheets for numpy, pandas, matplotlib, jupyter, xarray
- Old school? Here are some textbooks:
- Primer on Scientific Programming with Python Hans Petter Langtangen, Springer, 2012. (Available online through Brown library)
- Python Data Science Handbook (Jake VanderPlas) - more recent, includes linear regression, machine learning, and one computer vision application. (Available online through Brown library)
- Hands-on Machine Learning with Scikit-Learn, Keras & TensorFlow: Concepts, Tools,and Techniques to Build Intelligent Systems by Aurélien Géron (available online through Brown Library)
- Earth Observation using Python: A Practical Programming Guide by Rebekah B. Esmaili, 2021 - Written by a friend of Jessica's. An up-to-date overview of modern satellites, all the necessary python packages for loading, manipulating, and plotting their data, an intro to python, and many practical examples. Stops short of data analysis and machine learning.
-
A list of tutorials from pydata.org.
-
Geohackweek and Intro to Earth Data Science online textbook chapters
The following tutorials are recommended by the NASA Center for Climate Simulation:
- Introduction to Linux Tutorial
- More Advanced Linux Tutorial
- SATERN Linux shell-scripting course code: os_doss_a01_it_enus (requires NASA affiliation)
- Linux Handbook on file-permissions and ownership.
Bash is the most commonly used shell scripting language in minutes systems, and is often the default. It is the go-to for scientific processing workflows, and can be used to run other programs: python, matlab, etc. It is delightfully old-school, yet highly powerful.
...or Docker, Virtual Box, or git-bash. WSL is available from the microsoft store for free and I find it the most convenient way to run Linux on a Windows machine in a fast, low-resource way. Bonus: WSL integrates with the text editor Visual Studio Code.
-
Lynda tutorial on "Linux: Bash Shell and Scripts": requires LinkedIn Learning membership, which Brown subscribes to. Information should be fairly easy to understand, but will take some time to watch the videos.
-
The linux documentation project: lots of useful, if dated, guides and code snippets to learn with. For a quick crash course, or info on a specific topic, try the Bash Guide for Beginners by Machtelt Garrels and Advanced Bash-Scripting Guide by Mendel Cooper.
-
Geohackweek: An up-to-date resource for geoprocessing workflows in Python, introduced through a series of python Jupiter notebook tutorials. Thanks to The University of Washington organizers for offering these workshops and archiving the tutorials!
-
Spatial-ecology.net workshops and tutorials: Now preserved on Youtube, this site gives introductions to a variety of geospatial processing, including command line programs like gdal, and GIS software like QGIS and GRASS. Includes some introduction to linux, bash, and python as well. Thank you to Giuseppe Amatulli at Yale for hosting this site.
- NASA ARSET has dozens of tutorials on a number of topics, from sensors like optical and SAR to applications such as wildfires and hydrology.
- NASA SERVIR SAR Handbook: Comprehensive Methodologies for Forest Monitoring and Biomass Estimation - "The SAR Handbook: Comprehensive Methodologies for Forest Monitoring and Biomass Estimation is the culmination of a two-year collaboration between NASA SERVIR and SilvaCarbon. Five trainings, led by six SAR subject matter experts, were held at hubs throughout the SERVIR network. The topics of these trainings included SAR basics, SAR for forest change detection, forest height estimation, biomass estimation, mangrove monitoring, and sampling design."
- SERVIR Global: SAR Handbook: Comprehensive Methodologies for Forest Monitoring and Biomass Estimation
- UAF SAR Capacity Building Center - Free, self-paced archived courses via EdX. As of September 2022, only SAR for hazards is available.
- NRCAN SAR tutorial
- Sisters of SAR resources
- EdX class: Synthetic Aperture Radar: Hazards by Franz Meyer - EdX is free unless you want a certificate of completion
- PolSAR Pro (ESA)
- SNAP (ESA)
- Sentinel Playground (web software for visualization)
- ASF Vertex (download scenes, apply terrain correction, order inSAR processing)
- ASF Mapready
- ASF OpenSARLab
- RSCube - Landcover classification using SAR from Marc Simard's group
- SnowEx UAVSAR tools on Github
- Many others on Awesome SAR github curated list - similar to Awesome Python, etc.
-
Introduction to Data Science A Python Approach to Concepts, Techniques and Applications (Laura Igual and Santi Seguí, Springer 2017)
-
Practical Data Science - Duke University Data Science Masters Program class available publically - covers everything beyond numpy and pandas
-
ORNL DAAC learning resources: Dozens of quick tutorials on specific topcs such as downloading and analyzing multi-spectral AVIRIS data to using their WMS web maps in GIS tools.
-
Pangeo gallery, a set of example scripts and workflows for various earth science topics, using the open – source pangeo Python environment
-
Resources from Karianne Bergen's Machine Learning for Earth & Environment class at Brown (EEPS1960d)
-
... Many others!
-
Artificial Intelligence for Earth System Sciences workshop (https://www2.cisl.ucar.edu/events/summer-school/ai4ess/2020/artificial-intelligence-earth-system-science-ai4ess-summer-school): includes archived workshop tutorials and jupyter notebooks, organized by NCAR.
-
DELTA - A NASA toolbox (run from command line or python) for turnkey machine learning workflows- it tiles raster into chips, runs a classification algorithm on it (defaults are various neural networks), and restitches results. You give directories of images, training data as categorical rasters, and a yml file with desired algorithm parameters and it trains and runs the model!
-
Solaris - An open source ML pipeline for overhead imagery by defense intelligence contractor CosmiQ Works. Tiling datasets, raster/vector/ML format conversion, segmentation/object detection/deep learning, evaluation
-
An Introduction to Statistics with Python (Thomas Haslwanter, Springer, 2016)
-
An Introduction to Statistical Learning with Applications in R (James, G., Witten, D., Hastie, T., Tibshirani, R., Springer, 2013) - recommended by Ethan, 2017 edition available in print
-
Earth Data Science online textbook linear regression overview - basic intro, using the latest plotting/data packages
-
Which Statistical Test? from UCLA Statistical Consulting Group
-
Python Spatial Analysis Library (pysal)- a series of packages for spatial statistics, including exploring, modeling, and visualizing spatial data
- Many tuorials, including this class on it: "Geographic Data Science with PySAL and the pydata stack"
- Straight from the source: guides and tutorials. Lots of links to resources during Geo For Good 2020.
- Also covered in geohackweek.
- Examples scripts in the default code editor
- Useful python toolboxes: geemap with lots of documentation and tutorials.
- Google Earth Engine with Python (EEwPython) - by Cesar Aybar Camacho and Roy Yali Samaniego - A series of Colab notebooks teaching the EE python toolbox, with folium plots embedded. Adapted from Google Earth Engine Guides, linked above.
Note: Be sure to check out community earth engine datasets, such as as https://gee-community-catalog.org/, for a much more comprehensive collection of datasets!
- Pydeck/Google Earth Engine
- ColorMoves: An interactive color map picker tool, downloadable color maps, and a script to import them into python or matlab
- Additional tools listed on sciviscolor:
- CCCTool intro video
- CCCTool
- Colorgorical - discrete color
- David Johnstone Discrete Color
- ColorMoves
- ColorBrewer
- Adobe Kuler
- Danielle’s Notebook
- Color Crafter
- QGIS
- ArcGIS Desktop
- CloudCompare: open-source GIS-like software for all 3D formats, especially point clouds. Can build surfaces, subsample points, make videos and has some rendering features such as illumination angle.
Although python is excellent at managing and processing geospatial data, visualizing it beyond simple matplotlib
plots is less seamless. Packages that require enabling jupyterlab extensions seem to be more prone to dependency conflicts. See this article for some inspo. Dr. Qiusheng Wu sums up the need for versatile geospatial packages in the "Statement of Need" for leafmap.
- leafmap by Qiusheng Wu. Amazing package, and my favorite among these! It does require enabling jupyterlab widgets, but I didn't experience any glitches. I installed in a new environmnt, initially, as recommended. I think you can get away with just
conda install -c conda-forge leafmap
and enable the corresponding jupyterlab extension. Requires xarray-leaflet for loading locally-stored rasters. - cartopy (since 2016, originated from matplotlib + basemap, which is now deprecated) - "originally developed at the UK Met Office" - simple tutorial. Another tutorial in Google Colab from EEPS1960d. I don't believe maps are interactive unless you install the ipympl interactive widget and enable with
%matplotlib widget
Basemaps need to be downloaded with a line of code. - plotly (via mapbox + dash) - examples
- folium - good basemap functionality with one line of code. To plot rasters, you must reproject to match rest of map, convert to 8bit and remove NaNs (requires rioxarray). Tutorial from earthdatascience.org
- ipyleaflet - recommended in geohackweek, but I had dependency issues with other packages and jupyterlab extensions
- geoviews - recommended in geohackweek, and it works successfully using bokeh for visualizations, although slowly.
- whitebox-python by Qiusheng Wu
- geemap by Qiusheng Wu. Interface to GEE. Very well documented with huge user community.
- GeoJSON - a simple way of mapping geojson files or text strings with a basemap in a new jupyter tab or notebook cell. Not designed for viewing multiple layers. Requires enabling jupyterlab extensions
- ggplot for python?
- mapbox-gl - I've never used, but it's also in the tutorial from earthdatascience.org. Requires free MapBox Access Token to view basemaps, and is supposedly less well-documented than folium.
- keplergl. Built around mapbox-gl and optimized for big data and 3d visualizations. Looks complicated to install. Requires enabling jupyterlab extensions
- contextlily - Used for basemaps in plots - "is a small Python 3 (3.7 and above) package to retrieve tile maps from the internet. It can add those tiles as basemap to matplotlib figures or write tile maps to disk into geospatial raster files. Bounding boxes can be passed in both WGS84 (EPSG:4326) and Spheric Mercator (EPSG:3857)."
- satellite-image-deep-learning - Robin Cole - An amazing compilation of tools for every stage in the process for running neural networks on satellite images. Links to dozens of other repos with descriptions of what they are used for.
- Fast.ai - Making deep learning training accessible. "Deep learning is transforming the world. We are making deep learning easier to use and getting more people from all backgrounds involved through our: free courses for coders, software library, cutting-edge research, community" Written about in The Economnist, NY Times, MIT Tech Review.
Not all of these packages play together nicely, and I have spent a lot of time trying to fix dependency conflicts within my geospatial conda environments. This is completely typical for open-source software, but the benefits outweight the cost, in my opinion! In general, I have found the best ways of fixing conflicts is starting from scratch and installing as few packages as possible. You can re-create an environment from only the packages you explicitly installed, and not from whatever dependencies were necessary at the time using the conda command: conda env export --from-history
. I have found this command helpful in these scenarios.
Fortunately, there are some great resources for existing geospatial python environments. Check out the environment files in:
- Geohackweek tutorial environments conda
environment.yml
files for the various exercises. As far as I can tell, they don't provide a combined environment that works for everything. - Earth Analytics python environment - developed for the Earth Data Analytics Online Certificate courses
My new favorite method is a package that automatically installs a very complete geospatial environment when you install it:
- Python-geospatial by Qiusheng Wu, many great links within.
Other compilations of python and GIS tools
- Awesome GIS - Awesome GIS is a collection of geospatial related sources, including cartographic tools, geoanalysis tools, developer tools, data, conference & communities, news, massive open online course, some amazing map sites, and more.
- Awesome Python - A curated list of awesome Python frameworks, libraries, software and resources.
- RichDEM: High-performance Terrain and Hydrology Analysis
- TauDEM
- Topotoolbox (Matlab): super popular File Exchange package that runs smoothly and has great tutorials.
- Mod-WET: (Matlab) accompanying matlab package for Steven Margulis' online hydrology textbook.
- Arcmap standard hydrology toolbox and optimized pit removal tool
- QGIS hydrology toolboxes (includes GDAL, GRASS and SAGA algorithms)
- Whitebox GAT: geomorphology package Jessica likes: GUI and CLI. Includes citations for the algorithms.
- STARS stream modeling software as a (buggy) ArcGIS package. Designed to interface with an R toolbox called SSN that computes spatial stats, such as semivariogram, but calculated along stream distance. Includes hydrology tools such as reach-contributing area and others. Popular with aquatic biologists studying things like salmon density vs temperature along streams. Annual tutorial workshops. Ethan attended one in 2019.
- PCRaster - python toolbox for "spatio-temporal environmental models", including calculting watersheds and reach contributing area.
- phoREAL from IceSat-2 Science Team
- icepyx - haven't tried it
- Introduction to Hydrology - Margulis - Great textbook on fundamentals of surface, subsurface, and atmospheric hydrology.
- Physical Hydrology course (Utah_State_University) on Hydrolearn - Lane/Garousi-Nejad - for Junior/Senior Hydrology and Water Resources Engineering Students
- The Groundwater Project books
- Rain or Shine - Ochsner/Howerton/Ellis - This text is an introduction to soil physical properties and processes.
- Hydrological Drought – 1st Edition (2004) - Tallaksen/van Lanen- from the European Drought Centre
- Techniques of Water-Resources Investigations Reports - a massive collection from the USGS Publications Warehouse
- MOOC on Machine Learning in Weather & Climate from the European Centre for Medium-Range Weather Forecasts, a prestigous weather forecasting agency.
- GDAL/OGR cheat sheat
- Another less-helpful OGR cheat sheat
Git is software for code version control for individuals who want to be able to revert to checkpoints. It also offers ways to seamlessly sync scripts between collaborators using websites like github.
- LinkedIn Learning course on git - how Ethan learned
- Much shorter all-in-one tutorial through the online school, W3docs
- Git tutorial from the developers of github
- Learning through a series of turorials on github
- Another jupyter notebook-based tutorial for learning git, from Patrick Gray.
- Resources lists: Introduction to Earth Observation and Introduction to Machine Learning/Deep Learning by Hannah Kerner
...
- A great course on spatial statistics on DataCamp (requires subscription- sometimes free to college students)
- Geocomputation with R
- This article (Borer et al., 2007) has aged well and outlines specific principles for working with and archiving datasets (e.g. don't put spaces in column names).
- Google Earth Engine, of course
- Google Colab - cloud-hosted jupyter notebooks with a distinct Google flavor
- CryoCloud - from IceSAT-2 team
- Pangeo Cloud - for using Pangeo tools, funded through the end of 2023
- OpenSARlab - from the Alaska Satellite Facility, free to use for the community
- Binder - use any github repo or jupyter notebook interactively, spins up a small server without persistent storage, like Google Colab
- GIS stack exchange will be your best friend!
- The Spatial Community runs a slack workspace with over 8k people on it, many of them adept programmers and web developers in various geospatial-related industries. It is very friendly and welcoming community.
- Navigating Graduate School and Beyond: A Career Guide for Graduate Students and a Must Read For Every Advisor, Sundar A. Christopher (AGU Publications, 2011)
- The Professor is In - Karen Kelsky - a bleak set of observations on the academic job market and practical advice for pursuing (or not pursuing) an academic career- focused on social sciences. The author also writes a blog on the topic.
- Navigating an Academic Career: A Brief Guide for PhD Students, Postdocs, and New Faculty - Jeffrey J. McDonnell (AGU Publications, 2019)
- ThinkWell (books, workshops, resources - I highly recommend!) - Maria Gardiner and Hugh Kearns have worked as an award winning team for the past fifteen years. They are well known as leading practitioners and researchers in cognitive behavioural coaching.
- Book: 52 Ways to Stay Well: During your PhD, post-doc or research career, by Hugh Kearns
- The Spatial Community (see above)
- Building Your Professional GIS Portfolio - webinar from URISA, the organization for GIS professionals. It has lots of general advice that applies to designing websites in general.
- ScienceGradSchoolCoach.com - A premium service I haven't tried, but it looks helpful.
- More to be posted on my personal website
- NSF REU programs
- Lamont Summer Intern Program
- GSA
- GSA Geocorps
- GSA scientists in the parks/internships
- Summer undergraduate program for planetary research (SUPPR)
- NASA
- NASA SARP
- NASA JPL internships
- MA Space Grant fellowships
- The NASA L'SPACE Program is a free, online, interactive experience open to undergraduate STEM students interested in pursuing a career with NASA or other space organizations.
- NASA DEVELOP
- DOE
- DOE Scholars undergraduate program
- Science Undergraduate Laboratory Internships (SULI)
- Oak Ridge Institute for Science and Education internships/fellowships
- NOAA internships
- USGS student opportunities (through USAJobs)
- National Park Service internships and young adulat programs
- Earthscope seismology internships
- Consortium of Universities for the Advancement of Hydrologic Science (CUAHSI) Resourceshttps://www.cuahsi.org/resources-for-undergraduate-students for Undergraduate Students
- NASA L'SPACE Program - a free, online, interactive experience open to undergraduate STEM students interested in pursuing a career with NASA or other space - includes Mission Concept Academy and Proposal Writing and Evaluation Experience Academy (with $10k funding opportunity)
- Greenland Ice Sheet Ocean Science (GRISO) network Summer Schoolhttps://griso.ucsd.edu/griso-summer-school-2024/.
- Climatematch Academy - 2-week synchronous, online July course on computational skills for climate science, targeted towards undergraduate and graduate students. Cost is pro-rated per country. Followed by an application-only 6 month volunteer research experience available to those who have completed the course.
- Climatechange.ai summer school - virtual and in-person summer courses for a modest fee.
- Alaska Juneau Icefield summer camp
- Sikumiut Field School - April 2025