Датасеты

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

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

Нет обложки

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

Датасет создан ASP (Agence de Service et de Paiement – Агентство по обслуживанию и платежам) при технической поддержке IGN (Национальный институт географической информации Франции).

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

Описание

Датасет создан ASP (Agence de Service et de Paiement – Агентство по обслуживанию и платежам) при технической поддержке IGN (Национальный институт географической информации Франции). Данные формируются на основе ежегодных деклараций фермеров, подаваемых для получения субсидий в рамках Единой аграрной политики (CAP). RPG версии 2.1 предоставляет анонимную картографическую информацию о местоположении, границах и основных характеристиках (код культуры, площадь) сельскохозяйственных участков. Используется для анализа землепользования, планирования в агросфере, контроля субсидий и научных исследований. **поле с кодом культуры - „CODE_CULTU“

Работа с RPG GeoParquet на S3

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

Le Registre Parcellaire Graphique (RPG) содержит границы заявленных сельскохозяйственных участков Франции за 2015–2024. DuckDB — встраиваемая аналитическая база: отдельный сервер и загрузка всех данных в память не нужны. DuckDB позволяет работать со всеми годами через Python, не поднимая отдельную базу данных.

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

Для дальнейших возможностей DuckDB смотрите Python API, S3 API и spatial functions.

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

import duckdb


def open_rpg() -> 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 rpg AS
        SELECT *
        FROM read_parquet(
            's3://datasets/rpg/year=*/rpg.parquet',
            hive_partitioning = true,
            hive_types = {'year': INTEGER}
        );
    """)
    return con


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

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

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

surf_parc измеряется в гектарах. code_cultu — детальный код культуры, code_group, culture_d1 и culture_d2 удобны для укрупнения классов.

by_crop = con.sql("""
    SELECT year,
           code_group,
           code_cultu,
           culture_d1,
           count(*) AS parcels,
           sum(surf_parc) AS area_ha
    FROM rpg
    WHERE code_cultu IS NOT NULL
    GROUP BY year, code_group, code_cultu, culture_d1
    ORDER BY year, area_ha DESC
""")

print(by_crop.limit(30).df())

cat_cult_p добавлено в 2024; в предыдущих годах это поле равно NULL.

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

Предположим, имеется файл study_area.geojson с полигоном территории исследования. GeoPandas читает его и перепроецирует в Lambert-93 / EPSG:2154, CRS RPG.

import geopandas as gpd

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

roi = con.execute(
    """
    SELECT year, id_parcel, code_cultu, culture_d1, surf_parc,
           ST_AsText(ST_GeomFromWKB(geometry)) AS geometry_wkt
    FROM rpg
    WHERE year BETWEEN ? AND ?
      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(?))
    """,
    [2020, 2024, maxx, minx, maxy, miny, roi_wkt],
).fetchdf()

print(roi)

Не убирайте bbox-условия: они резко сокращают удалённое чтение. Для табличных агрегаций не выбирайте geometry вообще.

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

Тип данных
Вектор
Формат
geoparquet
Границы
1242198.046, 7108926.6707 : 100166.7061, 6049685.1801 (EPSG:2154)
Временной диапазон
[01.01.2015, 00:00, 31.12.2024, 23:59]
Объем данных
Не указано
Создано
Обновлено

Переменные

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

Связи

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

Ссылки