Датасеты

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

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

Нет обложки

Структура посевных площадей Австрии 2015-2026.

INVEKOS Schläge – это ежегодно обновляемый геопространственный слой всех зарегистрированных в Австрии сельскохозяйственных участков, используемых для расчёта и контроля аграрных субсидий. Эти данные служат основой для обработки заявок на выплаты по программам поддержки сельского хозяйства.

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

Описание

INVEKOS Schläge – это ежегодно обновляемый геопространственный слой всех зарегистрированных в Австрии сельскохозяйственных участков, используемых для расчёта и контроля аграрных субсидий. Эти данные служат основой для обработки заявок на выплаты по программам поддержки сельского хозяйства. Один участок – это связная площадь в пределах полевого сегмента, которая в течение одного вегетационного периода: используется под одну сельскохозяйственную культуру (тип использования) с едиными требованиями к агротехнике; либо представляет собой элемент ландшафта согласно национальным нормативным актам (Приложение 1 к Горизонтальному регламенту GAP); либо поддерживается в хорошем сельскохозяйственном и экологическом состоянии в соответствии со статьёй 94 Регламента (ЕС) № 1306/2013.

Работа с INVEKOS Schläge GeoParquet на S3

Что понадобится

INVEKOS Schläge — ежегодные зарегистрированные сельскохозяйственные участки Австрии за 2015–2026. DuckDB — встраиваемая аналитическая база: отдельный сервер и загрузка всех данных в память не нужны. DuckDB позволяет работать со всеми годами через Python, не поднимая отдельную базу данных.

uv add duckdb geopandas
# или: python -m pip install duckdb geopandas

Краткие справки: Python API, S3 API, spatial functions.

Подключение ко всему датасету

import duckdb


def open_invekos() -> duckdb.DuckDBPyConnection:
    con = duckdb.connect()
    con.execute("""
        INSTALL httpfs;
        LOAD httpfs;
        INSTALL spatial;
        LOAD spatial;

        CREATE OR REPLACE SECRET esoil_s3 (
            TYPE s3,
            ENDPOINT 's3.esoil.ru',
            URL_STYLE 'path',
            USE_SSL true,
            SCOPE 's3://datasets/'
        );

        CREATE OR REPLACE VIEW invekos AS
        SELECT *
        FROM read_parquet(
            's3://datasets/invekos_shlaege/year=*/invekos_shlaege.parquet',
            hive_partitioning = true,
            hive_types = {'year': INTEGER}
        );
    """)
    return con


con = open_invekos()
print(con.sql("SELECT min(year), max(year), count(*) AS parcels FROM invekos").df())

invekos — это view, то есть сохранённое имя для удалённых Parquet-файлов. Создание view не скачивает весь датасет. Результаты .df() — обычные Pandas DataFrame; вызывайте их только после достаточно узкого запроса.

Культуры и площадь по годам

snar_bezeichnung — название культуры на немецком; snar_code — её код; sl_flaeche_brutto_ha уже выражена в гектарах.

crops = con.sql("""
    SELECT year,
           snar_code,
           snar_bezeichnung,
           count(*) AS parcels,
           sum(sl_flaeche_brutto_ha) AS area_ha
    FROM invekos
    WHERE snar_code IS NOT NULL
    GROUP BY year, snar_code, snar_bezeichnung
    ORDER BY year, area_ha DESC
""")

print(crops.limit(30).df())

Новые годы содержат kz_bio_oepul_jn; в старых годах это поле будет NULL.

organic_2024 = con.sql("""
    SELECT snar_bezeichnung, sum(sl_flaeche_brutto_ha) AS area_ha
    FROM invekos
    WHERE year = 2024 AND kz_bio_oepul_jn IS NOT NULL
    GROUP BY snar_bezeichnung
    ORDER BY area_ha DESC
""")
print(organic_2024.df())

Выборка по ROI-полигону

Предположим, имеется файл study_area.geojson с полигоном территории исследования. GeoPandas читает его и перепроецирует в EPSG:31287, CRS INVEKOS.

import geopandas as gpd

roi_file = gpd.read_file("study_area.geojson").to_crs("EPSG:31287")
roi_geometry = roi_file.geometry.union_all()
minx, miny, maxx, maxy = roi_geometry.bounds
roi_wkt = roi_geometry.wkt

roi = con.execute(
    """
    SELECT year, fs_kennung, snar_code, snar_bezeichnung,
           sl_flaeche_brutto_ha,
           ST_AsText(ST_GeomFromWKB(geometry)) AS geometry_wkt
    FROM invekos
    WHERE year = ?
      AND geometry IS NOT NULL
      AND bbox.xmin <= ? AND bbox.xmax >= ?
      AND bbox.ymin <= ? AND bbox.ymax >= ?
      AND ST_Intersects(ST_GeomFromWKB(geometry), ST_GeomFromText(?))
    """,
    [2024, maxx, minx, maxy, miny, roi_wkt],
).fetchdf()

print(roi)

Оставляйте четыре условия по bbox: они позволяют отсеять ненужные row groups до декодирования WKB и особенно полезны при S3-чтении.

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

Тип данных
Вектор
Формат
geoparquet
Границы
685425.12, 570140.96 : 112561.21, 278713.135 (EPSG:31287)
Временной диапазон
[01.01.2015, 00:00, 30.09.2026, 23:59]
Объем данных
Не указано
Создано
Обновлено

Переменные

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

Связи

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

Ссылки