{"id":13781215,"url":"https://github.com/leftfield-geospatial/geedim","last_synced_at":"2025-12-29T23:50:40.913Z","repository":{"id":37240320,"uuid":"389601059","full_name":"leftfield-geospatial/geedim","owner":"leftfield-geospatial","description":"Search, composite, and download Google Earth Engine imagery.","archived":false,"fork":false,"pushed_at":"2025-04-21T19:26:04.000Z","size":1537,"stargazers_count":94,"open_issues_count":1,"forks_count":13,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-05-01T13:01:59.156Z","etag":null,"topics":["cli","cloud-free","cloud-shadow-mask","compositing","download","earth-observation","google-earth-engine","landsat","python","remote-sensing","satellite-imagery","search","sentinel-2","surface-reflectance"],"latest_commit_sha":null,"homepage":"https://geedim.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leftfield-geospatial.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"docs/contributing.rst","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["leftfield-geospatial"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2021-07-26T10:55:36.000Z","updated_at":"2025-04-21T08:06:09.000Z","dependencies_parsed_at":"2024-05-16T14:46:17.657Z","dependency_job_id":"b5eee692-8e8b-4456-abec-4027e400e265","html_url":"https://github.com/leftfield-geospatial/geedim","commit_stats":{"total_commits":782,"total_committers":1,"mean_commits":782.0,"dds":0.0,"last_synced_commit":"96c97948117d102bec92c37ef2f3f191819f03fd"},"previous_names":["dugalh/geedim"],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leftfield-geospatial%2Fgeedim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leftfield-geospatial%2Fgeedim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leftfield-geospatial%2Fgeedim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leftfield-geospatial%2Fgeedim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leftfield-geospatial","download_url":"https://codeload.github.com/leftfield-geospatial/geedim/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253580328,"owners_count":21930925,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","cloud-free","cloud-shadow-mask","compositing","download","earth-observation","google-earth-engine","landsat","python","remote-sensing","satellite-imagery","search","sentinel-2","surface-reflectance"],"created_at":"2024-08-03T18:01:23.934Z","updated_at":"2025-12-29T23:50:40.908Z","avatar_url":"https://github.com/leftfield-geospatial.png","language":"Python","funding_links":["https://github.com/sponsors/leftfield-geospatial"],"categories":["Python API"],"sub_categories":["Packages"],"readme":"|Tests| |codecov| |PyPI version| |conda-forge version| |docs| |License|\n\nGeedim\n======\n\n.. description_start\n\nGeedim provides a Python API and command line toolkit for exporting and cloud masking Google Earth Engine (GEE) imagery.  Images and Image collections can be exported to:\n\n- GeoTIFF file\n- NumPy array\n- Xarray Dataset / DataArray\n- Google Cloud platforms\n\nAnd cloud masking is supported on:\n\n- Landsat 4-9 `collection 2 \u003chttps://developers.google.com/earth-engine/datasets/catalog/landsat\u003e`__ images\n- Sentinel-2 `TOA \u003chttps://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2_HARMONIZED\u003e`__ and `surface reflectance \u003chttps://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2_SR_HARMONIZED\u003e`__ images\n\n.. description_end\n\n.. install_start\n\nInstallation\n------------\n\nTo install from PyPI:\n\n.. code:: shell\n\n   pip install geedim\n\nTo install from conda-forge:\n\n.. code:: shell\n\n   conda install -c conda-forge geedim\n\nTo support exporting to Xarray, use ``pip install geedim[xarray]`` or ``conda install -c conda-forge geedim xarray`` instead.\n\nA registered Google Cloud project is required for `access to Earth Engine \u003chttps://developers.google.com/earth-engine/guides/access#get_access_to_earth_engine\u003e`__.  Once installation and registration is done, Earth Engine should be authenticated:\n\n.. code:: shell\n\n   earthengine authenticate\n\n.. install_end\n\nExamples\n--------\n\nAPI\n~~~\n\nGeedim provides access to its functionality through the ``gd`` accessor on the ``ee.Image`` and ``ee.ImageCollection`` `GEE \u003chttps://github.com/google/earthengine-api\u003e`__ classes.  This example exports a 6 month cloud-free composite of Sentinel-2 surface reflectance imagery to a GeoTIFF file:\n\n.. code:: python\n\n    import ee\n\n    # import geedim to enable accessors\n    import geedim  # noqa: F401\n\n    ee.Initialize()\n\n    # filter collection based on cloud-free portion etc.\n    region = ee.Geometry.Rectangle(24.35, -33.75, 24.45, -33.65)\n    coll = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')\n    filt_coll = coll.gd.filter(\n        '2021-10-01', '2022-04-01', region=region, cloudless_portion=60\n    )\n\n    # print image properties\n    print(filt_coll.gd.schemaTable)\n    print(filt_coll.gd.propertiesTable)\n\n    # create a cloud-free composite \u0026 download\n    comp_im = filt_coll.gd.composite('median')\n    prep_im = comp_im.gd.prepareForExport(\n        crs='EPSG:3857', region=region, scale=10, dtype='uint16'\n    )\n    prep_im.gd.toGeoTIFF('s2_comp.tif')\n\n\nCommand line interface\n~~~~~~~~~~~~~~~~~~~~~~\n\nMuch of the API functionality can also be accessed on the command line with ``geedim`` and its sub-commands.  This repeats the API example, exporting a 6-month cloud-free composite of Sentinel-2 surface reflectance imagery to a GeoTIFF file:\n\n.. code:: shell\n\n    geedim search -c COPERNICUS/S2_SR_HARMONIZED -s 2024-10-01 -e 2025-04-01 -b 24.35 -33.75 24.45 -33.65 -cp 60 composite -cm median download -c EPSG:3857 -r - -s 10 -dt uint16\n\n\nDocumentation\n-------------\n\nDocumentation is hosted at `geedim.readthedocs.io \u003chttps://geedim.readthedocs.io/\u003e`__.\n\nLicense\n-------\n\nThis project is licensed under the terms of the `Apache-2.0 License \u003chttps://github.com/leftfield-geospatial/geedim/blob/main/LICENSE\u003e`__.\n\nCredits\n-------\n\n-  Tiled downloading was inspired by the `MIT licensed \u003chttps://github.com/cordmaur/GEES2Downloader/blob/main/LICENSE\u003e`__ `GEES2Downloader \u003chttps://github.com/cordmaur/GEES2Downloader\u003e`__ project.\n-  Medoid compositing, and the accessor approach to extending the `GEE API \u003chttps://github.com/google/earthengine-api\u003e`__, were adapted from `geetools \u003chttps://github.com/gee-community/geetools\u003e`__ under terms of the\n   `MIT license \u003chttps://github.com/gee-community/geetools/blob/master/LICENSE\u003e`__.\n-  Sentinel-2 cloud masking was adapted from `ee_extra \u003chttps://github.com/r-earthengine/ee_extra\u003e`__ under\n   terms of the `Apache-2.0 license \u003chttps://github.com/r-earthengine/ee_extra/blob/master/LICENSE\u003e`__\n\n\n\n.. |Tests| image:: https://github.com/leftfield-geospatial/geedim/actions/workflows/run-unit-tests.yml/badge.svg\n   :target: https://github.com/leftfield-geospatial/geedim/actions/workflows/run-unit-tests.yml\n.. |codecov| image:: https://codecov.io/gh/leftfield-geospatial/geedim/branch/main/graph/badge.svg?token=69GZNQ3TI3\n   :target: https://codecov.io/gh/leftfield-geospatial/geedim\n.. |PyPI version| image:: https://img.shields.io/pypi/v/geedim.svg\n   :target: https://pypi.org/project/geedim/\n.. |conda-forge version| image:: https://img.shields.io/conda/vn/conda-forge/geedim.svg\n   :alt: conda-forge\n   :target: https://anaconda.org/conda-forge/geedim\n.. |docs| image:: https://readthedocs.org/projects/geedim/badge/?version=latest\n   :target: https://geedim.readthedocs.io/en/latest/?badge=latest\n.. |License| image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg\n   :target: https://opensource.org/licenses/Apache-2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleftfield-geospatial%2Fgeedim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleftfield-geospatial%2Fgeedim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleftfield-geospatial%2Fgeedim/lists"}