# Catálogo de Funções Personalizadas

A GeoPard oferece um catálogo abrangente de funções personalizadas projetadas para melhorar a legibilidade e a funcionalidade de análises baseadas em equações. Essas funções encapsulam complexos `python` código, permitindo implementar manipulações e cálculos sofisticados de dados com facilidade.

### Inserir Equação

<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>Insira uma Equação</p></figcaption></figure>

A lista de funções pré-construídas disponíveis para criar equações mais intuitivas e fáceis de manter no GeoPard está incluída no `geopard` pacote:

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

```python
# input_data é uma camada de atributo de Dataset (por exemplo, Yield, NDVI)
filled_layer = geopard.fill_gaps_with_k_neighbors(yield_layer, k=5)
```

Esta função restaura lacunas de dados ou zeros em um dataset usando o algoritmo K-Neighbors. Ao especificar a variável `input_data` (como Dataset com o atributo selecionado) e o número de vizinhos `k`, você pode preencher valores ausentes sem esforço, garantindo continuidade e integridade dos dados.

Esta função funciona bem quando as lacunas de dados estão distribuídas pela área e não concentradas em nenhuma parte específica da borda do campo.

### determine\_data\_similarity

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

Use esta função para calcular a similaridade por pixel entre dois Datasets. As variáveis `data_layer_1` e `data_layer_2` devem representar a **mesma medida** nas **mesmas unidades** para garantir uma comparação significativa. Ao fornecer variáveis `data_layer_1` e `data_layer_2` associadas a Datasets, você pode gerar um mapa de similaridade com valores de 0 a 1, facilitando estudos comparativos e o reconhecimento de padrões.

### 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 função para calcular a similaridade por pixel entre dois datasets normalizados. A normalização é recomendada quando os originais `data_layer_1` e `data_layer_2` têm escalas ou unidades diferentes. Ao fornecer esses datasets como entrada, a função gera um mapa de similaridade com valores de 0 a 1, tornando-o adequado para estudos comparativos, reconhecimento de padrões e análise de consistência espacial.

### determine\_low\_high\_similarity

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

Esta função avalia a similaridade baixo-alto entre dois Datasets. Ao inserir variáveis `data_layer_1` e `data_layer_2` associadas a Datasets, você recebe um mapa de similaridade categorizado indicando combinações como baixo-baixo, baixo-alto, alto-baixo e alto-alto, o que é útil para uma classificação de dados mais refinada.

### get\_value\_for\_zone

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

Use esta função para extrair todos os valores de um atributo de Dataset dentro de uma única zona. Forneça `data_layer` (a camada de atributo), `zones_layer` (o mapa de zonas), e `zone_id` (o número da zona) para isolar valores para análise, como produtividade, taxa de aplicação ou taxa de sementes, dentro dessa zona.

### drop\_value

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

Esta função permite remover valores específicos de um atributo de dataset. Ao especificar `data_layer` e `value_to_drop`, você pode limpar o dataset eliminando esses valores do resultado, tecnicamente substituindo-os por `NaN`.

### normalize\_data

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

Normalize um atributo de dataset com esta função. Ao passar `data_layer`, você pode escalonar os dados para uma faixa padronizada de 0 a 1, facilitando a comparação e a integração entre diferentes datasets.

### calculate\_total\_applied\_fertilizer

```python
applications = [urea_rate, map_rate]
coefficients = [1.0, 1.0]  # use 1.0 para manter as unidades, ou ajuste conforme a concentração do produto

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

Calcule o Fertilizante Total Aplicado em unidades por área (por exemplo, em kg/ha, l/ha, gal/ac, etc). Ao fornecer `application_list` Datasets com atributos AppliedRate e correspondentes `active_ingredient_coefficient_list` com produtos fertilizantes para obter o fertilizante total realmente aplicado em unidades (por exemplo, em kg, l, gal, etc).

### calculate\_total\_applied\_nitrogen

```python
applications = [urea_rate, uan_rate]
nitrogen_coefficients = [0.46, 0.32]  # fração de N (ingrediente ativo) em cada produto

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

Calcule o Nitrogênio Total Aplicado em kg/ha usando esta função. Ao fornecer `application_list` Datasets com atributos AppliedRate e correspondentes `active_ingredient_coefficient_list` com produtos nitrogenados para converter o nitrogênio real para kg/ha, você pode calcular com precisão o Nitrogênio Total Aplicado, essencial para o planejamento agrícola e avaliações de sustentabilidade. A saída é usada como `N_total_applied` em[`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 a Absorção de Nitrogênio em kg/ha com esta função. Ao fornecer `yield_wet_tha`, `moisture_pct`, `protein_pct` do Dataset de Yield e `protein_crop_correction_coefficient` representando a ligação da proteína com a absorção de nitrogênio, você pode avaliar a Eficiência do Uso de Nitrogênio na produção agrícola. A saída é usada como `N_uptake` em[`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)
```

Avalie a Eficiência do Uso de Nitrogênio como porcentagem usando esta função. Ao inserir [`N_total_applied`](#calculate_total_applied_nitrogen) e [`N_uptake`](#calculate_nitrogen_uptake) variáveis (das funções anteriores), você pode medir a eficácia da aplicação de nitrogênio, ajudando a otimizar o uso de fertilizantes.

### calculate\_costs

```python
rates = [seed_rate, fertilizer_rate]
prices = [1.2, 0.8]  # preço por unidade para cada camada de taxa
costs = geopard.calculate_costs(rates, prices)
```

Calcule os Custos Totais com base nas taxas de aplicação e nos preços usando esta função. Ao fornecer uma `application_rate_list` de Datasets com os atributos AppliedRate e uma correspondente `price_per_unit_list`, você pode agregar despesas relacionadas a várias atividades agrícolas, apoiando o gerenciamento de orçamento e o planejamento financeiro. A saída é usada como `costs` em[`geopard.calculate_profit`](#calculate_profit).

### calculate\_revenue

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

Calcule a Receita a partir do Dataset de Yield usando esta função. Ao inserir `yield_as_mass` associado ao atributo do Dataset de Yield e o `yield_price_per_unit`, você pode estimar a receita gerada pela produção agrícola, facilitando avaliações econômicas. A saída é usada como `costs` em[`geopard.calculate_profit`](#calculate_profit) .

### calculate\_profit

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

Determine o Lucro subtraindo os Custos da Receita usando esta função. Ao fornecer as [`revenue`](#calculate_revenue) e [`costs`](#calculate_costs) variáveis (das funções anteriores), você pode calcular facilmente o ganho financeiro das operações agrícolas, apoiando a análise de rentabilidade e a tomada de decisão estratégica.

### fill\_value\_for\_range

```python
# mantenha apenas valores entre 10 e 20, substitua o restante por 0
filtered = geopard.fill_value_for_range(layer, min_value=10, max_value=20, value_to_fill=0)
```

Esta função filtra valores dentro de um intervalo especificado no `input` array. Ao fornecer o `input` array, juntamente com os opcionais `min_value` e o opcional `max_value` limites, você pode isolar valores que se enquadram no intervalo desejado. O parâmetro `value_to_fill` permite substituir valores fora do intervalo por um valor especificado, aprimorando os processos de filtragem e normalização de dados.

### calculate\_per\_pixel\_mae

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

Use esta função para calcular o Erro Médio Absoluto (MAE) por pixel entre dois datasets. Ela fornece um mapa espacial das diferenças absolutas. A "diferença absoluta" é simplesmente o tamanho da lacuna entre valores de pixel correspondentes, ignorando se um é maior ou menor.

A função ajuda a identificar áreas com discrepâncias maiores.

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

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

Esta função calcula o desvio relativo para cada pixel entre dois datasets, expressando a diferença como uma porcentagem do valor em `dataset_1`. Essencialmente, ela mostra quanto o valor de um pixel se desvia do valor correspondente em `dataset_1` em termos proporcionais.

Essa abordagem é particularmente valiosa ao analisar variações em propriedades do solo, produtividade de culturas ou dados de sensoriamento remoto, porque ajuda você a identificar rapidamente áreas com diferenças proporcionais significativas.

### calculate\_difference

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

Esta função subtrai um dataset de outro para criar um mapa de diferenças. Ela destaca áreas onde os valores em um dataset são maiores ou menores em comparação com o outro, facilitando a identificação de tendências e mudanças ao longo do tempo.

Essa ferramenta é especialmente útil para visualizar variações em propriedades do solo, produtividade de culturas ou dados de sensoriamento remoto, ajudando você a identificar rapidamente áreas que podem exigir análise ou intervenção adicional.

### calculate\_relative\_difference

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

Esta função calcula a diferença relativa para cada pixel normalizando a diferença entre os datasets usando os valores de `dataset_2`. Isso significa que ela mostra quão significativa é a mudança em relação à magnitude de `dataset_2`.

Essa comparação proporcional é especialmente útil ao trabalhar com datasets de diferentes escalas, ajudando a revelar mudanças relativas em propriedades do solo, produtividades agrícolas ou saídas de sensores. Essa abordagem ajuda a apontar áreas com variação notável.

### calculate\_normalized\_difference

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

Esta função calcula a diferença normalizada para cada pixel escalando ambos os datasets em relação ao seu valor máximo global. Esse processo torna os datasets diretamente comparáveis, mesmo que originalmente tenham faixas diferentes.

O mapa resultante fornece uma visão clara das variações em propriedades do solo, produtividade de culturas e dados de sensoriamento remoto, permitindo identificar e avaliar rapidamente as principais diferenças.

### build\_zones\_by\_intervals

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

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

Esta função cria um mapa de zonas de manejo classificando uma camada raster contínua em zonas discretas com base em intervalos de valores definidos pelo usuário.

Cada intervalo define uma zona, e cada pixel é atribuído à zona cuja faixa de valores ele corresponde. Pixels que não correspondem a nenhum intervalo são marcados como -1.

Essa abordagem de zoneamento é comumente usada para transformar mapas de produtividade, propriedades do solo ou índices de sensoriamento remoto em zonas de manejo acionáveis para aplicações em taxa variável.

**Casos de uso típicos**

* Criar zonas de manejo a partir de camadas de produtividade, NDVI ou solo
* Preparar mapas de zonas para cálculos de taxa de nutrientes ou de semeadura
* Segmentar campos em zonas homogêneas para tomada de decisão

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

```python
# opções de target_nutrient
target_nutrient_option1 = 50 # número constante
# OU
target_nutrient_option2 = {1: 20, 2: 40} # dict por zona
# OU
target_nutrient_option3 = np.array([[1, 1], [2, 3]], dtype=float) # camada raster contínua

# opções de applied_nutrient_operations
applied_operations = [
    5,                                      # operação1 como número constante
    {1: 2, 2: 4},                           # operação2 como dict por zona
    np.array([[1, 1], [2, 3]], dtype=float) # operação3 como camada raster contínua
]

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

Esta função calcula a taxa de aplicação de nutrientes necessária (ingrediente ativo) para cada zona de manejo.

O cálculo é baseado em:

* um nível-alvo de nutriente,
* a oferta de nutriente disponível para a planta no solo,
* os nutrientes já aplicados por operações anteriores (esterco, fertilizantes, digestato, etc.).

As operações de nutrientes aplicadas podem ser fornecidas como constantes, valores por zona, camadas raster ou qualquer combinação disso. Todas as entradas são automaticamente resolvidas e agregadas por zona.

Por padrão, a taxa necessária é calculada como a diferença entre o nível-alvo de nutriente e a soma do aporte do solo e dos nutrientes aplicados. O resultado é retornado como um mapa raster onde cada zona contém uma taxa de nutriente uniforme.

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

```python
# coeficiente de conversão de ingrediente ativo para produto e vice-versa
corrected_coefficient = 1.5  # coeficiente constante
# OU
corrected_coefficient = np.array([[np.nan, 5], [np.nan, 1]], dtype=float)  # coeficientes por pixel

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

Esta função converte uma camada raster entre **taxas de ingrediente ativo e taxas de produto** usando um coeficiente de correção.

O `corrected_coefficient` pode ser um único **float** (aplicado a todos os pixels) ou um coeficiente **matriz** (conversão por pixel). Ela é normalmente usada para traduzir necessidades de nutrientes calculadas (ingrediente ativo) em taxas reais de aplicação do produto, ou vice-versa, com base na composição do fertilizante ou na concentração de nutrientes.

A conversão é aplicada pixel a pixel, preservando a estrutura espacial da camada original.

**Casos de uso típicos**

* Converter taxas de nutrientes em taxas de produtos fertilizantes
* Ajustar mapas de aplicação com base na concentração de nutrientes
* Preparar mapas de prescrição finais para máquinas

### 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 função estima a textura do solo segundo o USDA para cada pixel usando as porcentagens de areia, silte e argila.

Forneça três camadas raster em porcentagem (0-100) que representem as frações de tamanho de partícula. A saída é <mark style="background-color:green;">nomes de classes 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 ou undefined</mark>* <mark style="background-color:green;">quando as entradas são invá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 função estima a classe de textura do solo FAO/WRB (ISO 11277) para cada pixel com base nas porcentagens de areia, silte e argila.

Forneça três camadas raster em porcentagem (0-100) que representem as frações de tamanho de partícula. A saída é <mark style="background-color:green;">Códigos de classe FAO/WRB como</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;">quando as entradas são inválidas</mark>.

### calculate\_soil\_bulk\_density

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

Esta função calcula <mark style="background-color:green;">a densidade aparente do solo (g/cm³) com base na classe de textura e na matéria orgânica do solo (MOS) opcional</mark>.

O `texture_class_layer` deve conter nomes ou códigos de classe produzidos pela [função de textura USDA](#estimate_texture_class_based_on_usda) ou pela [função de textura FAO/WRB](#estimate_texture_class_based_on_fao_wrb) mencionada acima.

Se `som_pct_layer` for fornecida como valor percentual, a função ajusta a densidade aparente usando a MOS. Caso contrário, ela retorna valores de densidade aparente do solo em g/cm³ associados às classes de textura conforme a consulta 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/pt-br/tour-do-produto-aplicativo-web/analises-baseadas-em-equacoes/catalogo-de-funcoes-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.
