# Valorisation des Référentiels Régionaux Pédologiques - Présentation d'un script en langage Python® pour estimer le Réservoir Utilisable Maximal en eau des sols

Stéphanie Jalabert, Paul Vilvandré, Bertrand Laroche, Christine Le Bas, Blandine Lemercier, Emilie Tournadre, Paul van Dijk, Joëlle Sauter

<figure><img src="image_1.png" /></figure>

## ► To cite this version:

Stéphanie Jalabert, Paul Vilvandré, Bertrand Laroche, Christine Le Bas, Blandine Lemercier, et al. Valorisation des Référentiels Régionaux Pédologiques - Présentation d'un script en langage Python® pour estimer le Réservoir Utilisable Maximal en eau des sols. Séminaire IGCS, OPenIG; Inrae LISAH; Inrae Info&Sols; Gis Sol, Apr 2024, Montpellier, France. hal-05379957

HAL Id: hal-05379957

https://hal.science/hal-05379957v1

Submitted on 24 Nov 2025

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_2.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
Sol d'R

Soutien à la diffusion
des Référentiels Régionaux Pédologiques

<figure><img src="image_3.png" /></figure>

1, Bordeaux Sciences Agro; 2, Inrae Info&Sols; 3, Institut Agro Rennes-Angers; 4, Chambres d'agriculture de France; 5, Chambre régionale d'agriculture Grand-Est; 6, Gip AtGeRi

# Valorisation des Référentiels Régionaux Pédologiques

## Présentation d'un script en langage Python® pour estimer le Réservoir Utilisable Maximal en eau des sols

Stéphanie JALABERT¹, Paul VILVANDRÉ¹,6, Bertrand LAROCHE², Christine LE BAS², Blandine LEMERCIER³, Emilie TOURNADRE⁴, Paul VAN DIJK⁵, Joëlle SAUTER⁵

<figure><img src="image_4.png" /></figure>

GisSol
GROUPEMENT DE SYSTÈME SOL

INRAE

MINISTÈRE
DE L'AGRICULTURE
ET DE LA SOUVENAINETÉ
ALIMENTAIRE

ADEME

<figure><img src="image_5.png" /></figure>

ARÉNER DE LA
TRANSITION
ECOLOGIQUE

<figure><img src="image_6.png" /></figure>

montpellier
Métropole

RÉPUBLIQUE
FRANÇAISE
Liberté
Égalité
Fraternité

BORDEAUX
SCIENCES
AGRO
# Valorisation des données RRP

<figure><img src="image_7.png" /></figure>

RRP = une base de données d'une grande richesse sémantique
# Valorisation des données RRP

<figure><img src="image_8.png" /></figure>

RRP

Variables déjà existantes

Données primaires

Drainage naturel du sol
Pierrosité ou texture de surface...
# Valorisation des données RRP

<figure><img src="image_9.png" /></figure>

RRP

Variables déjà
existantes

Données
primaires

<figure><img src="image_10.png" /></figure>

Données
élaborées

<figure><img src="image_11.png" /></figure>

Variables non
existantes

Stock de carbone, potentiel cultural, multifonctionnalité, réservoir hydrique...
# Valorisation des données RRP

<figure><img src="image_12.png" /></figure>

RRP

Variables déjà existantes

Données primaires

<figure><img src="image_13.png" /></figure>

Variables non existantes

Données élaborées

<figure><img src="image_14.png" /></figure>

Travail sur les données

**Formats:**

- Tabulaire

- Cartographique

**Agrégation cartographique**
# Valorisation des données RRP

<figure><img src="image_15.png" /></figure>

## RRP

Variables déjà existantes

Données primaires

<figure><img src="image_16.png" /></figure>

Variables non existantes

Données élaborées

<figure><img src="image_17.png" /></figure>

<figure><img src="image_18.png" /></figure>

## Travail sur les données

**Formats:**

- Tabulaire

- Cartographique

## Agrégation cartographique

<figure><img src="image_19.png" /></figure>

## Diffuser des indicateurs de propriétés des sols

Informer

Visualiser

Mettre à dispo
# Valorisation des données RRP

<figure><img src="image_20.png" /></figure>

RRP

Variables déjà existantes

Données primaires

<figure><img src="image_21.png" /></figure>

Variables non existantes

Données élaborées

<figure><img src="image_22.png" /></figure>

<figure><img src="image_23.png" /></figure>

**Diffuser des indicateurs de propriétés des sols**

<figure><img src="image_24.png" /></figure>

Travail sur les données

<figure><img src="image_25.png" /></figure>

**Formats:**

- Tabulaire

- Cartographique

**Agrégation cartographique**
# Valorisation des données RRP

<figure><img src="image_26.png" /></figure>

RRP

Variables déjà existantes

Données primaires

<figure><img src="image_27.png" /></figure>

Variables non existantes

Données élaborées

<figure><img src="image_28.png" /></figure>

Diffuser

<figure><img src="image_29.png" /></figure>

<figure><img src="image_30.png" /></figure>

Travail sur les données

**Formats:**

- Tabulaire

- Cartographique

Agrégation cartographique

<figure><img src="image_31.png" /></figure>

Solid'R

Soutien à la diffusion
des Référentiels Régionaux Pédologiques

Méthode automatisée
Un script en 5 étapes-clés

Chargement des données

<figure><img src="image_32.png" /></figure>

Extraction des
champs d'intérêts et
calcul des propriétés

Intégration à l'UTS

<figure><img src="image_33.png" /></figure>

Agrégation à l'UCS

Représentation
cartographique

<figure><img src="image_34.png" /></figure>
# Un script qui estime le RUM des sols

<figure><img src="image_35.png" /></figure>

<figure><img src="image_36.png" /></figure>

* Réservoir Utilisable en eau Maximal des sols

<figure><img src="image_37.png" /></figure>

<figure><img src="image_38.png" /></figure>

<figure><img src="image_39.png" /></figure>

RUM terre fine
Bruand et al. 2004

Type de strate :
surface ou profond
et
Classe texturale
(triangle de textures
des sols de l'Aisne)
# Un script qui estime le RUM des sols

<figure><img src="image_40.png" /></figure>

<figure><img src="image_41.png" /></figure>

* Réservoir Utilisable en eau Maximal des sols

<figure><img src="image_42.png" /></figure>

<figure><img src="image_43.png" /></figure>

<figure><img src="image_44.png" /></figure>

<figure><img src="image_45.png" /></figure>

<figure><img src="image_46.png" /></figure>

RUM terre fine
Bruand et al. 2004

Type de strate :
surface ou profond
et
Classe texturale
(triangle de textures
des sols de l'Aisne)

RUM des EG
(éléments
grossiers)
Tetegan et al.
(2011)

Nature des EG
# Un script sur Google Colaboratory

<figure><img src="image_47.png" /></figure>

* Développé sur la plateforme **Google Colaboratory**

* Simple d'accès

* Facile à prendre en main

* Un outil tout-en-un

<figure><img src="image_48.png" /></figure>
# Un script en 5 étapes-clés : chargement des données

<figure><img src="image_49.png" /></figure>

* Chargement des données RRP aux formats :

* BDD sémantique : Microsoft Access (.mdb)

* BDD géographique : .shp ou .json

* Configuré pour reconnaître dans le nom des fichiers le **numéro de département** associé au RRP
# Un script en 5 étapes-clés : extraction des variables

* Créer un jeu de données de travail (DataFrame) avec les variables d'intérêt présentes initialement dans le RRP

<figure><img src="image_50.png" /></figure>
# Un script en 5 étapes-clés : extraction des variables

<table><thead><tr><th>id_strate</th><th>id_uts</th><th>no_strate</th><th>prof_appar_min</th><th>prof_appar_moy</th><th>prof_appar_max</th><th>epais_min</th><th>epais_moy</th><th>epais_max</th></tr></thead><tbody><tr><td>101</td><td>10</td><td>1</td><td>NaN</td><td>0.0</td><td>NaN</td><td>20.0</td><td>25.0</td><td>30.0</td></tr><tr><td>102</td><td>10</td><td>2</td><td>20.0</td><td>25.0</td><td>30.0</td><td>20.0</td><td>25.0</td><td>30.0</td></tr><tr><td>102421</td><td>10242</td><td>1</td><td>NaN</td><td>0.0</td><td>NaN</td><td>10.0</td><td>15.0</td><td>20.0</td></tr><tr><td>102422</td><td>10242</td><td>2</td><td>10.0</td><td>15.0</td><td>20.0</td><td>10.0</td><td>15.0</td><td>20.0</td></tr><tr><td>102423</td><td>10242</td><td>3</td><td>20.0</td><td>30.0</td><td>40.0</td><td>60.0</td><td>70.0</td><td>80.0</td></tr><tr><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td></tr><tr><td>85691</td><td>8569</td><td>1</td><td>NaN</td><td>0.0</td><td>NaN</td><td>15.0</td><td>20.0</td><td>30.0</td></tr><tr><td>85692</td><td>8569</td><td>2</td><td>15.0</td><td>20.0</td><td>30.0</td><td>30.0</td><td>40.0</td><td>50.0</td></tr><tr><td>91</td><td>9</td><td>1</td><td>NaN</td><td>0.0</td><td>NaN</td><td>20.0</td><td>30.0</td><td>40.0</td></tr></tbody></table>
# Un script en 5 étapes-clés : extraction des variables

<figure><img src="image_51.png" /></figure>

* Créer un jeu de données de travail (DataFrame) avec

* les variables d'intérêt présentes initialement dans le RRP

* les nouvelles colonnes = variables d'entrée et de sortie du modèle RUM
# Un script en 5 étapes-clés : extraction des variables

<figure><img src="image_52.png" /></figure>
# Un script en 5 étapes-clés : extraction des variables

<table><thead><tr><th>id_strate</th><th>id_uts</th><th>no_strate</th><th>epais_strate</th><th>prof_appar_strate</th><th>prof_fin_strate</th><th>type_strate</th><th>classe_texturale_strate</th><th>ab_tf_strate</th></tr></thead><tbody><tr><td>101</td><td>10</td><td>1</td><td>None</td><td>NaN</td><td>NaN</td><td>None</td><td>None</td><td>None</td></tr><tr><td>102</td><td>10</td><td>2</td><td>None</td><td>NaN</td><td>NaN</td><td>None</td><td>None</td><td>None</td></tr><tr><td>102421</td><td>10242</td><td>1</td><td>None</td><td>NaN</td><td>NaN</td><td>None</td><td>None</td><td>None</td></tr><tr><td>102422</td><td>10242</td><td>2</td><td>None</td><td>NaN</td><td>NaN</td><td>None</td><td>None</td><td>None</td></tr><tr><td>102423</td><td>10242</td><td>3</td><td>None</td><td>NaN</td><td>NaN</td><td>None</td><td>None</td><td>None</td></tr><tr><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td></tr><tr><td>85691</td><td>8569</td><td>1</td><td>None</td><td>NaN</td><td>NaN</td><td>None</td><td>None</td><td>None</td></tr></tbody></table>

8. Avant de remplir ces colonnes, le script va vérifier s'il y a des valeurs manquantes au sein des variables initiales du RRP

→ règles de décisions formalisées en arbres de décision

<figure><img src="image_53.png" /></figure>
# La vérification et le remplissage sont formalisés en 7 étapes
ordonnées

## ... et explicitées en arbre
de décisions

<figure><img src="image_54.png" /></figure>

https://www.mindomo.com/mindmap/ru-de-la-terre-fine-tf-par-strate-ruTFMM-5a19579FF7ea4a04ac60cc8df49ca772
# = Notebook Structuré en sections cliquables

<figure><img src="image_55.png" /></figure>

## Sommaire

<figure><img src="image_56.png" /></figure>

<figure><img src="image_57.png" /></figure>

## Présentation générale du script

<figure><img src="image_58.png" /></figure>

* Importation des bibliothèques nécessaires

<figure><img src="image_59.png" /></figure>

* Importation des données du RPP et préparation du Dataframe

<figure><img src="image_60.png" /></figure>

* Import des tables à partir du fichier Microsoft Access (.mdb)

* Ajout des informations nécessaires à l'estimation du RUM de la terre fine et du RUM des EG au dataframe

* Préparation finale du DataFrame

* Statistiques descriptives en amont pour des vérifications

* Calcul des propriétés des strates

* Détermination de la classe texturale des strates

* Détermination de l'épaisseur des strates

* Détermination du type des strates

* Détermination de l'abondance de la terre fine sans unité et de l'abondance des éléments

<figure><img src="image_61.png" /></figure>

<figure><img src="image_62.png" /></figure>

<figure><img src="image_63.png" /></figure>

+ Code + Texte

## Présentation générale du script

Ce script calcule le réservoir utilisable maximum (RUM) d'un sol en suivant les méthodologies de Tétégan et al. (2011) pour les éléments grossiers et de Bruand et al. (2004) pour la terre fine. Il présente comme fonctionnalités et résultats :

* Extraction des données depuis une base Access d'un RRP

* Calcul de propriétés des strates jusqu'au RUM

* Agrégation du RUM à différentes échelles (strate, UTS, UCS)

* Représentation cartographique du RUM à l'échelle du RRP

Le script s'exécute en 1 minute maximum. Il faut importer en amont deux fichiers dans le panneau latéral gauche, un fichier Json et le fichier Access.

Il est possible de naviguer dans le script à l'aide du sommaire disponible dans la barre d'outils gauche.

Plusieurs fichiers sont disponibles après exécution du script, des fichiers csv à différentes étapes des calculs, et un shapefile avec la mise en classe finale

Réalisé par l'équipe Sols de Bordeaux Sciences Agro à partir du travail d'étudiants M2 SIGAT de l'année 2022-2023.

## Importation des bibliothèques nécessaires

```python
[] #Installation de toutes les bibliothèques nécessaires
import importlib

def check_install/package_name):
```
## Sommaire

<figure><img src="image_64.png" /></figure>

+ Code + Texte

Présentation générale du script

Importation des bibliothèques
nécessaires

Importation des données du RPP et
préparation du Dataframe

Import des tables à partir du
fichier Microsoft Access (.mdb)

Ajout des informations
nécessaires à l'estimation du RUM
de la terre fine et du RUM des EG
au dataframe

Préparation finale du DataFrame

Statistiques descriptives en amont
pour des vérifications

## Calcul des propriétés des strates

Détermination de la classe
texturale des strates

Détermination de l'épaisseur des
strates

Détermination du type des strates

Détermination de l'abondance de
la terre fine sans unité et de
l'abondance des éléments
graissons sans unité

## Calcul des propriétés des strates

Les propriétés calculées ici servent à déterminer le RUM des strates par la suite, le calcul respecte un ordre et une méthodologie précise décrite dans l'organigramme ci-dessous:

[Organigramme sur Mindomo](#)

<figure><img src="image_65.png" /></figure>

# On retrouve l'arbre de décisions ici 😊

## Détermination de la classe texturale des strates

```R
[] # Copie du DataFrame existant
strate_modif_v1 = strate_modif_v0.copy()
```

Pour le passage de la texture GEPPA à AISNE, on utilise le tableau de correspondance Aisne/Geppa défini selon Richer de Forges, A., Feller, C., Jamagne, M., & Arrouays, D. *Perdus dans le triangle des textures*. (2008)

Choix de correspondances faits par Jalabert. S., Juillet 2023

```R
[] # Algorithme de détermination de la classe texturale si la texture AISNE ou GEPPA est renseignée
for index, row in strate_modif_v1.iterrows():
    if not pd.isna(row['TEXTURE GEPPA']) and isinstance(row['TEXTURE GEPPA'], str):
        strate_modif_v1.at[index, 'TEXTURE GEPPA'] = row['TEXTURE GEPPA'].upper()

for index, row in strate_modif_v1.iterrows():
    if not pd.isna(row['TEXTURE AISNE'])
```
<figure><img src="image_66.png" /></figure>

<figure><img src="image_67.png" /><figcaption>Panneau latéral gauche
= chargement du RRP</figcaption></figure>

<figure><img src="image_68.png" /></figure>

BDD_RRP_16.mdb

<figure><img src="image_69.png" /></figure>

RRP16.json

### Importation des bibliothèques nécessaires

```python
[] #Installation de toutes les bibliothèques nécessaires
import importlib
```
<figure><img src="image_70.png" /></figure>

<figure><img src="image_71.png" /></figure>

Exécuter le script en un clic

<figure><img src="image_72.png" /></figure>

Résultat ➔ Le calcul du RUM sur le RRP Charente a pris 21 secondes (hors chargement des données RRP)
<figure><img src="image_73.png" /></figure>

<figure><img src="image_74.png" /></figure>

## Aperçus des résultats en tables

### Fichiers

<figure><img src="image_75.png" /></figure>

<figure><img src="image_76.png" /></figure>

### + Code + Texte

<figure><img src="image_77.png" /></figure>

<figure><img src="image_78.png" /></figure>

<figure><img src="image_79.png" /></figure>

<figure><img src="image_80.png" /></figure>

<figure><img src="image_81.png" /></figure>

<figure><img src="image_82.png" /></figure>

<figure><img src="image_83.png" /></figure>

<figure><img src="image_84.png" /></figure>

<figure><img src="image_85.png" /></figure>

<figure><img src="image_86.png" /></figure>

<figure><img src="image_87.png" /></figure>

<figure><img src="image_88.png" /></figure>

<figure><img src="image_89.png" /></figure>

<figure><img src="image_90.png" /></figure>

<figure><img src="image_91.png" /></figure>

<figure><img src="image_92.png" /></figure>

<figure><img src="image_93.png" /></figure>

<figure><img src="image_94.png" /></figure>

<figure><img src="image_95.png" /></figure>

<figure><img src="image_96.png" /></figure>

<figure><img src="image_97.png" /></figure>

<figure><img src="image_98.png" /></figure>

<figure><img src="image_99.png" /></figure>

<figure><img src="image_100.png" /></figure>

<figure><img src="image_101.png" /></figure>

<figure><img src="image_102.png" /></figure>

<figure><img src="image_103.png" /></figure>

sample_data

1_Strates_avec_RUM_16.csv

2_UTS_avec_RUM_mise_en_clas...

3 UCS_avec_classes_agregees...

4 UCS_classe_maj_RUM_16.csv

BDD_RRP_16.mdb

RRP16.json

RRP_16_classe_majo_RUM.cpg

RRP_16_classe_majo_RUM.dbf

RRP_16_classe_majo_RUM.prj

RRP_16_classe_majo_RUM.shp

RRP_16_classe_majo_RUM.shx

RUM_carte_finale_16.pdf

RUM_carte_finale_16.png

RUM_carte_finale_16.tif

Strates_avec_propriétés.csv

[ ]

<table><thead><tr><th></th><th>id_strate</th><th>type_strate</th><th>RUM_TF_mm</th><th>RUM_EG_mm</th><th>RUM_strate</th></tr></thead><tbody><tr><td>0</td><td>101</td><td>surface</td><td>39.6625</td><td>0</td><td>39.66</td></tr><tr><td>1</td><td>102</td><td>profond</td><td>26.3625</td><td>0</td><td>26.36</td></tr><tr><td>2</td><td>102421</td><td>surface</td><td>23.6250</td><td>1.218493</td><td>24.84</td></tr><tr><td>3</td><td>102422</td><td>surface</td><td>19.6875</td><td>3.046233</td><td>22.73</td></tr><tr><td>4</td><td>102423</td><td>profond</td><td>13.1600</td><td>45.490419</td><td>58.65</td></tr></tbody></table>

[ ] # Exportation possible

# Assurez-vous que numDep contient le numéro du département sous forme de chaîne de caractères
numDep = str(numDep)

# Concaténez le numéro du département avec le nom du fichier
nomFichier = '1_Strates_avec_RUM_' + numDep + '.csv'

# Exportez le Frame vers le fichier CSV avec le nouveau nom
strate RUM.to csv(nomFichier, index=False)

## Exports des fichiers de sorties, en csv, shp, pdf...
<figure><img src="image_104.png" /></figure>

<figure><img src="image_105.png" /></figure>

<figure><img src="image_106.png" /></figure>

<figure><img src="image_107.png" /></figure>

<figure><img src="image_108.png" /></figure>

<figure><img src="image_109.png" /></figure>

## Sommaire

<figure><img src="image_110.png" /></figure>

<figure><img src="image_111.png" /></figure>

texturale des strates

Détermination de l'épaisseur des
strates

Détermination du type des strates

Détermination de l'abondance de
la terre fine sans unité et de
l'abondance des éléments
grossiers sans unité

Calcul du RUM par strate

Calcul du RUM de la terre fine

Calcul du RUM des éléments
grossiers

Calcul du RUM totale par strate

Troncature à 1 mètre

Passage du RUM par strates au RUM
par UTS

Mise en forme cartographique

Agrégation cartographique à l'UCS

Représentation cartographique du
RUM des UCS

+ Section

<figure><img src="image_112.png" /></figure>

<figure><img src="image_113.png" /></figure>

<figure><img src="image_114.png" /></figure>

<figure><img src="image_115.png" /></figure>

<figure><img src="image_116.png" /></figure>

+ Code

+ Texte

<figure><img src="image_117.png" /></figure>

## Le réservoir en eau utilisable maximal (RUM) des sols dans le département 16
## Méthode d'agrégation cartographique : classe de RUM représentant minimum 50 % de la surface de l'UCS

<figure><img src="image_118.png" /></figure>

RAM

<figure><img src="image_119.png" /></figure>

Disque

<figure><img src="image_120.png" /></figure>

<figure><img src="image_121.png" /></figure>

<figure><img src="image_122.png" /></figure>

<figure><img src="image_123.png" /></figure>

<figure><img src="image_124.png" /></figure>

<figure><img src="image_125.png" /></figure>

<figure><img src="image_126.png" /></figure>

<figure><img src="image_127.png" /></figure>

<figure><img src="image_128.png" /></figure>

<figure><img src="image_129.png" /></figure>

<figure><img src="image_130.png" /></figure>

Classes de réservoir en eau utilisable maximal (RUM) des sols en mm d'eau

< 25

[25 - 50[

[50 - 100[

[100 - 150[

>= 150

Variabilité trop importante des classes de RUM au sein de l'UCS

Données insuffisantes pour estimer le RUM des sols

<figure><img src="image_131.png" /></figure>

<figure><img src="image_132.png" /></figure>

Connecté à Backend Google Compute Engine Python 3

<figure><img src="image_133.png" /></figure>

# Sortie carto : représentation de la classe dominante de RUM si plus de 50 % de l'UCS
# Perspectives d'amélioration du script

* Poursuivre les tests sur l'outil

* Proposer d'autres méthodes d'estimation du RUM des sols et comparer

* Prendre en compte les restitutions en eau des roches très poreuses de type craie (retour de la CRA GE)
# Perspectives d'amélioration du script

* Poursuivre les tests sur l'outil

* Proposer d'autres méthodes d'estimation du RUM des sols et comparer

* Prendre en compte les restitutions en eau des roches très poreuses de type craie (retour de la CRA GE)

* Retravailler les sorties automatisées :

* Jeux de données avec indicateurs et incertitudes associées

* Les cartes à diffuser et leurs tables attributaires

* Les légendes

Harmonisation avec l' existant
  = Sols de Bretagne, Sols d'Alsace, sols d'Occitanie
# Perspectives d'amélioration du script

* Poursuivre les tests sur l'outil

* Proposer d'autres méthodes d'estimation du RUM des sols et comparer

* Prendre en compte les restitutions en eau des roches très poreuses de type craie (retour de la CRA GE)

* Retravailler les sorties automatisées :

* Jeux de données avec indicateurs et incertitudes

* Les cartes à diffuser et leurs tables attributaires

* Les légendes

Harmonisation avec
l'existant = Sols de
Bretagne, d'Alsace,
d'Occitanie

* Développer d'autres fonctions d'export :

* Téléchargement de tous les fichiers de sortie en .zip

* Fiche de métadonnées ?

* Publier une première version du script