{"id":34106554,"url":"https://github.com/alekfal/googlesat","last_synced_at":"2026-04-08T15:34:02.328Z","repository":{"id":43347829,"uuid":"418462995","full_name":"alekfal/googlesat","owner":"alekfal","description":"Download Sentinel 2 (L1C \u0026 L2A) from GCP without authentication.","archived":false,"fork":false,"pushed_at":"2023-11-28T10:28:55.000Z","size":4451,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-17T01:11:25.739Z","etag":null,"topics":["downloader","gcp-storage","google","python","python3","sentinel-2"],"latest_commit_sha":null,"homepage":"https://googlesat.readthedocs.io/en/latest/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alekfal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2021-10-18T11:06:12.000Z","updated_at":"2023-11-10T11:50:22.000Z","dependencies_parsed_at":"2022-09-21T01:02:29.927Z","dependency_job_id":"cb901b1c-285f-47c9-9ef3-23eee0077a4e","html_url":"https://github.com/alekfal/googlesat","commit_stats":{"total_commits":65,"total_committers":1,"mean_commits":65.0,"dds":0.0,"last_synced_commit":"111282f4128b5efc016ea5a671fd9f539a30c066"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/alekfal/googlesat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alekfal%2Fgooglesat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alekfal%2Fgooglesat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alekfal%2Fgooglesat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alekfal%2Fgooglesat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alekfal","download_url":"https://codeload.github.com/alekfal/googlesat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alekfal%2Fgooglesat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31562690,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["downloader","gcp-storage","google","python","python3","sentinel-2"],"created_at":"2025-12-14T18:01:59.490Z","updated_at":"2026-04-08T15:34:02.320Z","avatar_url":"https://github.com/alekfal.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# googlesat\n\n[![Build Status](https://github.com/alekfal/googlesat/actions/workflows/python-package.yml/badge.svg?branch=main)](https://github.com/alekfal/googlesat/actions)\n[![Documentation Status](https://readthedocs.org/projects/googlesat/badge/?version=latest)](https://googlesat.readthedocs.io/en/latest/?badge=latest)\n[![Code coverage](https://codecov.io/gh/alekfal/googlesat/branch/main/graph/badge.svg)](https://codecov.io/gh/alekfal/googlesat)\n[![Supported Python versions](https://img.shields.io/pypi/pyversions/googlesat.svg?style=flat-square)](https://pypi.org/project/googlesat/)\n[![Overall downloads](https://pepy.tech/badge/googlesat)](https://pepy.tech/project/googlesat)\n[![Last month downloads](https://pepy.tech/badge/googlesat/month)](https://pepy.tech/project/googlesat)\n\nThis software is designed to download Sentinel 2 (L1C \u0026amp; L2A) from Google Cloud Platform and **does not require an google account and a creation of a GCP project** for data searching or downloading.\n\nYou can read more about the public Google data access [here](https://cloud.google.com/storage/docs/public-datasets/) and for Sentinel-2 data [here](https://cloud.google.com/storage/docs/public-datasets/sentinel-2).\n\n## Introduction\n\nThe ```googlesat``` Python package is developed for searching and downloading data from GCP. In the GCP bucket, Google, to help locate data of interest, has published an index CSV file for both product types (L1C, L2A) of the Sentinel-2 data that are available for downloading.\nUsing ```googlesat``` the index CSV file is downloaded; either for L1C, L2A or both (a seperate database for each product type is created) and inserted in a SQLite database in order to avoid using Google's BigQuery, that requires an Google account and a creation of a GCP project for data searching. Every time a user runs the software the database **if needed** (CSV file is updated by Google daily) gets the required updates.\n\nAlso, a downloader is provided with this software to download the results from querying the database. The downloading procedure is done without using ```gsutils```, so a convertion method of ```gs``` to simple ```https``` links is developed. Then, the downloader use these links to download the ```manifest.xml``` file and extracts all the required informations from the file to build the SAFE format folder structure and download the rest of the files (images, metadata, etc). You can find more information about the SAFE folder structure [here](https://earth.esa.int/eogateway/activities/safe-the-standard-archive-format-for-europe/safe-2.x-basic-information).\n\n## Installation Notes\n\nInstall ```googlesat``` using ```pip``` by running the following commands:\n\nFrom PyPI:\n\n```bash\npip install googlesat\n```\n\nFrom source:\n\n```bash\ngit clone https://github.com/alekfal/googlesat.git\ncd googlesat/\npip install .\n```\n\n## Quickstart\n\nSearch and download data for a specific UTM tile by providing a name,\nthe product level, cloud coverage limit and start-end date.\n\n```python\nimport dateutil\nimport time\nimport os\nimport pandas as pd\n\nfrom googlesat.sentinel import get_metadata, query, geometry_from_file\nfrom googlesat.utils import get_links,  create_connection, get_cache_dir\nfrom googlesat.downloader import get_data\n\nlevel = \"L2A\"\ndb_file, table_name = get_metadata(level = level)\ncc_limit = 40\ndate_start = dateutil.parser.isoparse('2021-10-15')\ndate_end = dateutil.parser.isoparse('2021-10-30')\ntile = \"34SEJ\"\nresult = query(db_file, table_name, cc_limit, date_start, date_end, tile)\nresult = get_links(result)\n# Get data\nGOOGLE_SAT_DATA = \"/path/to/store/\"\nscenes = result[\"URL\"].tolist()\nfor scene in scenes:\n    get_data(scene, GOOGLE_SAT_DATA)\n```\n\nSearch and download data for multiple UTM tiles by providing their names,\nthe product level, cloud coverage limit and start-end date.\n\n```python\nimport dateutil\nimport time\nimport os\nimport pandas as pd\n\nfrom googlesat.sentinel import get_metadata, query, geometry_from_file\nfrom googlesat.utils import get_links,  create_connection, get_cache_dir\nfrom googlesat.downloader import get_data\n\nlevel = \"L1C\"\ndb_file, table_name = get_metadata(level = level)\ncc_limit = 60\ndate_start = dateutil.parser.isoparse('2021-10-15')\ndate_end = dateutil.parser.isoparse('2021-10-30')\ntile = [\"34TGL\", \"34TGM\", \"34SEJ\"]\nresult = query(db_file, table_name, cc_limit, date_start, date_end, tile)\nresult = get_links(result)\n# Get data\nGOOGLE_SAT_DATA = \"/path/to/store/\"\nscenes = result[\"URL\"].tolist()\nfor scene in scenes:\n    get_data(scene, GOOGLE_SAT_DATA)\n```\n\nSearch and download data by providing a geometry file (e.g GeoJSON),\nthe product level, cloud coverage limit and start-end date.\n\n```python\nimport dateutil\nimport time\nimport os\nimport pandas as pd\n\nfrom googlesat.sentinel import get_metadata, query, geometry_from_file\nfrom googlesat.utils import get_links,  create_connection, get_cache_dir\nfrom googlesat.downloader import get_data\n\ndb_file, table_name = get_metadata(level = level)\ncc_limit = 40\ndate_start = dateutil.parser.isoparse('2021-10-15')\ndate_end = dateutil.parser.isoparse('2021-10-30')\nfile = \"./data/test.geojson\"\ntiles = geometry_from_file(file)\nresult = query(db_file, table_name, cc_limit, date_start, date_end, tiles)\nresult = get_links(result)\n# Get data\nGOOGLE_SAT_DATA = \"/path/to/store/\"\nscenes = result[\"URL\"].tolist()\nfor scene in scenes:\n    get_data(scene, GOOGLE_SAT_DATA)\n```\n\n## References\n\nThis software is based on the open source project [fetchLandsatSentinelFromGoogleCloud](https://github.com/vascobnunes/fetchLandsatSentinelFromGoogleCloud).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falekfal%2Fgooglesat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falekfal%2Fgooglesat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falekfal%2Fgooglesat/lists"}