# Mukautettujen funktioiden luettelo

GeoPard tarjoaa kattavan luettelon mukautetuista funktioista, jotka on suunniteltu parantamaan yhtälöpohjaisen analytiikan luettavuutta ja toiminnallisuutta. Nämä funktiot kapseloivat monimutkaisen `python` -koodin, jolloin voit toteuttaa kehittyneitä datan muokkauksia ja laskelmia helposti.

### Syötä yhtälö

<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>Syötä yhtälö</p></figcaption></figure>

Saatavilla olevien valmiiksi rakennettujen funktioiden luettelo intuitiivisempien ja helpommin ylläpidettävien yhtälöiden luomiseen GeoPardissa sisältyy `geopard` -pakettiin:

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

```python
# input_data on aineiston attribuuttitaso (esim. sato, NDVI)
filled_layer = geopard.fill_gaps_with_k_neighbors(yield_layer, k=5)
```

Tämä funktio palauttaa aineiston data-aukot tai nollat K-Neighbors-algoritmia käyttäen. Määrittämällä `input_data` -muuttujan (aineistona valitulla attribuutilla) ja naapureiden määrän `k`, voit täyttää puuttuvat arvot saumattomasti ja varmistaa datan jatkuvuuden ja eheyden.

Tämä funktio toimii hyvin, kun data-aukot jakautuvat ympäri peltoa eivätkä sijoitu mihinkään tiettyyn osaan lohkon rajaa.

### determine\_data\_similarity

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

Käytä tätä funktiota laskeaksesi pikselikohtaisen samankaltaisuuden kahden aineiston välillä. Muuttujien `data_layer_1` ja `data_layer_2` tulisi edustaa **samaa mittausta** samoissa **yksiköissä** merkityksellisen vertailun varmistamiseksi. Antamalla aineistoihin `data_layer_1` ja `data_layer_2` liittyvät muuttujat voit luoda samankaltaisuuskartan, jonka arvot vaihtelevat välillä 0–1, mikä helpottaa vertailevia tutkimuksia ja kuvioiden tunnistamista.

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

Käytä tätä funktiota laskeaksesi pikselikohtaisen samankaltaisuuden kahden normalisoidun aineiston välillä. Normalisointia suositellaan, kun alkuperäiset `data_layer_1` ja `data_layer_2` ovat eri asteikoilla tai eri yksiköissä. Kun nämä aineistot annetaan syötteenä, funktio tuottaa samankaltaisuuskartan, jonka arvot vaihtelevat välillä 0–1, joten se soveltuu vertaileviin tutkimuksiin, kuvioiden tunnistamiseen ja spatiaalisen yhtenäisyyden analyysiin.

### determine\_low\_high\_similarity

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

Tämä funktio arvioi matala-korkea-samankaltaisuutta kahden aineiston välillä. Syöttämällä muuttujat `data_layer_1` ja `data_layer_2` liittyen aineistoihin saat luokitellun samankaltaisuuskartan, joka osoittaa yhdistelmiä kuten matala-matala, matala-korkea, korkea-matala ja korkea-korkea, mikä on hyödyllistä tarkemmassa dataluokituksessa.

### get\_value\_for\_zone

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

Käytä tätä funktiota poimiaksesi kaikki arvot aineiston attribuutista yhden vyöhykkeen sisältä. Anna `data_layer` (attribuuttitaso), `zones_layer` (vyöhykekartta) ja `zone_id` (vyöhykkeen numero) eristääksesi analysoitavat arvot, kuten sadon, levitysmäärän tai kylvömäärän, kyseisen vyöhykkeen sisältä.

### drop\_value

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

Tämän funktion avulla voit poistaa tiettyjä arvoja aineiston attribuutista. Määrittämällä `data_layer` ja `value_to_drop`, voit puhdistaa aineiston poistamalla nämä arvot tuloksesta ja korvaamalla ne teknisesti arvolla `NaN`.

### normalize\_data

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

Normalisoi aineiston attribuutti tällä funktiolla. Antamalla `data_layer`, voit skaalata datan standardoidulle välille 0–1, mikä helpottaa eri aineistojen vertailua ja yhdistämistä.

### calculate\_total\_applied\_fertilizer

```python
applications = [urea_rate, map_rate]
coefficients = [1.0, 1.0]  # käytä arvoa 1.0 säilyttääksesi yksiköt tai säädä tuotteen pitoisuuden mukaan

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

Laske kokonaislevitetty lannoitemäärä pinta-alayksikköä kohti (esimerkiksi kg/ha, l/ha, gal/ac jne.) tällä funktiolla. Antamalla `application_list` aineistoja, joissa on AppliedRate-attribuutit, sekä vastaavat `active_ingredient_coefficient_list` lannoitetuotteiden kanssa saadaksesi todellisen kokonaislevitetyn lannoitemäärän yksiköissä (esimerkiksi kg, l, gal jne.).

### calculate\_total\_applied\_nitrogen

```python
applications = [urea_rate, uan_rate]
nitrogen_coefficients = [0.46, 0.32]  # typen osuus (vaikuttava aine) kussakin tuotteessa

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

Laske tällä funktiolla kokonaislevitetty typpi kg/ha. Antamalla `application_list` aineistoja, joissa on AppliedRate-attribuutit, sekä vastaavat `active_ingredient_coefficient_list` typpituotteiden kanssa varsinaisen typen muuntamiseksi kg/ha-yksikköön voit laskea tarkasti kokonaislevitetyn typen, joka on olennainen maatalouden suunnittelussa ja kestävyyden arvioinnissa. Tulosta käytetään muodossa `N_total_applied` funktiossa[`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
)
```

Määritä typen otto kg/ha tällä funktiolla. Antamalla `yield_wet_tha`, `moisture_pct`, `protein_pct` satoaineistosta sekä `protein_crop_correction_coefficient` joka kuvaa proteiinin yhteyttä typen ottoon, voit arvioida typen käyttötehokkuutta kasvintuotannossa. Tulosta käytetään muodossa `N_uptake` funktiossa[`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)
```

Arvioi typen käyttötehokkuus prosentteina tällä funktiolla. Syöttämällä [`N_total_applied`](#calculate_total_applied_nitrogen) ja [`N_uptake`](#calculate_nitrogen_uptake) muuttujat (aiemmista funktioista) voit mitata typen levityksen tehokkuutta, mikä auttaa optimoimaan lannoituksen käyttöä.

### calculate\_costs

```python
rates = [seed_rate, fertilizer_rate]
prices = [1.2, 0.8]  # yksikköhinta kullekin määräkerrokselle
costs = geopard.calculate_costs(rates, prices)
```

Laske kokonaiskustannukset levitysmäärien ja hintojen perusteella tällä funktiolla. Antamalla `application_rate_list` aineistoista, joissa on AppliedRate-attribuutit, sekä vastaavan `price_per_unit_list`, voit yhdistää eri maataloustoimiin liittyvät kulut budjetoinnin ja taloussuunnittelun tueksi. Tulosta käytetään muodossa `costs` funktiossa[`geopard.calculate_profit`](#calculate_profit).

### calculate\_revenue

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

Laske liikevaihto satoaineistosta tällä funktiolla. Syöttämällä `yield_as_mass` joka liittyy satoaineiston attribuuttiin, sekä `yield_price_per_unit`, voit arvioida kasvintuotannosta syntyvän tulon, mikä helpottaa taloudellisia arviointeja. Tulosta käytetään muodossa `costs` funktiossa[`geopard.calculate_profit`](#calculate_profit) .

### calculate\_profit

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

Määritä voitto vähentämällä kustannukset liikevaihdosta tällä funktiolla. Antamalla [`revenue`](#calculate_revenue) ja [`costs`](#calculate_costs) -muuttujat (aiemmista funktioista) voit helposti laskea maataloustoiminnan taloudellisen tuoton, mikä tukee kannattavuusanalyysiä ja strategista päätöksentekoa.

### fill\_value\_for\_range

```python
# säilytä vain arvot välillä 10 ja 20, korvaa muut arvolla 0
filtered = geopard.fill_value_for_range(layer, min_value=10, max_value=20, value_to_fill=0)
```

Tämä funktio suodattaa arvot määritellyllä alueella `input` -taulukossa. Antamalla `input` taulukon sekä valinnaiset `min_value` - ja valinnaiset `max_value` -raja-arvot voit erottaa halutulle välille osuvat arvot. Parametri `value_to_fill` mahdollistaa alueen ulkopuolisten arvojen korvaamisen määritetyllä arvolla, mikä tehostaa datan suodatusta ja normalisointia.

### calculate\_per\_pixel\_mae

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

Käytä tätä funktiota laskeaksesi keskimääräisen absoluuttisen virheen (MAE) pikseliä kohti kahden aineiston välillä. Se tuottaa spatiaalisen kartan absoluuttisista eroista. "Absoluuttinen ero" tarkoittaa yksinkertaisesti vastaavien pikseliarvojen välisen eron suuruutta riippumatta siitä, kumpi on suurempi tai pienempi.

Funktio auttaa tunnistamaan alueet, joilla poikkeamat ovat suurempia.

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

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

Tämä funktio laskee suhteellisen poikkeaman jokaiselle pikselille kahden aineiston välillä ja esittää eron prosentteina arvosta aineistossa `dataset_1`. Käytännössä se näyttää, kuinka paljon yhden pikselin arvo poikkeaa vastaavasta arvosta `dataset_1` suhteellisina osuuksina.

Tämä lähestymistapa on erityisen arvokas analysoitaessa maaperäominaisuuksien, sadon tai kaukokartoitusdatan vaihtelua, koska se auttaa havaitsemaan nopeasti alueet, joilla on merkittäviä suhteellisia eroja.

### calculate\_difference

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

Tämä funktio vähentää yhden aineiston toisesta muodostaakseen erotuskartan. Se korostaa alueita, joilla yhden aineiston arvot ovat korkeampia tai matalampia verrattuna toiseen, mikä helpottaa trendien ja ajan myötä tapahtuvien muutosten havaitsemista.

Tämä työkalu on erityisen hyödyllinen maaperäominaisuuksien, sadon tai kaukokartoitusdatan vaihtelun visualisoinnissa ja auttaa tunnistamaan nopeasti alueet, jotka voivat vaatia lisäanalyysiä tai toimenpiteitä.

### calculate\_relative\_difference

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

Tämä funktio laskee suhteellisen eron jokaiselle pikselille normalisoimalla aineistojen välisen eron käyttäen arvoja aineistosta `dataset_2`. Tämä tarkoittaa, että se näyttää, kuinka merkittävä muutos on suhteessa `dataset_2`.

Tällainen suhteellinen vertailu on erityisen hyödyllinen, kun työskennellään eri mittakaavan aineistojen kanssa, sillä se auttaa paljastamaan suhteelliset muutokset maaperäominaisuuksissa, sadoissa tai sensorien tuottamissa arvoissa. Tämä lähestymistapa auttaa paikantamaan alueet, joilla vaihtelu on huomattavaa.

### calculate\_normalized\_difference

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

Tämä funktio laskee normalisoidun eron jokaiselle pikselille skaalaamalla molemmat aineistot niiden globaalin maksimiarvon mukaan. Tämä prosessi tekee aineistoista suoraan vertailukelpoisia, vaikka niiden alkuperäiset vaihteluvälit olisivat erilaiset.

Tuloksena syntyvä kartta antaa selkeän kuvan maaperäominaisuuksien, sadon ja kaukokartoitusdatan vaihteluista, jolloin voit nopeasti tunnistaa ja arvioida keskeiset erot.

### build\_zones\_by\_intervals

```python
# vyöhykkeistämisen intervallit
intervals = [
    (4, 8),
    (8, 12),
    (12, 16)
]

# käyttö
zones = geopard.build_zones_by_intervals(
    layer, 
    intervals
)
```

Tämä funktio luo hallintavyöhykekartan luokittelemalla jatkuvan rasteritason erillisiin vyöhykkeisiin käyttäjän määrittämien arvointervallien perusteella.

Jokainen intervalli määrittää vyöhykkeen, ja jokainen pikseli osoitetaan siihen vyöhykkeeseen, jonka arvoalueeseen se kuuluu. Pikselit, jotka eivät vastaa mitään intervallia, merkitään arvolla -1.

Tätä vyöhykkeistämistapaa käytetään yleisesti satokarttojen, maaperäominaisuuksien tai kaukokartoitusindeksien muuntamiseen käytännöllisiksi hallintavyöhykkeiksi muuttuvan levitysmäärän sovelluksiin.

**Tyypilliset käyttötapaukset**

* Hallintavyöhykkeiden luominen sato-, NDVI- tai maaperätasoista
* Vyöhykekarttojen valmistelu ravinne- tai kylvömäärälaskelmiin
* Peltojen jakaminen yhtenäisiin vyöhykkeisiin päätöksenteon tueksi

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

```python
# target_nutrient -vaihtoehdot
target_nutrient_option1 = 50 # vakioarvo
# TAI
target_nutrient_option2 = {1: 20, 2: 40} # vyöhykekohtainen sanakirja
# TAI
target_nutrient_option3 = np.array([[1, 1], [2, 3]], dtype=float) # jatkuva rasteritaso

# applied_nutrient_operations -vaihtoehdot
applied_operations = [
    5,                                      # toimenpide1 vakioarvona
    {1: 2, 2: 4},                           # toimenpide2 vyöhykekohtaisena sanakirjana
    np.array([[1, 1], [2, 3]], dtype=float) # toimenpide3 jatkuvana rasteritasona
]

# käyttö
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 # tai []
)
```

Tämä funktio laskee tarvittavan ravinteiden levitysmäärän (vaikuttava aine) kullekin hallintavyöhykkeelle.

Laskenta perustuu seuraaviin:

* ravinteen tavoitetaso,
* kasveille käyttökelpoisen ravinteen saanti maasta,
* ravinteet, jotka on jo levitetty aiempien toimenpiteiden kautta (lanta, lannoitteet, mädäte jne.).

Levitetyt ravinnetoimenpiteet voidaan antaa vakioina, vyöhykekohtaisina arvoina, rasteritasoina tai näiden yhdistelmänä. Kaikki syötteet tulkitaan automaattisesti ja summataan vyöhykkeittäin.

Oletuksena tarvittava määrä lasketaan tavoiteravinteen tason sekä maan ravinnesaannin ja levitettyjen ravinteiden summan erotuksena. Tulos palautetaan rasterikarttana, jossa jokainen vyöhyke sisältää tasaisen ravinnemäärän.

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

```python
# muuntokerroin vaikuttavasta aineesta tuotteeksi ja päinvastoin
corrected_coefficient = 1.5  # vakio kerroin
# TAI
corrected_coefficient = np.array([[np.nan, 5], [np.nan, 1]], dtype=float)  # pikselikohtaiset kertoimet

# käyttö
rates_as_products = geopard.convert_active_ingredient_and_product(
    layer, 
    corrected_coefficient
)
```

Tämä funktio muuntaa rasteritason välillä **vaikuttavan aineen määrät ja tuotemäärät** käyttäen korjauskerrointa.

Parametri `corrected_coefficient` voi olla yksittäinen **float** (käytetään kaikille pikseleille) tai kerroin **matrix** (pikselikohtainen muunnos). Sitä käytetään tyypillisesti laskettujen ravinnetarpeiden (vaikuttava aine) muuntamiseen todellisiksi tuotteen levitysmääriksi tai päinvastoin lannoitteen koostumuksen tai ravinnepitoisuuden perusteella.

Muunnos tehdään pikselikohtaisesti, jolloin alkuperäisen tason spatiaalinen rakenne säilyy.

**Tyypilliset käyttötapaukset**

* Ravinnemäärien muuntaminen lannoitetuotteiden määriksi
* Levityskarttojen säätäminen ravinnepitoisuuden perusteella
* Lopullisten ohjauskarttojen valmistelu koneita varten

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

Tämä funktio arvioi USDA:n mukaisen maan tekstuuriluokan jokaiselle pikselille hiekka-, siltti- ja saviprosenttien perusteella.

Anna kolme prosentteina (0–100) esitettyä rasteritasoa, jotka kuvaavat raekokojakeita. Tuloksena saadaan <mark style="background-color:green;">USDA-luokkanimet kuten</mark> *<mark style="background-color:green;">sand, loamy\_sand, sandy\_loam, loam, silt\_loam, sandy\_clay\_loam, clay\_loam, silty\_clay\_loam, silty\_clay tai undefined</mark>* <mark style="background-color:green;">kun syötteet ovat virheellisiä.</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
)
```

Tämä funktio arvioi FAO/WRB:n (ISO 11277) mukaisen maan tekstuuriluokan jokaiselle pikselille hiekka-, siltti- ja saviprosenttien perusteella.

Anna kolme prosentteina (0–100) esitettyä rasteritasoa, jotka kuvaavat raekokojakeita. Tuloksena saadaan <mark style="background-color:green;">FAO/WRB-luokkakoodit kuten</mark> *<mark style="background-color:green;">S, LS, SL, L, SiL, Si, SCL, CL, SiCL, SC, SiC, C, HC tai undefined</mark>* <mark style="background-color:green;">kun syötteet ovat virheellisiä</mark>.

### calculate\_soil\_bulk\_density

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

Tämä funktio laskee <mark style="background-color:green;">maan tilavuuspainon (g/cm³) tekstuuriluokan ja valinnaisen maan orgaanisen aineksen (SOM) perusteella</mark>.

Parametri `texture_class_layer` tulisi sisältää luokkanimet tai koodit, jotka on tuotettu [USDA-tekstuurifunktiolla](#estimate_texture_class_based_on_usda) tai [FAO/WRB-tekstuurifunktiolla](#estimate_texture_class_based_on_fao_wrb) edellä mainittuna.

Jos `som_pct_layer` annetaan prosenttiarvona, funktio säätää tilavuuspainoa SOM:n perusteella. Muussa tapauksessa se palauttaa tekstuuriluokkiin liittyvät maan tilavuuspainoarvot g/cm³ USDA- tai FAO/WRB-hakutaulukon mukaisesti.


---

# 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/fin/tuotekierros-verkkosovellus/yhtalopohjainen-analytiikka/mukautettujen-funktioiden-luettelo.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.
