This repository contains a list of open-source Python libraries broadly relevant to Earth Sciences (Hydrology, Meteorology, Geospatial, Climatology, Oceanography, etc.). The libraries are broadly grouped according to their function; however, many have functionality that spans multiple categories.
If you have any comments or suggestions for additions or improvements for this repository, submit an issue or a pull request. If you can’t contribute on GitHub, send me an email.
If you find these resources useful, please give this repository a star ⭐️ and you can also buy me some coffee ☕️.
:mailbox: Connect with me :mailbox:
Content
- Geospatial Analysis and Mapping
- Hydrology
- Meteorology
- Climatology
- Geology
- Oceanography
- Seismology
- Earth System Science
Geospatial Analysis and Mapping
-
Geopandas: GeoPandas is an open source project to make working with geospatial data in python easier. GeoPandas extends the datatypes used by pandas to allow spatial operations on geometric types.
-
whitebox: The whitebox Python package is built on WhiteboxTools, an advanced geospatial data analysis platform. WhiteboxTools can be used to perform common geographical information systems (GIS) analysis operations, such as cost-distance analysis, distance buffering, and raster reclassification.
-
PySal: A python spatial analysis library for open source and crossed platform Geospatial Data Science
-
MovingPandas: MovingPandas implements a Trajectory class and corresponding methods based on GeoPandas. It provides trajectory data structures and functions for analysis and visualization.
-
Shapely: Shapely is a Python package for manipulation and analysis of planar geometric objects. It is based on the widely deployed
GEOS
(the engine of PostGIS) andJTS
libraries. -
Rasterio: Rasterio is a
GDAL
and Numpy-based Python library designed to make your work with geospatial raster data more productive, more fun — more Zen. It is a highly useful module for raster processing which you can use for reading and writing several different raster formats in Python. Python automatically registers all knownGDAL
drivers for reading supported formats when importing the module. -
Georasters: The GeoRasters package is a python module that provides a fast and flexible tool to work with GIS raster files. It provides the GeoRaster class, which makes working with rasters quite transparent and easy
-
Fiona: It reads and writes geographic data files and thereby helps Python programmers integrate geographic information systems with other computer systems.
-
geemap: A Python package for interactive mapping with Google Earth Engine,
ipyleaflet
, andipywidgets
. -
Awesome Earth Engine: A curated list of Google Earth Engine resources includng many python libraries
-
python-geospatial: A collection of Python packages for geospatial analysis with binder-ready notebook examples
-
geonotebook: Jupyter notebook extension for geospatial visualization and analysis developed by NASA
-
Verde: It is a Python library for processing spatial data (bathymetry, geophysics surveys, etc) and interpolating it on regular grids (i.e., gridding).
-
pygis: pygis is a collection of Python snippets for geospatial analysis.
-
geehydro: A Python package for mapping inundation dynamics using Google Earth Engine
-
earthengine-py-notebooks: A collection of 360+ Jupyter Python notebook examples for using Google Earth Engine with interactive mapping
-
PcRaster: It is a collection of software targeted at the development and deployment of spatio-temporal environmental models.
-
PyGeoprocessing: A Python/Cython based library that provides a set of commonly used raster, vector, and hydrological operations for GIS processing.
-
Pysheds: Simple and fast watershed delineation in python.
-
GeoDjango: GeoDjango is an included contrib module for Django that turns it into a world-class geographic Web framework. GeoDjango strives to make it as simple as possible to create geographic Web applications, like location-based services.
-
Lidar: Terrain and hydrological analysis based on LiDAR-derived digital elevation models (DEM).
-
PYWR: Spatial allocation tool
-
ParTerra-Python: The Participatory Terrain model deploys an algorithm to fuse together data from OpenStreetMap (OSM) and any base elevation dataset to create a high-resolution digital terrain model for any area in the world.
-
salem: Adds geolocalised subsetting, masking, and plotting operations to xarray's data structures via accessors
-
Regionmask: Plotting and creation of masks of spatial regions
-
xshape: Tools for working with shapefiles, topographies, and polygons in xarray
-
hydro-osm: Hydro-osm is a toolbox to convert OpenStreetMap data into data layers that can be readily used for hydrological and hydraulic modelling.
-
Collocate: Collocate xarray trajectories in arbitrary physical dimensions
-
HoloViews: Library designed to make data analysis and visualization seamless and simple
-
GeoViews: Library that makes it easy to explore and visualize geographical, meteorological, and oceanographic datasets, such as those used in weather, climate, and remote sensing research
-
Datashader: Graphics pipeline system for creating meaningful representations of large datasets quickly and flexibly
-
Panel: Create custom interactive web apps and dashboards by connecting user-defined widgets to plots, images, tables, or text
-
hvPlot: A high-level plotting API for the PyData ecosystem built on HoloViews
-
EarthSim: Tools for working with and visualizing environmental simulations
-
Cartopy: Easy cartographic (maps) data visualization.
-
Geoviews: Explore and visualize geographic data using HoloViews.
-
xESMF: Universal regridder for geospatial data.
-
gridded: A single way to work with results from any hydrodynamic/oceanographic model regardless of what type of grid it was computed on.
-
pyResample: Resampling geospatial image data.
-
ESMPy: Interface to the Earth System Modeling Framework (ESMF) regridding utility.
-
pyproj: Interface to PROJ (cartographic projections and coordinate transformations library).
-
GeostatsPy: GeostatsPy Python package for spatial data analytics and geostatistics. Mostly a reimplementation of GSLIB, Geostatistical Library (Deutsch and Journel, 1992) in Python.
-
eo-learn: Earth observation processing framework for machine learning in Python
-
SciKit-GStat: SciKit-Gstat is a scipy-styled analysis module for geostatistics.
-
leafmap: Leafmap is a Python package for interactive mapping and geospatial analysis with minimal coding in a Jupyter environment.
-
GeoWombat: Utilities for geospatial data
-
pyGIS: pyGIS is an online textbook covering all the core geospatial functionality available in Python. This includes handling vector and raster data, satellite remote sensing, machine learning and deep learning applications.
-
PyGMT: PyGMT is a library for processing geospatial and geophysical data and making publication quality maps and figures. It provides a Pythonic interface for the Generic Mapping Tools (GMT), a command-line program widely used in the Earth Sciences.
-
geospatial-machine-learning: A curated list of resources focused on Machine Learning in Geospatial Data Science.
Hydrology
Data Collection
-
HKVFEWSPY: Connection to the DelftFEWS servers
-
HyRiver: HyRiver is a software stack consisting of six Python libraries that are designed to aid in watershed analysis through web services. This project includes hydrology and climatology data within the US.
-
Openradar: Library for processing a set of dutch, german and belgian precipitation radars into calibrated composites.
-
Ecohydrolib: Libraries and command-line scripts for performing ecohydrology data preparation workflows.
-
Ulmo: Clean, simple and fast access to public hydrology and climatology data.
-
PyHIS: It is a python library for querying CUAHSI*-HIS** web services
-
Wetterdienst: Python Toolset For Accessing Weather Data From German Weather Service
-
ERA5-tools: Python scripts to download and view ERA5 climatologic data, as well as to extract time series (hourly to monthly data on many atmospheric and land-surface parameters)
-
CAMELS-AUS: Python package to easily load and use the CAMELS-AUS dataset
-
BoM Water: This package has been developed to access to the BoM Water Data Sensor Observation Service (SOS). With a goal to easily and efficiently integrate data into scientific workflows.
-
Eco-Data Manage Toolkit: It is a Python toolkit to facilitate data management for hydrology/limnology applications.
Hydrological Modelling
-
CMF: Catchment Modelling Framework, a hydrologic modelling toolbox.
-
TopoFlow: Spatial hydrologic model (D8-based, fully BMI-compliant).
-
VIC: The Variable Infiltration Capacity (VIC) Macroscale Hydrologic Model.
-
Xanthos: Xanthos is an open-source hydrologic model, written in Python, designed to quantify and analyze global water availability.
-
WRF-Hydro: wrfhydrpy is a Python API for the WRF-Hydro modelling system.
-
pyDEM: PyDEM is a package for topographic (terrain) analysis. It takes in digital elevation model (DEM) rasters, and it outputs quantities like slope, aspect, upstream area, and topographic wetness index.
-
EXP-HYDRO: EXP-HYDRO is a catchment scale hydrological model that operates at a daily time-step. It takes as inputs the daily values of precipitation, air temperature, and potential evapotranspiration, and simulates daily streamflow at the catchment outlet.
-
RRMPG: Rainfall-Runoff modelling playground.
-
LHMP: Lumped Hydrological Models Playground.
-
SMARTPy: Python implementation of the rainfall-runoff model SMART
-
PyStream: Python implementation of the STREAM hydrological rainfall-runoff model.
-
HydrPy: A framework for the development and application of hydrological models based on Python.
-
Catchmod: CATCHMOD is widely used rainfall runoff model in the United Kingdom. It was introduced by Wilby (1994).
-
wflow: wflow consists of a set of Python programs that can be run on the command line and perform hydrological simulations. The models are based on the PCRaster Python framework
-
PyTOPKAPI: PyTOPKAPI is a BSD licensed Python library implementing the TOPKAPI Hydrological model (Liu and Todini, 2002).
-
mhmpy: A Python-API for the mesoscale Hydrological Model.
-
SuperflexPy: A new open source framework for building conceptual hydrological models
-
NeuralHydrology: Python library to train neural networks with a strong focus on hydrological applications
-
StreamStats: Python package for interfacing with the USGS StreamStats API.
-
hidrocomp: Python library for hydrological data analysis
-
PyFlo: It is an open-source Python library for performing hydraulic and hydrology stormwater analysis. Features include network hydraulic grade analysis and time/iteration based storage and flood routing simulations.
-
HydroFunctions: A suite of convenience functions for working with hydrology data in an interactive