Структура посевных площадей Австрии 2015-2026.
INVEKOS Schläge – это ежегодно обновляемый геопространственный слой всех зарегистрированных в Австрии сельскохозяйственных участков, используемых для расчёта и контроля аграрных субсидий. Эти данные служат основой для обработки заявок на выплаты по программам поддержки сельского хозяйства.
Описание
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_code | plant_categories |
Связи
Для этого датасета нет связей.