Загрузка сцен Sentinel-2 на определенную территорию

Если вам нужно загрузить сцены Sentinel-2 на определенную территорию, этот процесс можно автоматизировать с помощью скриптов на языке Python. В данном примере будем использоваться редактор кода Jupyter Notebook, который доступен в ArcGIS Pro и ArcGIS Enterprise. Сцены будут загружаться в директорию на локальном компьютере. Если нужно реализовать этот процесс в ArcGIS Enterprise и Image Server, то можно оставить ту часть кода, которая скачивает сцены и изменить логику дальнейшей обработки данных.

Для работы потребуется ArcGIS Pro 2.7 (но можно использовать и более ранние версии), библиотека sentinelsat и аккаунт к порталу Copernicus Open Access Hub, на котором можно бесплатно зарегистрироваться.

Библиотеку sentinelsat нельзя установить в стандартную среду arcgispro-py3 (она защищена от изменений), поэтому нужно сделать клон данной среды, назвать его так, как вам удобно, и использовать для работы. Библиотека sentinelsat умеет обращаться к архивам снимков через Sentinel API, запрашивать сцены с учетом даты и территории, а также загружать эти сцены по запросу. Это дает возможность частично или полностью автоматизировать процессы выбора и загрузки снимков программы Sentinel.

Порядок действий скрипта:

  • читаем полигон с областью интереса, в которой будет производиться поиск снимков
  • конвертируем полигон в формат WKT
  • авторизуемся на Copernicus Hub под своим логином/паролем
  • запрашиваем сцены на определенную территорию и диапазон дат
  • просматриваем границы сцен
  • фильтруем сцены таким образом, чтобы облачность была минимальной
  • скачиваем сцены в виде архивов
  • разархивируем в определенной директории
  • создаем из сцен мозаику растров
  • создаем тайловый кэш на основе мозаики растров

Пример предварительно просмотра контуров сцен в блокноте:

Мозаика растров из скачанных сцен:

Блокнот можно загрузить по ссылке: https://www.arcgis.com/home/item.html?id=b7b78d47c19543e39197be26f7ecd444

P.S. Если при загрузке сцен методом downloadall появляется ошибка CancelledError — это означает, что сервера Copernicus Hub в данный момент по каким-то причинам недоступны. Нужно подождать и через некоторое время (час, сутки) все заработает.