# Catalogo di funzioni personalizzate

GeoPard offre un catalogo completo di funzioni personalizzate progettate per migliorare la leggibilità e la funzionalità delle analisi basate su equazioni. Queste funzioni racchiudono complesse `python` codice, consentendoti di implementare con facilità manipolazioni e calcoli dei dati sofisticati.

### Inserisci equazione

<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>Inserisci un’equazione</p></figcaption></figure>

L’elenco delle funzioni predefinite disponibili per creare equazioni più intuitive e manutenibili in GeoPard è incluso nel `geopard` pacchetto:

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

```python
# input_data è un attributo Dataset (ad es. resa, NDVI)
filled_layer = geopard.fill_gaps_with_k_neighbors(yield_layer, k=5)
```

Questa funzione ripristina le lacune nei dati o gli zeri in un dataset usando l’algoritmo K-Neighbors. Specificando la `input_data` variabile (come Dataset con l’attributo selezionato) e il numero di vicini `k`, puoi riempire senza problemi i valori mancanti, garantendo continuità e integrità dei dati.

Questa funzione funziona bene quando le lacune dei dati sono distribuite in tutto il campo e non sono allocate a una parte particolare del confine del campo.

### determine\_data\_similarity

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

Usa questa funzione per calcolare la similarità pixel per pixel tra due Dataset. Le variabili `data_layer_1` e `data_layer_2` dovrebbero rappresentare la **stessa misurazione** nelle **stesse unità** per garantire un confronto significativo. Fornendo variabili `data_layer_1` e `data_layer_2` associate ai Dataset, puoi generare una mappa di similarità con valori da 0 a 1, facilitando studi comparativi e il riconoscimento di pattern.

### 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)
```

Usa questa funzione per calcolare la similarità pixel per pixel tra due dataset normalizzati. La normalizzazione è consigliata quando gli originali `data_layer_1` e `data_layer_2` hanno scale o unità diverse. Fornendo questi dataset come input, la funzione genera una mappa di similarità con valori da 0 a 1, rendendola adatta a studi comparativi, riconoscimento di pattern e analisi della coerenza spaziale.

### determine\_low\_high\_similarity

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

Questa funzione valuta la similarità basso-alto tra due Dataset. Inserendo variabili `data_layer_1` e `data_layer_2` associate ai Dataset, ottieni una mappa di similarità categorizzata che indica combinazioni come basso-basso, basso-alto, alto-basso e alto-alto, utile per una classificazione più sfumata dei dati.

### get\_value\_for\_zone

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

Usa questa funzione per estrarre tutti i valori di un attributo Dataset all’interno di una singola zona. Fornisci `data_layer` (il livello attributo), `zones_layer` (la mappa delle zone) e `zone_id` (il numero della zona) per isolare i valori per l’analisi, come resa, dose di distribuzione o dose di semina, all’interno di quella zona.

### drop\_value

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

Questa funzione consente di rimuovere valori specifici da un attributo del dataset. Specificando `data_layer` e `value_to_drop`, puoi pulire il dataset eliminando quei valori dal risultato, sostituendoli tecnicamente con `NaN`.

### normalize\_data

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

Normalizza un attributo del dataset con questa funzione. Passando `data_layer`puoi scalare i dati in un intervallo standardizzato da 0 a 1, rendendo più facile il confronto e l’integrazione tra dataset diversi.

### calculate\_total\_applied\_fertilizer

```python
applications = [urea_rate, map_rate]
coefficients = [1.0, 1.0]  # usa 1.0 per mantenere le unità, oppure regola in base alla concentrazione del prodotto

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

Calcola il Fertilizzante Totale Applicato in unità per area (ad esempio, in kg/ha, l/ha, gal/ac, ecc.). Fornendo `application_list` Dataset con attributi AppliedRate e un corrispondente `active_ingredient_coefficient_list` con i prodotti fertilizzanti ottieni il fertilizzante totale effettivamente applicato in unità (ad esempio, in kg, l, gal, ecc.).

### calculate\_total\_applied\_nitrogen

```python
applications = [urea_rate, uan_rate]
nitrogen_coefficients = [0.46, 0.32]  # frazione di N (principio attivo) in ciascun prodotto

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

Calcola l’Azoto Totale Applicato in kg/ha usando questa funzione. Fornendo `application_list` Dataset con attributi AppliedRate e un corrispondente `active_ingredient_coefficient_list` con prodotti azotati per convertire l’azoto effettivo in kg/ha, puoi calcolare con precisione l’Azoto Totale Applicato, essenziale per la pianificazione agricola e le valutazioni di sostenibilità. L’output viene usato come `N_total_applied` in[`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
)
```

Determina l’Assorbimento di Azoto in kg/ha con questa funzione. Fornendo `yield_wet_tha`, `moisture_pct`, `protein_pct` dal Dataset Yield e `protein_crop_correction_coefficient` che rappresenta il legame tra proteine e assorbimento di azoto, puoi valutare l’Efficienza d’Uso dell’Azoto nella produzione colturale. L’output viene usato come `N_uptake` in[`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)
```

Valuta l’Efficienza d’Uso dell’Azoto come percentuale usando questa funzione. Inserendo [`N_total_applied`](#calculate_total_applied_nitrogen) e [`N_uptake`](#calculate_nitrogen_uptake) variabili (dalle funzioni precedenti), puoi misurare l’efficacia dell’applicazione di azoto, aiutando a ottimizzare l’uso dei fertilizzanti.

### calculate\_costs

```python
rates = [seed_rate, fertilizer_rate]
prices = [1.2, 0.8]  # prezzo per unità per ciascun livello di dose
costs = geopard.calculate_costs(rates, prices)
```

Calcola i Costi Totali in base alle dosi di distribuzione e ai prezzi con questa funzione. Fornendo una `application_rate_list` di Dataset con gli attributi AppliedRate e un corrispondente `price_per_unit_list`, puoi aggregare le spese relative a varie attività agricole, supportando la gestione del budget e la pianificazione finanziaria. L’output viene usato come `costs` in[`geopard.calculate_profit`](#calculate_profit).

### calculate\_revenue

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

Calcola il Ricavo dal Dataset Yield usando questa funzione. Inserendo `yield_as_mass` associato all’attributo del Dataset Yield e il `yield_price_per_unit`, puoi stimare il reddito generato dalla produzione agricola, facilitando le valutazioni economiche. L’output viene usato come `costs` in[`geopard.calculate_profit`](#calculate_profit) .

### calculate\_profit

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

Determina il Profitto sottraendo i Costi dal Ricavo usando questa funzione. Fornendo le [`revenue`](#calculate_revenue) e [`costs`](#calculate_costs) variabili (dalle funzioni precedenti), puoi calcolare facilmente il guadagno finanziario delle loro operazioni agricole, supportando l’analisi della redditività e il processo decisionale strategico.

### fill\_value\_for\_range

```python
# mantieni solo i valori tra 10 e 20, sostituisci il resto con 0
filtered = geopard.fill_value_for_range(layer, min_value=10, max_value=20, value_to_fill=0)
```

Questa funzione filtra i valori entro un intervallo specificato nell’ `input` array. Fornendo l’ `input` array, insieme all’opzionale `min_value` e al facoltativo `max_value` threshold, puoi isolare i valori che rientrano nell’intervallo desiderato. Il parametro `value_to_fill` consente di sostituire i valori fuori intervallo con un valore specificato, migliorando i processi di filtraggio e normalizzazione dei dati.

### calculate\_per\_pixel\_mae

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

Usa questa funzione per calcolare l’errore assoluto medio (MAE) per pixel tra due dataset. Fornisce una mappa spaziale delle differenze assolute. La “differenza assoluta” è semplicemente la dimensione del divario tra i valori dei pixel corrispondenti, ignorando se uno è maggiore o minore.

La funzione aiuta a identificare le aree con scostamenti maggiori.

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

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

Questa funzione calcola la deviazione relativa per ciascun pixel tra due dataset, esprimendo la differenza come percentuale del valore in `dataset_1`. In sostanza, mostra di quanto il valore di un pixel si discosta dal valore corrispondente in `dataset_1` in termini proporzionali.

Questo approccio è particolarmente prezioso quando si analizzano variazioni nelle proprietà del suolo, nella resa colturale o nei dati di telerilevamento, perché aiuta a individuare rapidamente le aree con differenze proporzionali significative.

### calculate\_difference

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

Questa funzione sottrae un dataset da un altro per creare una mappa delle differenze. Evidenzia le aree in cui i valori di un dataset sono più alti o più bassi rispetto all’altro, facilitando l’individuazione di tendenze e cambiamenti nel tempo.

Questo strumento è particolarmente utile per visualizzare le variazioni nelle proprietà del suolo, nella resa colturale o nei dati di telerilevamento, aiutandoti a identificare rapidamente le aree che possono richiedere ulteriori analisi o interventi.

### calculate\_relative\_difference

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

Questa funzione calcola la differenza relativa per ciascun pixel normalizzando la differenza tra i dataset usando i valori di `dataset_2`. Ciò significa che mostra quanto è significativo il cambiamento in relazione alla magnitudine di `dataset_2`.

Un confronto proporzionale di questo tipo è particolarmente utile quando si lavora con dataset di scale diverse, aiutando a mettere in evidenza spostamenti relativi nelle proprietà del suolo, nelle rese colturali o negli output dei sensori. Questo approccio aiuta a individuare le aree con variazioni notevoli.

### calculate\_normalized\_difference

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

Questa funzione calcola la differenza normalizzata per ciascun pixel scalando entrambi i dataset rispetto al loro valore massimo globale. Questo processo rende i dataset direttamente confrontabili anche se originariamente hanno intervalli diversi.

La mappa risultante offre una visione chiara delle variazioni nelle proprietà del suolo, nella resa colturale e nei dati di telerilevamento, consentendoti di identificare e valutare rapidamente le differenze chiave.

### build\_zones\_by\_intervals

```python
# intervalli per la zonizzazione
intervals = [
    (4, 8),
    (8, 12),
    (12, 16)
]

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

Questa funzione crea una mappa di zone di gestione classificando un livello raster continuo in zone discrete in base a intervalli di valori definiti dall’utente.

Ogni intervallo definisce una zona, e ogni pixel viene assegnato alla zona in cui ricade il suo intervallo di valori. I pixel che non corrispondono a nessun intervallo vengono contrassegnati come -1.

Questo approccio di zonizzazione è comunemente usato per trasformare mappe di resa, proprietà del suolo o indici di telerilevamento in zone di gestione operative per applicazioni a dose variabile.

**Casi d’uso tipici**

* Creare zone di gestione da livelli di resa, NDVI o suolo
* Preparare mappe di zona per calcoli di nutrienti o dosi di semina
* Suddividere i campi in zone omogenee per il processo decisionale

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

```python
# opzioni per nutrient_target
target_nutrient_option1 = 50 # numero costante
# OPPURE
target_nutrient_option2 = {1: 20, 2: 40} # dizionario per zona
# OPPURE
target_nutrient_option3 = np.array([[1, 1], [2, 3]], dtype=float) # livello raster continuo

# opzioni per applied_nutrient_operations
applied_operations = [
    5,                                      # operazione1 come numero costante
    {1: 2, 2: 4},                           # operazione2 come dizionario per zona
    np.array([[1, 1], [2, 3]], dtype=float) # operazione3 come livello raster continuo
]

# utilizzo
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 # oppure []
)
```

Questa funzione calcola il tasso di applicazione dei nutrienti richiesto (principio attivo) per ciascuna zona di gestione.

Il calcolo si basa su:

* un livello target di nutrienti,
* fornitura di nutrienti disponibili per la pianta dal suolo,
* nutrienti già applicati tramite operazioni precedenti (letame, fertilizzanti, digestato, ecc.).

Le operazioni di nutrienti applicati possono essere fornite come costanti, valori per zona, livelli raster o qualsiasi combinazione di questi. Tutti gli input vengono risolti automaticamente e aggregati per zona.

Per impostazione predefinita, il tasso richiesto viene calcolato come differenza tra il livello target di nutrienti e la somma della disponibilità del suolo e dei nutrienti applicati. Il risultato viene restituito come mappa raster in cui ciascuna zona contiene un tasso uniforme di nutrienti.

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

```python
# coefficiente di conversione da principio attivo a prodotto e viceversa
corrected_coefficient = 1.5  # coefficiente costante
# OPPURE
corrected_coefficient = np.array([[np.nan, 5], [np.nan, 1]], dtype=float)  # coefficienti per pixel

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

Questa funzione converte un livello raster tra **dosi di principio attivo e dosi di prodotto** usando un coefficiente di correzione.

Il `corrected_coefficient` può essere un singolo **float** (applicato a tutti i pixel) oppure una **matrice** di coefficienti (conversione per pixel). Viene in genere usata per tradurre i fabbisogni nutritivi calcolati (principio attivo) nelle effettive dosi di applicazione del prodotto, o viceversa, in base alla composizione del fertilizzante o alla concentrazione del nutriente.

La conversione viene applicata pixel per pixel, preservando la struttura spaziale del livello originale.

**Casi d’uso tipici**

* Convertire le dosi di nutrienti in dosi di prodotto fertilizzante
* Regolare le mappe di distribuzione in base alla concentrazione dei nutrienti
* Preparare le mappe di prescrizione finali per i macchinari

### 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
)
```

Questa funzione stima la tessitura del suolo USDA per ciascun pixel usando le percentuali di sabbia, limo e argilla.

Fornisci tre livelli raster in percentuale (0-100) che rappresentano le frazioni granulometriche. L’output è <mark style="background-color:green;">nomi di classi USDA come</mark> *<mark style="background-color:green;">sand, loamy\_sand, sandy\_loam, loam, silt\_loam, sandy\_clay\_loam, clay\_loam, silty\_clay\_loam, silty\_clay, oppure undefined</mark>* <mark style="background-color:green;">quando gli input non sono validi.</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
)
```

Questa funzione stima la classe tessiturale del suolo FAO/WRB (ISO 11277) per ciascun pixel in base alle percentuali di sabbia, limo e argilla.

Fornisci tre livelli raster in percentuale (0-100) che rappresentano le frazioni granulometriche. L’output è <mark style="background-color:green;">codici di classe FAO/WRB come</mark> *<mark style="background-color:green;">S, LS, SL, L, SiL, Si, SCL, CL, SiCL, SC, SiC, C, HC, oppure undefined</mark>* <mark style="background-color:green;">quando gli input non sono validi</mark>.

### calculate\_soil\_bulk\_density

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

Questa funzione calcola <mark style="background-color:green;">la densità apparente del suolo (g/cm³) in base alla classe tessiturale e, facoltativamente, alla sostanza organica del suolo (SOM)</mark>.

Il `texture_class_layer` dovrebbe contenere nomi o codici di classe prodotti dalla [funzione di tessitura USDA](#estimate_texture_class_based_on_usda) o dalla [funzione di tessitura FAO/WRB](#estimate_texture_class_based_on_fao_wrb) menzionata sopra.

Se `som_pct_layer` è fornito come valore percentuale, la funzione adatta la densità apparente usando la SOM. Altrimenti, restituisce valori di densità apparente del suolo in g/cm³ associati alle classi tessiturali secondo la lookup USDA o 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/it/tour-del-prodotto-app-web/analisi-basate-su-equazioni/catalogo-di-funzioni-personalizzate.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.
