# Catálogo de funciones personalizadas

GeoPard ofrece un catálogo integral de funciones personalizadas diseñadas para mejorar la legibilidad y la funcionalidad de los análisis basados en ecuaciones. Estas funciones encapsulan complejos `python` código, lo que le permite implementar con facilidad manipulaciones y cálculos de datos sofisticados.

### Ingresar ecuación

<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>Ingrese una ecuación</p></figcaption></figure>

La lista de funciones preconstruidas disponibles para crear ecuaciones más intuitivas y fáciles de mantener en GeoPard se incluye en el `geopard` paquete:

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

```python
# input_data es una capa de atributos de un Dataset (por ejemplo, Rendimiento, NDVI)
filled_layer = geopard.fill_gaps_with_k_neighbors(yield_layer, k=5)
```

Esta función restaura huecos de datos o ceros en un conjunto de datos usando el algoritmo K-Neighbors. Al especificar la `input_data` variable (como Dataset con el atributo seleccionado) y el número de vecinos `k`, puede completar sin problemas los valores faltantes, garantizando la continuidad e integridad de los datos.

Esta función funciona bien cuando los huecos de datos están distribuidos por toda la parcela y no se concentran en ninguna parte particular del límite del campo.

### determine\_data\_similarity

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

Use esta función para calcular la similitud píxel a píxel entre dos Datasets. Las variables `data_layer_1` y `data_layer_2` deben representar la **misma medición** en las **mismas unidades** para asegurar una comparación significativa. Al proporcionar variables `data_layer_1` y `data_layer_2` asociadas con Datasets, puede generar un mapa de similitud con valores que van de 0 a 1, facilitando estudios comparativos y el reconocimiento de patrones.

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

Use esta función para calcular la similitud píxel a píxel entre dos conjuntos de datos normalizados. Se recomienda la normalización cuando los originales `data_layer_1` y `data_layer_2` tienen diferentes escalas o unidades. Al proporcionar estos conjuntos de datos como entrada, la función genera un mapa de similitud con valores que van de 0 a 1, lo que la hace adecuada para estudios comparativos, reconocimiento de patrones y análisis de consistencia espacial.

### determine\_low\_high\_similarity

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

Esta función evalúa la similitud bajo-alto entre dos Datasets. Al introducir variables `data_layer_1` y `data_layer_2` asociadas con Datasets, obtiene un mapa de similitud categorizado que indica combinaciones como bajo-bajo, bajo-alto, alto-bajo y alto-alto, lo cual es útil para una clasificación de datos más matizada.

### get\_value\_for\_zone

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

Use esta función para extraer todos los valores de un atributo de Dataset dentro de una sola zona. Proporcione `data_layer` (la capa de atributos), `zones_layer` (el mapa de zonas), y `zone_id` (el número de zona) para aislar valores para análisis, como rendimiento, dosis de aplicación o dosis de siembra, dentro de esa zona.

### drop\_value

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

Esta función le permite eliminar valores específicos de un atributo de conjunto de datos. Al especificar `data_layer` y `value_to_drop`, puede limpiar el conjunto de datos eliminando esos valores del resultado, reemplazándolos técnicamente por `NaN`.

### normalize\_data

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

Normalice un atributo de conjunto de datos con esta función. Al pasar `data_layer`, puede escalar los datos a un rango estandarizado de 0 a 1, facilitando la comparación y la integración entre distintos conjuntos de datos.

### calculate\_total\_applied\_fertilizer

```python
applications = [urea_rate, map_rate]
coefficients = [1.0, 1.0]  # use 1.0 para conservar las unidades, o ajústelo según la concentración del producto

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

Calcule el fertilizante total aplicado en unidades por superficie (por ejemplo, en kg/ha, l/ha, gal/ac, etc.). Al proporcionar `application_list` Datasets con atributos AppliedRate y un correspondiente `active_ingredient_coefficient_list` con productos fertilizantes para obtener el fertilizante total realmente aplicado en unidades (por ejemplo, en kg, l, gal, etc.).

### calculate\_total\_applied\_nitrogen

```python
applications = [urea_rate, uan_rate]
nitrogen_coefficients = [0.46, 0.32]  # fracción de N (ingrediente activo) en cada producto

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

Calcule el nitrógeno total aplicado en kg/ha usando esta función. Al proporcionar `application_list` Datasets con atributos AppliedRate y un correspondiente `active_ingredient_coefficient_list` con productos nitrogenados para convertir el nitrógeno real a kg/ha, puede calcular con precisión el Nitrógeno Total Aplicado, esencial para la planificación agronómica y las evaluaciones de sostenibilidad. El resultado se usa como `N_total_applied` en[`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
)
```

Determine la absorción de nitrógeno en kg/ha con esta función. Al suministrar `yield_wet_tha`, `moisture_pct`, `protein_pct` del Dataset de Rendimiento y `protein_crop_correction_coefficient` que representa la relación de la proteína con la absorción de nitrógeno, puede evaluar la Eficiencia de Uso del Nitrógeno en la producción de cultivos. El resultado se usa como `N_uptake` en[`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)
```

Evalúe la Eficiencia de Uso del Nitrógeno como porcentaje usando esta función. Al introducir [`N_total_applied`](#calculate_total_applied_nitrogen) y [`N_uptake`](#calculate_nitrogen_uptake) variables (de funciones anteriores), puede medir la eficacia de la aplicación de nitrógeno, ayudando a optimizar el uso de fertilizantes.

### calculate\_costs

```python
rates = [seed_rate, fertilizer_rate]
prices = [1.2, 0.8]  # precio por unidad para cada capa de tasa
costs = geopard.calculate_costs(rates, prices)
```

Calcule los costos totales en función de las dosis de aplicación y los precios con esta función. Al proporcionar una `application_rate_list` de Datasets con atributos AppliedRate y una correspondiente `price_per_unit_list`, puede agregar los gastos relacionados con diversas actividades agrícolas, apoyando la gestión del presupuesto y la planificación financiera. El resultado se usa como `costs` en[`geopard.calculate_profit`](#calculate_profit).

### calculate\_revenue

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

Calcule los ingresos a partir del Dataset de Rendimiento usando esta función. Al introducir `yield_as_mass` asociado con el atributo del Dataset de Rendimiento y el `yield_price_per_unit`, puede estimar los ingresos generados por la producción de cultivos, facilitando las evaluaciones económicas. El resultado se usa como `costs` en[`geopard.calculate_profit`](#calculate_profit) .

### calculate\_profit

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

Determine la ganancia restando los costos de los ingresos usando esta función. Al proporcionar las [`revenue`](#calculate_revenue) y [`costs`](#calculate_costs) variables (de funciones anteriores), puede calcular fácilmente el beneficio financiero de sus operaciones agrícolas, apoyando el análisis de rentabilidad y la toma de decisiones estratégicas.

### fill\_value\_for\_range

```python
# conservar solo los valores entre 10 y 20, reemplazar el resto con 0
filtered = geopard.fill_value_for_range(layer, min_value=10, max_value=20, value_to_fill=0)
```

Esta función filtra valores dentro de un rango especificado en el `input` array. Al proporcionar el `input` array, junto con el opcional `min_value` y el opcional `max_value` de límites, puede aislar los valores que caen dentro del rango deseado. El `value_to_fill` parámetro permite reemplazar valores fuera de rango con un valor especificado, mejorando los procesos de filtrado y normalización de datos.

### calculate\_per\_pixel\_mae

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

Use esta función para calcular el Error Medio Absoluto (MAE) por píxel entre dos conjuntos de datos. Proporciona un mapa espacial de diferencias absolutas. La "diferencia absoluta" es simplemente el tamaño de la brecha entre los valores de píxel correspondientes, ignorando si uno es mayor o menor.

La función ayuda a identificar áreas con mayores discrepancias.

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

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

Esta función calcula la desviación relativa de cada píxel entre dos conjuntos de datos, expresando la diferencia como un porcentaje del valor en `dataset_1`. Esencialmente, muestra cuánto se desvía el valor de un píxel del valor correspondiente en `dataset_1` en términos proporcionales.

Este enfoque es particularmente valioso al analizar variaciones en propiedades del suelo, rendimiento de cultivos o datos de teledetección, porque ayuda a detectar rápidamente áreas con diferencias proporcionales significativas.

### calculate\_difference

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

Esta función resta un conjunto de datos de otro para crear un mapa de diferencias. Resalta las áreas donde los valores de un conjunto de datos son más altos o más bajos en comparación con el otro, facilitando la detección de tendencias y cambios a lo largo del tiempo.

Esta herramienta es especialmente útil para visualizar variaciones en propiedades del suelo, rendimiento de cultivos o datos de teledetección, ayudándole a identificar rápidamente áreas que pueden requerir análisis o intervención adicional.

### calculate\_relative\_difference

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

Esta función calcula la diferencia relativa de cada píxel normalizando la diferencia entre los conjuntos de datos usando los valores de `dataset_2`. Esto significa que muestra cuán significativo es el cambio en relación con la magnitud de `dataset_2`.

Esta comparación proporcional es especialmente útil cuando se trabaja con conjuntos de datos de diferentes escalas, ya que ayuda a revelar cambios relativos en propiedades del suelo, rendimientos de cultivos o salidas de sensores. Este enfoque ayuda a identificar áreas con variación notable.

### calculate\_normalized\_difference

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

Esta función calcula la diferencia normalizada de cada píxel escalando ambos conjuntos de datos en función de su valor máximo global. Este proceso hace que los conjuntos de datos sean directamente comparables incluso si originalmente tienen rangos diferentes.

El mapa resultante proporciona una vista clara de las variaciones en las propiedades del suelo, el rendimiento de cultivos y los datos de teledetección, permitiéndole identificar y evaluar rápidamente las diferencias clave.

### build\_zones\_by\_intervals

```python
# intervalos para zonificación
intervals = [
    (4, 8),
    (8, 12),
    (12, 16)
]

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

Esta función crea un mapa de zonas de manejo clasificando una capa ráster continua en zonas discretas basadas en intervalos de valores definidos por el usuario.

Cada intervalo define una zona, y cada píxel se asigna a la zona cuyo rango de valores le corresponde. Los píxeles que no coinciden con ningún intervalo se marcan como -1.

Este enfoque de zonificación se utiliza comúnmente para transformar mapas de rendimiento, propiedades del suelo o índices de teledetección en zonas de manejo accionables para aplicaciones de dosis variable.

**Casos de uso típicos**

* Crear zonas de manejo a partir de capas de rendimiento, NDVI o suelo
* Preparar mapas de zonas para cálculos de dosis de nutrientes o de siembra
* Segmentar parcelas en zonas homogéneas para la toma de decisiones

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

```python
# opciones de target_nutrient
target_nutrient_option1 = 50 # número constante
# O
target_nutrient_option2 = {1: 20, 2: 40} # diccionario por zona
# O
target_nutrient_option3 = np.array([[1, 1], [2, 3]], dtype=float) # capa ráster continua

# opciones de applied_nutrient_operations
applied_operations = [
    5,                                      # operación1 como número constante
    {1: 2, 2: 4},                           # operación2 como diccionario por zona
    np.array([[1, 1], [2, 3]], dtype=float) # operación3 como capa ráster continua
]

# uso
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 # o []
)
```

Esta función calcula la dosis de aplicación de nutrientes requerida (ingrediente activo) para cada zona de manejo.

El cálculo se basa en:

* un nivel objetivo de nutriente,
* la provisión de nutriente disponible para la planta procedente del suelo,
* los nutrientes ya aplicados mediante operaciones anteriores (estiércol, fertilizantes, digestato, etc.).

Las operaciones de nutrientes aplicadas pueden proporcionarse como constantes, valores por zona, capas ráster o cualquier combinación de estas. Todas las entradas se resuelven y agregan automáticamente por zona.

De forma predeterminada, la dosis requerida se calcula como la diferencia entre el nivel objetivo de nutriente y la suma de la provisión del suelo y los nutrientes aplicados. El resultado se devuelve como un mapa ráster en el que cada zona contiene una dosis uniforme de nutriente.

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

```python
# coeficiente de conversión de ingrediente_activo a producto y viceversa
corrected_coefficient = 1.5  # coeficiente constante
# O
corrected_coefficient = np.array([[np.nan, 5], [np.nan, 1]], dtype=float)  # coeficientes por píxel

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

Esta función convierte una capa ráster entre **las dosis de ingrediente activo y las dosis de producto** usando un coeficiente de corrección.

El `corrected_coefficient` puede ser un único **float** (aplicado a todos los píxeles) o una **matriz** de coeficientes (conversión píxel a píxel). Se usa normalmente para traducir los requerimientos de nutrientes calculados (ingrediente activo) en dosis reales de aplicación de producto, o viceversa, según la composición del fertilizante o la concentración de nutrientes.&#x20;

La conversión se aplica píxel a píxel, preservando la estructura espacial de la capa original.

**Casos de uso típicos**

* Convertir dosis de nutrientes a dosis de producto fertilizante
* Ajustar mapas de aplicación según la concentración de nutrientes
* Preparar mapas de prescripción finales para la maquinaria

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

Esta función estima la textura del suelo según el USDA para cada píxel usando los porcentajes de arena, limo y arcilla.

Proporcione tres capas ráster en porcentaje (0-100) que representen las fracciones de tamaño de partícula. El resultado es <mark style="background-color:green;">nombres de clase USDA como</mark> *<mark style="background-color:green;">sand, loamy\_sand, sandy\_loam, loam, silt\_loam, sandy\_clay\_loam, clay\_loam, silty\_clay\_loam, silty\_clay, o undefined</mark>* <mark style="background-color:green;">cuando las entradas no son válidas.</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
)
```

Esta función estima la clase textural del suelo FAO/WRB (ISO 11277) para cada píxel en función de los porcentajes de arena, limo y arcilla.

Proporcione tres capas ráster en porcentaje (0-100) que representen las fracciones de tamaño de partícula. El resultado es <mark style="background-color:green;">códigos de clase FAO/WRB como</mark> *<mark style="background-color:green;">S, LS, SL, L, SiL, Si, SCL, CL, SiCL, SC, SiC, C, HC, o undefined</mark>* <mark style="background-color:green;">cuando las entradas no son válidas</mark>.

### calculate\_soil\_bulk\_density

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

Esta función calcula <mark style="background-color:green;">la densidad aparente del suelo (g/cm³) en función de la clase textural y de la materia orgánica del suelo (MOS) opcional</mark>.

El `texture_class_layer` debe contener nombres o códigos de clase producidos por la [función de textura USDA](#estimate_texture_class_based_on_usda) o la [función de textura FAO/WRB](#estimate_texture_class_based_on_fao_wrb) mencionada arriba.

Si `som_pct_layer` se proporciona como un valor porcentual, la función ajusta la densidad aparente usando la MOS. De lo contrario, devuelve valores de densidad aparente del suelo en g/cm³ asociados con clases texturales según la búsqueda 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/esp/tour-del-producto-aplicacion-web/analiticas-basadas-en-ecuaciones/catalogo-de-funciones-personalizadas.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.
