> For the complete documentation index, see [llms.txt](https://docs.geopard.tech/geopard-tutorials/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.geopard.tech/geopard-tutorials/pl/przewodnik-po-produkcie-aplikacja-webowa/analityka-oparta-na-rownaniach/katalog-funkcji-niestandardowych.md).

# Katalog funkcji niestandardowych

Te funkcje enkapsulują złożony kod Python, umożliwiając łatwe wdrażanie zaawansowanych przekształceń i obliczeń danych.

GeoPard oferuje kompleksowy katalog funkcji niestandardowych, zaprojektowanych tak, aby poprawić czytelność i funkcjonalność analiz opartych na równaniach. Funkcje te kapsułkują złożone `python` kod, umożliwiając łatwe wdrażanie zaawansowanych przekształceń danych i obliczeń.

### Wpisz równanie

<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>Wpisz równanie</p></figcaption></figure>

Lista dostępnych gotowych funkcji do tworzenia bardziej intuicyjnych i łatwiejszych w utrzymaniu równań w GeoPard jest zawarta w `geopard` pakiecie:

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

```python
# input_data to warstwa atrybutu zbioru danych (np. plon, NDVI)
filled_layer = geopard.fill_gaps_with_k_neighbors(yield_layer, k=5)
```

Ta funkcja przywraca luki danych lub zera w zbiorze danych, używając algorytmu K-Nearest Neighbors. Określając `input_data` zmienną (jako Dataset z wybranym atrybutem) oraz liczbę sąsiadów `k`, można płynnie uzupełnić brakujące wartości, zapewniając ciągłość i spójność danych.

Ta funkcja działa dobrze, gdy luki danych są rozproszone po całym polu i nie są skupione przy żadnej konkretnej części granicy pola.

### determine\_data\_similarity

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

Użyj tej funkcji, aby obliczyć podobieństwo piksel po pikselu między dwoma Datasetami. Zmienne `data_layer_1` i `data_layer_2` powinny reprezentować **ten sam pomiar** w **tych samych jednostkach** aby zapewnić sensowne porównanie. Podając zmienne `data_layer_1` i `data_layer_2` powiązane z Datasetami, można wygenerować mapę podobieństwa o wartościach od 0 do 1, ułatwiając analizy porównawcze i rozpoznawanie wzorców.

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

Użyj tej funkcji, aby obliczyć podobieństwo piksel po pikselu między dwoma znormalizowanymi zbiorami danych. Normalizacja jest zalecana, gdy oryginalne `data_layer_1` i `data_layer_2` mają różne skale lub jednostki. Podając te zbiory danych jako dane wejściowe, funkcja generuje mapę podobieństwa o wartościach od 0 do 1, dzięki czemu nadaje się do analiz porównawczych, rozpoznawania wzorców i analizy spójności przestrzennej.

### determine\_low\_high\_similarity

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

Ta funkcja ocenia podobieństwo niskie-wysokie między dwoma Datasetami. Podając zmienne `data_layer_1` i `data_layer_2` powiązane z Datasetami, otrzymujesz kategoryzowaną mapę podobieństwa wskazującą kombinacje takie jak niskie-niskie, niskie-wysokie, wysokie-niskie i wysokie-wysokie, co jest przydatne do bardziej szczegółowej klasyfikacji danych.

### get\_value\_for\_zone

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

Użyj tej funkcji, aby wyodrębnić wszystkie wartości z atrybutu Dataset w jednej strefie. Podaj `data_layer` (warstwa atrybutu), `zones_layer` (mapę stref) oraz `zone_id` (numer strefy), aby odizolować wartości do analizy, takie jak plon, dawka aplikacji lub dawka wysiewu, wewnątrz tej strefy.

### drop\_value

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

Ta funkcja pozwala usunąć określone wartości z atrybutu zbioru danych. Określając `data_layer` i `value_to_drop`, możesz oczyścić zbiór danych, eliminując te wartości z wyniku, technicznie zastępując je `NaN`.

### normalize\_data

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

Znormalizuj atrybut zbioru danych za pomocą tej funkcji. Przekazując `data_layer`, możesz przeskalować dane do ustandaryzowanego zakresu od 0 do 1, co ułatwia porównywanie i integrację różnych zbiorów danych.

### calculate\_total\_applied\_fertilizer

```python
applications = [urea_rate, map_rate]
coefficients = [1.0, 1.0]  # użyj 1.0, aby zachować jednostki, albo dostosuj do stężenia produktu

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

Oblicz całkowitą zastosowaną ilość nawozu w jednostkach na powierzchnię (na przykład kg/ha, l/ha, gal/ac itd.). Podając `application_list` Datasety z atrybutami AppliedRate oraz odpowiadającą `active_ingredient_coefficient_list` dla produktów nawozowych, można uzyskać rzeczywistą całkowitą zastosowaną ilość nawozu w jednostkach (na przykład kg, l, gal itd).

### calculate\_total\_applied\_nitrogen

```python
applications = [urea_rate, uan_rate]
nitrogen_coefficients = [0.46, 0.32]  # udział N (składnik aktywny) w każdym produkcie

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

Oblicz całkowitą zastosowaną ilość azotu w kg/ha, używając tej funkcji. Podając `application_list` Datasety z atrybutami AppliedRate oraz odpowiadającą `active_ingredient_coefficient_list` z produktami azotowymi, aby przeliczyć rzeczywisty azot na kg/ha, można dokładnie obliczyć całkowitą zastosowaną ilość azotu, istotną dla planowania rolniczego i oceny zrównoważenia. Wynik jest używany jako `N_total_applied` w[`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
)
```

Określ pobranie azotu w kg/ha za pomocą tej funkcji. Podając `yield_wet_tha`, `moisture_pct`, `protein_pct` z Datasetu plonu oraz `protein_crop_correction_coefficient` reprezentujący zależność białka od pobrania azotu, można ocenić efektywność wykorzystania azotu w produkcji roślinnej. Wynik jest używany jako `N_uptake` w[`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)
```

Oceń efektywność wykorzystania azotu jako procent, używając tej funkcji. Podając [`N_total_applied`](#calculate_total_applied_nitrogen) i [`N_uptake`](#calculate_nitrogen_uptake) zmienne (z poprzednich funkcji), możesz mierzyć skuteczność zastosowania azotu, wspierając optymalizację użycia nawozów.

### calculate\_costs

```python
rates = [seed_rate, fertilizer_rate]
prices = [1.2, 0.8]  # cena za jednostkę dla każdej warstwy dawki
costs = geopard.calculate_costs(rates, prices)
```

Oblicz całkowite koszty na podstawie dawek aplikacji i cen za pomocą tej funkcji. Podając `application_rate_list` Datasety z atrybutami AppliedRate oraz odpowiadającą `price_per_unit_list`, można agregować wydatki związane z różnymi działaniami rolniczymi, wspierając zarządzanie budżetem i planowanie finansowe. Wynik jest używany jako `costs` w[`geopard.calculate_profit`](#calculate_profit).

### calculate\_revenue

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

Oblicz przychód na podstawie Datasetu plonu za pomocą tej funkcji. Podając `yield_as_mass` powiązany z atrybutem Datasetu plonu oraz `yield_price_per_unit`, można oszacować dochód generowany z produkcji roślinnej, ułatwiając oceny ekonomiczne. Wynik jest używany jako `costs` w[`geopard.calculate_profit`](#calculate_profit) .

### calculate\_profit

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

Określ zysk, odejmując koszty od przychodu za pomocą tej funkcji. Podając [`revenue`](#calculate_revenue) i [`costs`](#calculate_costs) zmienne (z poprzednich funkcji), możesz łatwo obliczyć zysk finansowy z działalności rolniczej, wspierając analizę rentowności i strategiczne podejmowanie decyzji.

### fill\_value\_for\_range

```python
# zachowaj tylko wartości między 10 a 20, resztę zastąp 0
filtered = geopard.fill_value_for_range(layer, min_value=10, max_value=20, value_to_fill=0)
```

Ta funkcja filtruje wartości w określonym zakresie w `wejściowej` tablicy. Podając `wejściowej` tablicę wraz z opcjonalnym `min_value` oraz opcjonalnym `max_value` progami, można wyodrębnić wartości, które mieszczą się w żądanym zakresie. Parametr `value_to_fill` umożliwia zastępowanie wartości spoza zakresu określoną wartością, usprawniając filtrowanie danych i procesy normalizacji.

### calculate\_per\_pixel\_mae

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

Użyj tej funkcji, aby obliczyć średni błąd bezwzględny (MAE) piksel po pikselu między dwoma zbiorami danych. Zapewnia ona przestrzenną mapę różnic bezwzględnych. „Różnica bezwzględna” to po prostu wielkość luki między odpowiadającymi sobie wartościami pikseli, bez względu na to, czy jedna jest wyższa czy niższa.

Funkcja pomaga zidentyfikować obszary z większymi rozbieżnościami.

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

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

Ta funkcja oblicza odchylenie względne dla każdego piksela między dwoma zbiorami danych, wyrażając różnicę jako procent wartości w `dataset_1`. Zasadniczo pokazuje, o ile wartość jednego piksela odbiega od odpowiadającej mu wartości w `dataset_1` w ujęciu proporcjonalnym.

Takie podejście jest szczególnie cenne przy analizie zmian właściwości gleby, plonu roślin lub danych z teledetekcji, ponieważ pomaga szybko wykryć obszary ze znaczącymi różnicami proporcjonalnymi.

### calculate\_difference

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

Ta funkcja odejmuje jeden zbiór danych od drugiego, tworząc mapę różnic. Uwypukla obszary, gdzie wartości w jednym zbiorze są wyższe lub niższe w porównaniu z drugim, co ułatwia dostrzeganie trendów i zmian w czasie.

To narzędzie jest szczególnie przydatne do wizualizacji zmian właściwości gleby, plonu roślin lub danych z teledetekcji, pomagając szybko zidentyfikować obszary, które mogą wymagać dalszej analizy lub interwencji.

### calculate\_relative\_difference

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

Ta funkcja oblicza różnicę względną dla każdego piksela, normalizując różnicę między zbiorami danych z użyciem wartości z `dataset_2`. Oznacza to, że pokazuje, jak znacząca jest zmiana w odniesieniu do wielkości `dataset_2`.

Takie proporcjonalne porównanie jest szczególnie użyteczne przy pracy ze zbiorami danych o różnych skalach, pomagając ujawnić względne zmiany we właściwościach gleby, plonach roślin lub odczytach czujników. To podejście pomaga wskazać obszary z zauważalną zmiennością.

### calculate\_normalized\_difference

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

Ta funkcja oblicza znormalizowaną różnicę dla każdego piksela, skalując oba zbiory danych względem ich globalnej wartości maksymalnej. Proces ten sprawia, że zbiory danych są bezpośrednio porównywalne, nawet jeśli pierwotnie mają różne zakresy.

Powstała mapa daje jasny obraz zmian w właściwościach gleby, plonie roślin i danych z teledetekcji, pozwalając szybko identyfikować i oceniać kluczowe różnice.

### build\_zones\_by\_intervals

```python
# przedziały do strefowania
intervals = [
    (4, 8),
    (8, 12),
    (12, 16)
]

# użycie
zones = geopard.build_zones_by_intervals(
    layer, 
    intervals
)
```

Ta funkcja tworzy mapę stref zarządzania, klasyfikując ciągłą warstwę rastrową do dyskretnych stref na podstawie zdefiniowanych przez użytkownika przedziałów wartości.

Każdy przedział definiuje strefę, a każdy piksel jest przypisywany do strefy, w której mieści się jego zakres wartości. Piksele, które nie pasują do żadnego przedziału, są oznaczane jako -1.

Takie podejście do strefowania jest powszechnie używane do przekształcania map plonu, właściwości gleby lub indeksów teledetekcyjnych w praktyczne strefy zarządzania do aplikacji zmiennodozowych.

**Typowe zastosowania**

* Tworzenie stref zarządzania na podstawie warstw plonu, NDVI lub gleby
* Przygotowywanie map stref do obliczeń dawek nawozów lub siewu
* Dzielnie pola na jednorodne strefy do podejmowania decyzji

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

```python
# opcje target_nutrient
target_nutrient_option1 = 50 # stała liczba
# LUB
target_nutrient_option2 = {1: 20, 2: 40} # słownik per strefa
# LUB
target_nutrient_option3 = np.array([[1, 1], [2, 3]], dtype=float) # ciągła warstwa rastrowa

# opcje applied_nutrient_operations
applied_operations = [
    5,                                      # operation1 jako stała liczba
    {1: 2, 2: 4},                           # operation2 jako słownik per strefa
    np.array([[1, 1], [2, 3]], dtype=float) # operation3 jako ciągła warstwa rastrowa
]

# użycie
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 # lub []
)
```

Ta funkcja oblicza wymaganą dawkę składnika pokarmowego (substancji czynnej) dla każdej strefy zarządzania.

Obliczenie opiera się na:

* docelowym poziomie składnika pokarmowego,
* dostępnej dla roślin podaży składnika z gleby,
* składnikach pokarmowych już zastosowanych w poprzednich zabiegach (obornik, nawozy, digestat itp.).

Zastosowane operacje nawozowe mogą być podane jako wartości stałe, wartości per strefa, warstwy rastrowe lub dowolne ich połączenie. Wszystkie dane wejściowe są automatycznie rozwiązywane i agregowane per strefa.

Domyślnie wymagana dawka jest obliczana jako różnica między docelowym poziomem składnika pokarmowego a sumą podaży z gleby i zastosowanych składników. Wynik jest zwracany jako mapa rastrowa, w której każda strefa zawiera jednolitą dawkę składnika.

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

```python
# współczynnik przeliczeniowy active_ingredient na produkt i odwrotnie
corrected_coefficient = 1.5  # stały współczynnik
# LUB
corrected_coefficient = np.array([[np.nan, 5], [np.nan, 1]], dtype=float)  # współczynniki per piksel

# użycie
rates_as_products = geopard.convert_active_ingredient_and_product(
    layer, 
    corrected_coefficient
)
```

Ta funkcja przelicza warstwę rastrową między **dawkami składnika aktywnego i dawkami produktu** za pomocą współczynnika korekcyjnego.

Współczynnik `corrected_coefficient` może być pojedynczym **float** (stosowanym do wszystkich pikseli) albo macierzą **współczynników** (przeliczenie per piksel). Zwykle używa się jej do przekształcania obliczonych potrzeb pokarmowych (substancja czynna) w rzeczywiste dawki aplikacji produktu lub odwrotnie, w oparciu o skład nawozu lub stężenie składnika pokarmowego.

Przeliczenie jest wykonywane piksel po pikselu, zachowując strukturę przestrzenną oryginalnej warstwy.

**Typowe zastosowania**

* Przeliczanie dawek składników pokarmowych na dawki produktu nawozowego
* Dostosowywanie map aplikacyjnych na podstawie stężenia składnika pokarmowego
* Przygotowywanie finalnych map aplikacyjnych dla maszyn

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

Ta funkcja szacuje teksturę gleby USDA dla każdego piksela, używając procentowej zawartości piasku, pyłu i iłu.

Podaj trzy warstwy rastrowe w procentach (0-100), które reprezentują frakcje wielkości cząstek. Wynikiem jest <mark style="background-color:green;">nazwy klas USDA, takie jak</mark> *<mark style="background-color:green;">sand, loamy\_sand, sandy\_loam, loam, silt\_loam, sandy\_clay\_loam, clay\_loam, silty\_clay\_loam, silty\_clay lub undefined</mark>* <mark style="background-color:green;">gdy dane wejściowe są nieprawidłowe.</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
)
```

Ta funkcja szacuje klasę tekstury gleby FAO/WRB (ISO 11277) dla każdego piksela na podstawie procentowej zawartości piasku, pyłu i iłu.

Podaj trzy warstwy rastrowe w procentach (0-100), które reprezentują frakcje wielkości cząstek. Wynikiem jest <mark style="background-color:green;">kody klas FAO/WRB, takie jak</mark> *<mark style="background-color:green;">S, LS, SL, L, SiL, Si, SCL, CL, SiCL, SC, SiC, C, HC lub undefined</mark>* <mark style="background-color:green;">gdy dane wejściowe są nieprawidłowe</mark>.

### calculate\_soil\_bulk\_density

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

Ta funkcja oblicza <mark style="background-color:green;">gęstość objętościową gleby (g/cm³) na podstawie klasy tekstury i opcjonalnej zawartości materii organicznej gleby (SOM)</mark>.

Współczynnik `texture_class_layer` powinna zawierać nazwy klas lub kody wygenerowane przez [funkcję tekstury USDA](#estimate_texture_class_based_on_usda) lub [funkcję tekstury FAO/WRB](#estimate_texture_class_based_on_fao_wrb) wspomniane powyżej.

Jeśli `som_pct_layer` jest podana jako wartość procentowa, funkcja koryguje gęstość objętościową, używając SOM. W przeciwnym razie zwraca wartości gęstości objętościowej gleby w g/cm³ powiązane z klasami tekstury zgodnie z tabelą USDA lub FAO/WRB.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.geopard.tech/geopard-tutorials/pl/przewodnik-po-produkcie-aplikacja-webowa/analityka-oparta-na-rownaniach/katalog-funkcji-niestandardowych.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
