# Catalogue de fonctions personnalisées

GeoPard propose un catalogue complet de fonctions personnalisées conçues pour améliorer la lisibilité et la fonctionnalité des analyses basées sur des équations. Ces fonctions encapsulent des `python` code, vous permettant de mettre en œuvre facilement des manipulations et des calculs de données sophistiqués.

### Saisir l’équation

<figure><img src="https://docs.geopard.tech/~gitbook/image?url=https%3A%2F%2F3272281156-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FYICBELdyAXXebKAzfLOR%252Fuploads%252FdHTdBE1CN2gSJbE7Bfo0%252Fimage.png%3Falt%3Dmedia%26token%3Dd8e3544f-feca-43a6-b6a1-f1305068de88&#x26;width=768&#x26;dpr=4&#x26;quality=100&#x26;sign=508ec9e0&#x26;sv=2" alt=""><figcaption><p>Saisir une équation</p></figcaption></figure>

La liste des fonctions préintégrées disponibles pour créer des équations plus intuitives et plus faciles à maintenir dans GeoPard est incluse dans le `geopard` package :

### fill\_gaps\_with\_k\_neighbors

```python
# input_data est une couche d’attribut de jeu de données (par ex. rendement, NDVI)
filled_layer = geopard.fill_gaps_with_k_neighbors(yield_layer, k=5)
```

Cette fonction restaure les vides de données ou les zéros dans un jeu de données à l’aide de l’algorithme K-Neighbors. En spécifiant la variable `input_data` (comme un jeu de données avec l’attribut sélectionné) et le nombre de voisins `k`, vous pouvez remplir sans difficulté les valeurs manquantes, garantissant la continuité et l’intégrité des données.

Cette fonction fonctionne bien lorsque les vides de données sont répartis dans le champ et n’ont pas été attribués à une partie particulière de la limite du champ.

### determine\_data\_similarity

```python
similarity = geopard.determine_data_similarity(yield_2023, yield_2024)
```

Utilisez cette fonction pour calculer la similarité pixel par pixel entre deux jeux de données. Les variables `data_layer_1` et `data_layer_2` doivent représenter la **même mesure** dans les **mêmes unités** afin de garantir une comparaison pertinente. En fournissant des variables `data_layer_1` et `data_layer_2` associées aux jeux de données, vous pouvez générer une carte de similarité avec des valeurs allant de 0 à 1, facilitant les études comparatives et la reconnaissance de motifs.

### determine\_data\_similarity\_from\_normalized

```python
layer_1_norm = geopard.normalize_data(layer_1)
layer_2_norm = geopard.normalize_data(layer_2)

similarity = geopard.determine_data_similarity_from_normalized(layer_1_norm, layer_2_norm)
```

Utilisez cette fonction pour calculer la similarité pixel par pixel entre deux jeux de données normalisés. La normalisation est recommandée lorsque les `data_layer_1` et `data_layer_2` originaux ont des échelles ou des unités différentes. En fournissant ces jeux de données en entrée, la fonction génère une carte de similarité avec des valeurs allant de 0 à 1, ce qui la rend adaptée aux études comparatives, à la reconnaissance de motifs et à l’analyse de la cohérence spatiale.

### determine\_low\_high\_similarity

```python
zones = geopard.determine_low_high_similarity(soil_ph, yield_layer)
```

Cette fonction évalue la similarité bas-haut entre deux jeux de données. En fournissant des variables `data_layer_1` et `data_layer_2` associées à des jeux de données, vous obtenez une carte de similarité catégorisée indiquant des combinaisons telles que bas-bas, bas-haut, haut-bas et haut-haut, ce qui est utile pour une classification nuancée des données.

### get\_value\_for\_zone

```python
zone_3_values = geopard.get_value_for_zone(yield_layer, zone_map, zone_id=3)
```

Utilisez cette fonction pour extraire toutes les valeurs d’un attribut de jeu de données dans une seule zone. Fournissez `data_layer` (la couche d’attribut), `zones_layer` (la carte des zones), et `zone_id` (le numéro de la zone) pour isoler les valeurs à des fins d’analyse, telles que le rendement, la dose d’application ou la dose de semis, à l’intérieur de cette zone.

### drop\_value

```python
clean_layer = geopard.drop_value(elevation_layer, value_to_drop=0)
```

Cette fonction vous permet de supprimer des valeurs spécifiques d’un attribut de jeu de données. En spécifiant `data_layer` et `value_to_drop`, vous pouvez nettoyer le jeu de données en éliminant ces valeurs du résultat, en les remplaçant techniquement par `NaN`.

### normalize\_data

```python
ndvi_normalized = geopard.normalize_data(ndvi_layer)
```

Normalisez un attribut de jeu de données avec cette fonction. En passant `data_layer`, vous pouvez mettre les données à l’échelle dans une plage standardisée de 0 à 1, ce qui facilite la comparaison et l’intégration entre différents jeux de données.

### calculate\_total\_applied\_fertilizer

```python
applications = [urea_rate, map_rate]
coefficients = [1.0, 1.0]  # utilisez 1.0 pour conserver les unités, ou ajustez selon la concentration du produit

total_applied = geopard.calculate_total_applied_fertilizer(applications, coefficients)
```

Calcule la quantité totale d’engrais appliquée en unités par surface (par exemple, en kg/ha, l/ha, gal/ac, etc.). En fournissant `application_list` des jeux de données avec des attributs AppliedRate et les `active_ingredient_coefficient_list` correspondants avec des produits fertilisants, vous obtenez la quantité totale réelle d’engrais appliquée en unités (par exemple, en kg, l, gal, etc.).

### calculate\_total\_applied\_nitrogen

```python
applications = [urea_rate, uan_rate]
nitrogen_coefficients = [0.46, 0.32]  # fraction de N (matière active) dans chaque produit

N_total_applied = geopard.calculate_total_applied_nitrogen(applications, nitrogen_coefficients)
```

Calcule la quantité totale d’azote appliquée en kg/ha à l’aide de cette fonction. En fournissant `application_list` des jeux de données avec des attributs AppliedRate et les `active_ingredient_coefficient_list` avec des produits azotés pour convertir l’azote réel en kg/ha, vous pouvez calculer avec précision la quantité totale d’azote appliquée, essentielle pour la planification agricole et les évaluations de durabilité. La sortie est utilisée comme `N_total_applied` dans[`geopard.calculate_nitrogen_use_efficiency`](#calculate_nitrogen_use_efficiency).

### calculate\_nitrogen\_uptake

```python
N_uptake = geopard.calculate_nitrogen_uptake(
    yield_wet_tha=yield_layer,
    moisture_pct=moisture_layer,
    protein_pct=protein_layer,
    protein_crop_correction_coefficient=6.25
)
```

Déterminez l’absorption d’azote en kg/ha avec cette fonction. En fournissant `yield_wet_tha`, `moisture_pct`, `protein_pct` à partir du jeu de données de rendement et `protein_crop_correction_coefficient` représentant le lien entre les protéines et l’absorption d’azote, vous pouvez évaluer l’efficacité d’utilisation de l’azote dans la production agricole. La sortie est utilisée comme `N_uptake` dans[`geopard.calculate_nitrogen_use_efficiency`](#calculate_nitrogen_use_efficiency) .

### calculate\_nitrogen\_use\_efficiency

```python
NUE_pct = geopard.calculate_nitrogen_use_efficiency(N_total_applied, N_uptake)
```

Évalue l’efficacité d’utilisation de l’azote en pourcentage à l’aide de cette fonction. En saisissant [`N_total_applied`](#calculate_total_applied_nitrogen) et [`N_uptake`](#calculate_nitrogen_uptake) des variables (issues des fonctions précédentes), vous pouvez mesurer l’efficacité de l’application d’azote, ce qui aide à optimiser l’utilisation des engrais.

### calculate\_costs

```python
rates = [seed_rate, fertilizer_rate]
prices = [1.2, 0.8]  # prix par unité pour chaque couche de taux
costs = geopard.calculate_costs(rates, prices)
```

Calcule les coûts totaux en fonction des doses d’application et des prix à l’aide de cette fonction. En fournissant une `application_rate_list` de jeux de données avec les attributs AppliedRate et une `price_per_unit_list`correspondante, vous pouvez agréger les dépenses liées à diverses activités agricoles, ce qui soutient la gestion budgétaire et la planification financière. La sortie est utilisée comme `costs` dans[`geopard.calculate_profit`](#calculate_profit).

### calculate\_revenue

```python
revenue = geopard.calculate_revenue(yield_as_mass=yield_layer, yield_price_per_unit=0.25)
```

Calcule le revenu à partir du jeu de données de rendement à l’aide de cette fonction. En saisissant `yield_as_mass` associé à l’attribut du jeu de données de rendement et le `yield_price_per_unit`, vous pouvez estimer le revenu généré par la production agricole, facilitant ainsi les évaluations économiques. La sortie est utilisée comme `costs` dans[`geopard.calculate_profit`](#calculate_profit) .

### calculate\_profit

```python
profit = geopard.calculate_profit(revenue, costs)
```

Détermine le bénéfice en soustrayant les coûts du revenu à l’aide de cette fonction. En fournissant les [`revenue`](#calculate_revenue) et [`costs`](#calculate_costs) variables (issues des fonctions précédentes), vous pouvez calculer facilement le gain financier de leurs opérations agricoles, ce qui soutient l’analyse de la rentabilité et la prise de décision stratégique.

### fill\_value\_for\_range

```python
# conserver uniquement les valeurs entre 10 et 20, remplacer le reste par 0
filtered = geopard.fill_value_for_range(layer, min_value=10, max_value=20, value_to_fill=0)
```

Cette fonction filtre les valeurs dans une plage spécifiée dans le tableau d’ `input` . En fournissant le tableau, ainsi que les seuils optionnels `input` array, ainsi que les seuils optionnels `min_value` et optionnels `max_value` , vous pouvez isoler les valeurs qui se situent dans la plage souhaitée. Le paramètre `value_to_fill` permet de remplacer les valeurs hors plage par une valeur spécifiée, améliorant ainsi les processus de filtrage et de normalisation des données.

### calculate\_per\_pixel\_mae

```python
mae_layer = geopard.calculate_per_pixel_mae(predicted_yield, observed_yield)
```

Utilisez cette fonction pour calculer l’erreur absolue moyenne (MAE) par pixel entre deux jeux de données. Elle fournit une carte spatiale des différences absolues. La « différence absolue » est simplement la taille de l’écart entre les valeurs de pixels correspondantes, sans tenir compte du fait que l’une soit supérieure ou inférieure à l’autre.

La fonction aide à identifier les zones présentant des écarts plus importants.

### calculate\_per\_pixel\_relative\_deviation

```python
relative_dev = geopard.calculate_per_pixel_relative_deviation(observed_yield, modeled_yield)
```

Cette fonction calcule l’écart relatif pour chaque pixel entre deux jeux de données, en exprimant la différence sous forme de pourcentage de la valeur dans `dataset_1`. En substance, elle montre de combien la valeur d’un pixel s’écarte de la valeur correspondante dans `dataset_1` en termes proportionnels.

Cette approche est particulièrement utile lors de l’analyse des variations des propriétés du sol, du rendement des cultures ou des données de télédétection, car elle vous aide à repérer rapidement les zones présentant des différences proportionnelles importantes.

### calculate\_difference

```python
difference = geopard.calculate_difference(yield_2024, yield_2023)
```

Cette fonction soustrait un jeu de données d’un autre pour créer une carte de différence. Elle met en évidence les zones où les valeurs d’un jeu de données sont plus élevées ou plus faibles par rapport à l’autre, ce qui facilite l’identification des tendances et des changements au fil du temps.

Cet outil est particulièrement utile pour visualiser les variations des propriétés du sol, du rendement des cultures ou des données de télédétection, vous aidant à identifier rapidement les zones pouvant nécessiter une analyse plus approfondie ou une intervention.

### calculate\_relative\_difference

```python
relative_diff = geopard.calculate_relative_difference(yield_2024, yield_2023)
```

Cette fonction calcule la différence relative pour chaque pixel en normalisant la différence entre les jeux de données à l’aide des valeurs de `dataset_2`. Cela signifie qu’elle montre à quel point le changement est important par rapport à la magnitude de `dataset_2`.

Une telle comparaison proportionnelle est particulièrement utile lorsqu’on travaille avec des jeux de données d’échelles différentes, car elle aide à révéler les variations relatives des propriétés du sol, des rendements des cultures ou des sorties de capteurs. Cette approche aide à repérer les zones présentant une variation notable.

### calculate\_normalized\_difference

```python
normalized_diff = geopard.calculate_normalized_difference(layer_1, layer_2)
```

Cette fonction calcule la différence normalisée pour chaque pixel en mettant les deux jeux de données à l’échelle par rapport à leur valeur maximale globale. Ce processus rend les jeux de données directement comparables même s’ils ont à l’origine des plages différentes.

La carte résultante fournit une vue claire des variations des propriétés du sol, du rendement des cultures et des données de télédétection, vous permettant d’identifier et d’évaluer rapidement les différences clés.

### build\_zones\_by\_intervals

```python
# intervalles pour le zonage
intervals = [
    (4, 8),
    (8, 12),
    (12, 16)
]

# utilisation
zones = geopard.build_zones_by_intervals(
    layer, 
    intervals
)
```

Cette fonction crée une carte de zones de gestion en classant une couche raster continue en zones discrètes selon des intervalles de valeurs définis par l’utilisateur.

Chaque intervalle définit une zone, et chaque pixel est affecté à la zone dans laquelle se situe sa plage de valeurs. Les pixels qui ne correspondent à aucun intervalle sont marqués comme -1.

Cette approche de zonage est couramment utilisée pour transformer des cartes de rendement, des propriétés du sol ou des indices de télédétection en zones de gestion exploitables pour des applications à dose variable.

**Cas d’utilisation typiques**

* Créer des zones de gestion à partir de couches de rendement, de NDVI ou de sol
* Préparer des cartes de zones pour les calculs de dose d’engrais ou de semis
* Segmenter les champs en zones homogènes pour la prise de décision

### calculate\_nutrient\_rate\_as\_active\_ingredients\_per\_zone

```python
# options de target_nutrient
target_nutrient_option1 = 50 # nombre constant
# OU
target_nutrient_option2 = {1: 20, 2: 40} # dictionnaire par zone
# OU
target_nutrient_option3 = np.array([[1, 1], [2, 3]], dtype=float) # couche raster continue

# options de applied_nutrient_operations
applied_operations = [
    5,                                      # opération1 comme nombre constant
    {1: 2, 2: 4},                           # opération2 comme dictionnaire par zone
    np.array([[1, 1], [2, 3]], dtype=float) # opération3 comme couche raster continue
]

# utilisation
rates_as_active_ingredients = geopard.calculate_nutrient_rate_as_active_ingredients_per_zone(
    zone_map, 
    target_nutrient, 
    plant_available_soil_nutrient, 
    applied_nutrient_operations = applied_operations # ou []
)
```

Cette fonction calcule la dose d’apport nutritif requise (matière active) pour chaque zone de gestion.

Le calcul est basé sur :

* un niveau nutritif cible,
* l’apport en nutriments disponible pour la plante provenant du sol,
* les nutriments déjà appliqués lors d’opérations précédentes (fumier, engrais, digestat, etc.).

Les opérations nutritives appliquées peuvent être fournies sous forme de constantes, de valeurs par zone, de couches raster ou de toute combinaison de ces éléments. Toutes les entrées sont automatiquement résolues et agrégées par zone.

Par défaut, la dose requise est calculée comme la différence entre le niveau nutritif cible et la somme de l’apport du sol et des nutriments appliqués. Le résultat est renvoyé sous forme de carte raster où chaque zone contient une dose nutritive uniforme.

### convert\_active\_ingredient\_and\_product

```python
# coefficient de conversion de la matière active vers le produit et inversement
corrected_coefficient = 1.5  # coefficient constant
# OU
corrected_coefficient = np.array([[np.nan, 5], [np.nan, 1]], dtype=float)  # coefficients par pixel

# utilisation
rates_as_products = geopard.convert_active_ingredient_and_product(
    layer, 
    corrected_coefficient
)
```

Cette fonction convertit une couche raster entre **les doses de matière active et les doses de produit** à l’aide d’un coefficient de correction.

Le `corrected_coefficient` peut être un seul **float** (appliqué à tous les pixels) ou une **matrice de coefficients** (conversion par pixel). Elle est généralement utilisée pour traduire les besoins nutritifs calculés (matière active) en doses réelles d’application du produit, ou inversement, en fonction de la composition de l’engrais ou de la concentration nutritive.

La conversion est appliquée pixel par pixel, en préservant la structure spatiale de la couche d’origine.

**Cas d’utilisation typiques**

* Convertir les doses nutritives en doses de produit fertilisant
* Ajuster les cartes d’application en fonction de la concentration nutritive
* Préparer les cartes de prescription finales pour les machines

### estimate\_texture\_class\_based\_on\_usda

```python
usda_texture = geopard.estimate_texture_class_based_on_usda(
    sand_pct_layer,
    silt_pct_layer,
    clay_pct_layer
)
```

Cette fonction estime la texture du sol selon l’USDA pour chaque pixel à l’aide des pourcentages de sable, de limon et d’argile.

Fournissez trois couches raster en pourcentage (0-100) représentant les fractions granulométriques. Le résultat est <mark style="background-color:green;">des noms de classes USDA tels que</mark> *<mark style="background-color:green;">sand, loamy\_sand, sandy\_loam, loam, silt\_loam, sandy\_clay\_loam, clay\_loam, silty\_clay\_loam, silty\_clay, ou undefined</mark>* <mark style="background-color:green;">lorsque les entrées sont invalides.</mark>

### estimate\_texture\_class\_based\_on\_fao\_wrb

```python
fao_wrb_texture = geopard.estimate_texture_class_based_on_fao_wrb(
    sand_pct_layer,
    silt_pct_layer,
    clay_pct_layer
)
```

Cette fonction estime la classe de texture du sol FAO/WRB (ISO 11277) pour chaque pixel sur la base des pourcentages de sable, de limon et d’argile.

Fournissez trois couches raster en pourcentage (0-100) représentant les fractions granulométriques. Le résultat est <mark style="background-color:green;">des codes de classe FAO/WRB tels que</mark> *<mark style="background-color:green;">S, LS, SL, L, SiL, Si, SCL, CL, SiCL, SC, SiC, C, HC, ou undefined</mark>* <mark style="background-color:green;">lorsque les entrées sont invalides</mark>.

### calculate\_soil\_bulk\_density

```python
bulk_density = geopard.calculate_soil_bulk_density(texture_class_layer, som_pct_layer)
```

Cette fonction calcule <mark style="background-color:green;">la densité apparente du sol (g/cm³) en fonction de la classe de texture et de la matière organique du sol (SOM) optionnelle</mark>.

Le `texture_class_layer` doit contenir des noms ou des codes de classe produits par la [fonction de texture USDA](#estimate_texture_class_based_on_usda) ou la [fonction de texture FAO/WRB](#estimate_texture_class_based_on_fao_wrb) mentionnée ci-dessus.

Si `som_pct_layer` est fourni sous forme de pourcentage, la fonction ajuste la densité apparente à l’aide du SOM. Sinon, elle renvoie des valeurs de densité apparente du sol en g/cm³ associées aux classes de texture selon la recherche USDA ou FAO/WRB.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.geopard.tech/geopard-tutorials/fr/visite-du-produit-application-web/analyses-basees-sur-des-equations/catalogue-de-fonctions-personnalisees.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
