Датасеты

Переключить язык

МенюПереключить язык

Нет обложки

Структура посевных площадей Европейского Союза 2018, 2022.

EUROCROPMAP — это набор высокодетализированных карт землепользования и земельного покрова (LULC) для стран Европейского Союза, созданный Объединённым исследовательским центром Европейской комиссии (JRC).

РастрZarrсельскохозяйственные культурыпосевная площадьЕвропа

Описание

EUROCROPMAP — это набор высокодетализированных карт землепользования и земельного покрова (LULC) для стран Европейского Союза, созданный Объединённым исследовательским центром Европейской комиссии (JRC). Первая версия карты была выпущена для 2018 года, а в 2024 году представлено обновление для 2022 года, охватывающее уже 27 стран ЕС, а также Украину. Включает 19 типов сельхозкультур и 7 общих классов покрова. Методология: построен на данных Sentinel-1, Sentinel-2, а также вспомогательных данных о температуре поверхности и рельефе. Обучен на 134 тыс. полигонах данных полевых обследований LUCAS (Land Use and Coverage Area Frame Survey). Использован двухуровневый классификатор Random Forest (сначала 7 классов землепользования, затем детализация пахотных земель до 19 типов культур). Точность: общая точность — 79,3% для 7 классов, 70,6% для 19 культур. Валидация проведена по независимым точкам LUCAS, декларациям фермеров (GSA) и статистике Eurostat; для ряда культур (рапс, сахарная свёкла, кукуруза) Producer’s accuracy превышает 90%. Доступ: бесплатно в каталоге JRC, WMS и Google Earth Engine. Применяется для мониторинга сельского хозяйства, оценки политики и прогнозирования урожайности.

Работа с EUCROPMAP в Zarr на S3

1. Что это за данные

EUCROPMAP — тематическая карта земного покрова Европы. В опубликованном Zarr переменная eucropmap содержит классы для 2018 и 2022 годов на 10-метровой сетке EPSG:3035 (ETRS89-extended / LAEA Europe), с измерениями year, y, x. Ноль означает фон или отсутствие покрытия источниками.

Для 2022 года объединены страты EU27-HR и Украины. В зоне перекрытия ненулевые значения украинской страты имеют приоритет; это правило записано в атрибуте mosaic_rule_2022.

2. Zarr, Xarray и ленивое чтение

Zarr хранит массивы чанками, поэтому можно читать только нужный год и окно. xarray добавляет именованные координаты, CRS и метаданные классов.

Открытие набора не загружает весь массив в память. Данные читаются, когда нужен результат: после .compute(), .load(), .values или построения графика.

3. Подготовка окружения

uv (рекомендуется)

uv venv
source .venv/bin/activate
uv pip install "xarray[io]" dask s3fs rioxarray matplotlib geopandas

pip

python -m venv .venv
source .venv/bin/activate
python -m pip install "xarray[io]" dask s3fs rioxarray matplotlib geopandas

4. Подключение к EUCROPMAP на S3

import s3fs
import xarray as xr

s3_endpoint_url = "https://s3.esoil.ru"
store_url = "s3://datasets/eucropmap.zarr"

fs = s3fs.S3FileSystem(
    anon=True,
    client_kwargs={"endpoint_url": s3_endpoint_url},
)

ds = xr.open_zarr(
    fs.get_mapper(store_url),
    chunks="auto",
    consolidated=None,
)

consolidated=None позволяет Xarray использовать фактическую конфигурацию Zarr v3, не ожидая старого .zmetadata. После открытия ds содержит метаданные и отложенный план чтения.

5. Быстрый осмотр и легенда

print(ds)
print(ds.year.values)  # 2018 и 2022

classes = ds["eucropmap"]
print(classes.attrs["long_name"])
print(classes.attrs["flag_meanings"])

Легенда записана в flag_values и flag_meanings: например, 211 — обычная пшеница, 216 — кукуруза, 231 — подсолнечник. Значение 0 исключайте из статистики: это фон или отсутствие покрытия, а не класс.

6. Базовые операции

Выбор года и области

Сначала перепроецируйте область исследования в EPSG:3035. Координаты x и y измеряются в метрах; поскольку y может быть убывающей, границы в slice задаются от maxy к miny.

import geopandas as gpd

study_area = gpd.read_file("study_area.geojson").to_crs("EPSG:3035")
minx, miny, maxx, maxy = study_area.union_all().bounds

classes_2022 = classes.sel(
    year=2022,
    x=slice(minx, maxx),
    y=slice(maxy, miny),
)

Если выборка пуста, посмотрите ds.y.values[:2] и измените порядок границ y в slice.

Чтение результата

classes_2022 = classes_2022.compute()
print(classes_2022.shape)

В память загрузится только выбранное окно одного года.

Подсчёт классов

valid = classes_2022.where(classes_2022 != 0)
class_counts = valid.to_series().value_counts().sort_index()
class_counts.index = class_counts.index.astype(int)
print(class_counts)

7. Особенность мозаики 2022 года

print(ds.attrs["mosaic_rule_2022"])

Куб уже применяет правило слияния источников. Ненулевой класс из украинской страты заменяет класс EU27-HR в их перекрытии; пользователю не нужно скачивать и сопоставлять страты самостоятельно.

8. Ленивые вычисления и Dask

Например, покрытие данными для каждого доступного года:

coverage_by_year = (classes != 0).mean(dim=("y", "x"))
print(coverage_by_year.compute())

Для больших задач выбирайте год и область до вычисления. Не вызывайте .values для всего куба: массив имеет европейское покрытие при исходном 10-метровом разрешении.

9. Визуализация и экспорт

import rioxarray  # регистрирует accessor .rio

small = classes.sel(year=2022).isel(x=slice(0, 1000), y=slice(0, 1000))
small.compute().plot()

classes_2022.rio.to_raster("eucropmap_2022.tif", compress="ZSTD")

Экспортируйте один выбранный год за раз, чтобы измерение year было удалено. Для категориальных классов используйте дискретную палитру.

10. Практические рекомендации

  • Доступны только годы 2018 и 2022.
  • Исключайте 0 из статистики классов.
  • Выполняйте пространственный выбор в EPSG:3035.
  • Учитывайте правило мозаики 2022 года при сравнении с исходными стратами.
  • Ограничивайте запрос годом и пространственным окном до .compute().

Характеристики

Тип данных
Растр
Формат
Zarr
Границы
6574149.3686, 5493940.8593 : 2413239.3686, 1270000.8593 (EPSG:3035)
Временной диапазон
[01.01.2018, 00:00, 31.12.2022, 23:59]
Объем данных
Не указано
Создано
Обновлено

Переменные

ИмяСтандартное имяCF Standard NameЕдиницыОписание
eucropmapplant_categories

Связи

Для этого датасета нет связей.

Ссылки