Learn basic Python programming to create functional and effective visualizations from earth observation satellite data sets
Thousands of satellite datasets are freely available online, but scientists need the right tools to efficiently analyze data and share results. Python has easy-to-learn syntax and thousands of libraries to perform common Earth science programming tasks.
Earth Observation Using Python: A Practical Programming Guide presents an example-driven collection of basic methods, applications, and visualizations to process satellite data sets for Earth science research.
- Gain Python fluency using real data and case studies
- Read and write common scientific data formats, like netCDF, HDF, and GRIB2
- Create 3-dimensional maps of dust, fire, vegetation indices and more
- Learn to adjust satellite imagery resolution, apply quality control, and handle big files
- Develop useful workflows and learn to share code using version control
- Acquire skills using online interactive code available for all examples in the book
The American Geophysical Union promotes discovery in Earth and space science for the benefit of humanity. Its publications disseminate scientific knowledge and provide resources for researchers, students, and professionals.
Table of Contents
Foreword
Introduction
1 A Tour of Current Satellite Missions and Products
1.1 History of Computational Scientific Visualization
1.2 Brief catalog of current satellite products
1.2.1 Meteorological and Atmospheric Science
1.2.2 Hydrology
1.2.3 Oceanography and Biogeosciences
1.2.4 Cryosphere
1.3 The Flow of Data from Satellites to Computer
1.4 Learning using Real Data and Case Studies
1.5 Summary
1.6 References
2 Overview of Python
2.1 Why Python?
2.2 Useful Packages for Remote Sensing Visualization
2.2.1 NumPy
2.2.2 Pandas
2.2.3 Matplotlib
2.2.4 netCDF4 and h5py
2.2.5 Cartopy
2.3 Maturing Packages
2.3.1 xarray
2.3.2 Dask
2.3.3 Iris
2.3.4 MetPy
2.3.5 cfgrib and eccodes
2.4 Summary
2.5 References
3 A Deep Dive into Scientific Data Sets
3.1 Storage
3.1.1 Single-values
3.1.2 Arrays
3.2 Data Formats
3.2.1 Binary
3.2.2 Text
3.2.3 Self-describing data formats
3.2.4 Table-Driven Formats
3.2.5 geoTIFF
3.3 Data Usage
3.3.1 Processing Levels
3.3.2 Product Maturity
3.3.3 Quality Control
3.3.4 Data Latency
3.3.5 Re-processing
3.4 Summary
3.5 References
4 Practical Python Syntax
4.1 "Hello Earth" in Python
4.2 Variable Assignment and Arithmetic
4.3 Lists
4.4 Importing Packages
4.5 Array and Matrix Operations
4.6 Time Series Data
4.7 Loops
4.8 List Comprehensions
4.9 Functions
4.10 Dictionaries
4.11 Summary
4.12 References
5 Importing Standard Earth Science Datasets
5.1 Text
5.2 NetCDF
5.3 HDF
5.4 GRIB2
5.5 Importing Data using xarray
5.5.1 netCDF
5.5.2 GRIB2
5.5.3 Accessing datasets using OpenDAP
5.6 Summary
5.7 References
6 Plotting and Graphs for All
6.1 Univariate Plots
6.1.1 Histograms
6.1.2 Barplots
6.2 Two Variable Plots
6.2.1 Converting Data to a Time Series
6.2.2 Useful Plot Customizations
6.2.3 Scatter Plots
6.2.4 Line Plots
6.2.5 Adding data to an existing plot
6.2.6 Plotting two side-by-side plots
6.2.7 Skew-T Log-P
6.3 Three Variable Plots
6.3.1 Filled Contour
6.3.2 Mesh Plots
6.4 Summary
6.5 References
7 Creating Effective and Functional Maps
7.1 Cartographic Projections
7.1.1 Projections
7.1.2 Plate Carrée
7.1.3 Equidistant Conic
7.1.4 Orthographic
7.2 Cylindrical Maps
7.2.1 Global plots
7.2.2 Changing projections
7.2.3 Regional Plots
7.2.4 Swath Data
7.2.5 Quality Flag Filtering
7.3 Polar Stereographic Maps
7.4 Geostationary Maps
7.5 Plotting datasets using OpenDAP
7.6 Summary
7.7 References
8 Gridding Operations
8.1 Regular 1D grids
8.2 Regular 2D grids
8.3 Irregular 2D grids
8.3.1 Resizing
8.3.2 Regridding
8.3.3 Resampling
8.4 Summary
8.5 References
9 Meaningful Visuals through Data Combination
9.1 Spectral and Spatial Characteristics of Different Sensors
9.2 Normalized Difference Vegetation Index (NDVI)
9.3 Window Channels
9.4 RGB
9.4.1 True Color
9.4.2 Dust RGB
9.4.3 Fire/Natural RGB
9.5 Matching with Surface Observations
9.5.1 With user-defined functions
9.5.2 With Machine Learning
9.6 Summary
9.7 References
10 Exporting with Ease
10.1 Figures
10.2 Text Files
10.3 Pickling
10.4 NumPy binary files
10.5 NetCDF
10.5.1 Using netCDF4 to create netCDF files
10.5.2 Using Xarray to create netCDF files
10.5.3 Following Climate and Forecast (CF) metadata conventions
10.6 Summary
11 Developing a Workflow
11.1 Scripting with Python
11.1.1 Creating scripts using text editors
11.1.2 Creating scripts from Jupyter Notebooks
11.1.3 Running Python scripts from the command line
11.1.4 Handling output when scripting
11.2 Version Control
11.2.1 Code Sharing though Online Repositories
11.2.2 Setting-up on GitHub
11.3 Virtual Environments
11.3.1 Creating an environment
11.3.2 Changing environments from the command line
11.3.3 Changing environments in Jupyter Notebook
11.4 Methods for code development
11.5 Summary
11.6 References
12 Reproducible and Shareable Science
12.1 Clean Coding Techniques
12.1.1 Stylistic conventions
12.1.2 Tools for Clean Code
12.2 Documentation
12.2.1 Comments and docstrings
12.2.2 README file
12.2.3 Creating useful commit messages
12.3 Licensing
12.4 Effective Visuals
12.4.1 Make a Statement
12.4.2 Undergo Revision
12.4.3 Are Accessible and Ethical
12.5 Summary
12.6 References
Conclusion
A Installing Python
A.1 Download and Install Anaconda
A.2 Package management in Anaconda
A.3 Download sample data for this book
B Jupyter Notebooks
B.1 Running on a Local Machine (New Coders)
B.2 Running on a Remote Server (Advanced)
B.3 Tips for Advanced Users
B.3.1 Customizing Notebooks with Configuration Files
B.3.2 Starting and Ending Python Scripts
B.3.3 Creating Git Commit templates
C Additional Learning Resources
D Tools
D.1 Text Editors and IDEs
D.2 Terminals
E Finding, Accessing, and Downloading Satellite Datasets
E.1 Ordering data from NASA EarthData
E.2 Ordering data from NOAA/CLASS
F Acronyms
Acknowledgements