Skip to main content

Landsat ETM+ OLI Harmonization Script

Project description

🌍 LEOHS: Landsat ETM+ OLI Harmonization Script

LEOHS is a Python package for harmonizing Landsat 7 and 8 imagery using Google Earth Engine (GEE). The harmonization functions generated from this tool can be used for long term landsat time series analysis. LEOHS is designed specifically to create harmonization functions optimized for user-defined study areas, time periods, and sampling parameters.


🔧 Requirements

  • Python 3.10 — LEOHS must be run in its own environment
  • an active Google Earth Engine account
  • an area of interest shapefile

📦 Installation

1. Create a clean Python 3.10 environment (recommended name: leohs_env)

conda create -n leohs_env python=3.10 -y
conda activate leohs_env

2. Install LEOHS

pip install leohs

🚀 Example Usage

import leohs
leohs.run_leohs(
    Aoi_shp_path=r"E:\Canada.shp",
    Save_folder_path=r"E:\Canada_output",
    SR_or_TOA="SR",
    months=[6,7,8],
    years=[2017],
    sample_points_n=100000)

🔧 run_leohs Parameters

  • Aoi_shp_path (str):
    Path to your input AOI shapefile.

  • Save_folder_path (str):
    Path to the output folder where results will be saved.

  • SR_or_TOA (str):
    Type of Landsat imagery to process. Choose "SR" or "TOA".

  • months (list of int):
    List of months to include in image filtering (e.g., [1,2,3,4,5,6,7,8,9,10,11,12]).

  • years (list of int):
    List of years to include in filtering (e.g., [2013,2014,2015,2016,2017,2018,2019,2020,2021,2022]).

  • sample_points_n (int):
    Number of sample points to generate (e.g., 100000). Max: 1,000,000.

  • maxCloudCover (int, optional, default=50):
    Maximum cloud cover (%) for image filtering.

  • Regression_types (list of str, optional, default=["OLS"]):
    List of regression models to run. Valid values: "OLS", "RMA", "TS".

  • CFMask_filtering (bool, optional, default=True):
    Whether to apply CFMask filtering (cloud, water, snow masking).

  • Water (bool, optional, default=True):
    Allow water pixels (only effective if CFMask_filtering=True).

  • Snow (bool, optional, default=True):
    Allow snow pixels (only effective if CFMask_filtering=True).

🛰️ Outputs

The following files are exported to the specified Save_folder_path:

  • Text log (TOA_LEOHS_harmonization.txt):
    Contains regression equations for each band, processing time, and diagnostic logs.

  • Heatmaps (.png files):
    Visualizations of pixel distributions between Landsat 7 and 8 for each band.

  • Pixel and pair data (.csv):
    Sampled pixel values and image names for all matched images.

🐛 Known Issues

  • Google Earth Engine computation timeout
    Occasionally, you may encounter an ee.EEException: Computation timed out error. This can happen when GEE servers are under heavy load.
    🛠️ Recommended fix: Simply wait a bit of time, and re-run leohs.run_leohs(...). The issue usually resolves itself on retry.

📂 Additional Resources

Additional scripts for applying LEOHS, as well as global harmonization equations, can be found in the companion repository:
🔗 https://github.com/galenrichardson/LEOHS

📑 License

This project is licensed under the
GNU General Public License v3.0 or later (GPL-3.0-or-later)
© 2025 Galen Richardson

See the full license text in the LICENSE file or at gnu.org/licenses/gpl-3.0.


📬 Contact

Author: Galen Richardson
Email: galenrichardsonam@gmail.com

Feel free to reach out for questions, bug reports, suggestions, or collaboration ideas.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

leohs-0.1.6.tar.gz (8.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

leohs-0.1.6-py3-none-any.whl (8.0 MB view details)

Uploaded Python 3

File details

Details for the file leohs-0.1.6.tar.gz.

File metadata

  • Download URL: leohs-0.1.6.tar.gz
  • Upload date:
  • Size: 8.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.18

File hashes

Hashes for leohs-0.1.6.tar.gz
Algorithm Hash digest
SHA256 8e07684ba65d0daf555a37e9926bf3738b2148d68e5e1ca6b1fcf6961347ab62
MD5 a67a522de4fe17b34669eb3b1b85e05a
BLAKE2b-256 9b772c00dd8d880f29b5eac32384afc9a28002d97748af517ec1bd678b4c2436

See more details on using hashes here.

File details

Details for the file leohs-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: leohs-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 8.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.18

File hashes

Hashes for leohs-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 d381ff5073e690aa887c5f1c9d0c970b6a8513856b930194e211090d2351e723
MD5 f4f588a238bca228fd924ebaf0ef048a
BLAKE2b-256 e13eab67b58e3d358e2edbc89e3aeb979aac52f1ad58dd30872b28f24e499a0a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page