# カスタム関数カタログ

GeoPard は、式ベースの分析の可読性と機能性を向上させるために設計されたカスタム関数の包括的なカタログを提供します。これらの関数は複雑な `python` コードをカプセル化しており、高度なデータ操作や計算を簡単に実装できます。

### 式を入力

<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>式を入力してください</p></figcaption></figure>

GeoPard で、より直感的で保守しやすい式を作成するために利用可能な事前構築済み関数の一覧は、次の `geopard` パッケージに含まれています:

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

```python
# input_data は Dataset の属性レイヤーです（例: 収量、NDVI）
filled_layer = geopard.fill_gaps_with_k_neighbors(yield_layer, k=5)
```

この関数は、K-Neighbors アルゴリズムを使用して、データセット内の欠損やゼロ値を復元します。 `input_data` 変数（選択した属性を持つ Dataset として）と、近傍数 `k`を指定することで、欠損値をスムーズに補完し、データの連続性と整合性を確保できます。

この関数は、データの欠損が圃場全体に分散しており、圃場境界の特定部分に偏っていない場合にうまく機能します。

### determine\_data\_similarity

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

この関数を使用すると、2 つの Dataset 間のピクセルごとの類似性を計算できます。変数 `data_layer_1` および `data_layer_2` は、 **同じ測定項目** を **同じ単位** で表している必要があり、有意義な比較を確実に行えます。Dataset に関連付けられた変数を指定することで、0 から 1 の値を持つ類似性マップを生成でき、比較研究やパターン認識に役立ちます。 `data_layer_1` および `data_layer_2` associated with Datasets, you can generate a similarity map with values ranging from 0 to 1, facilitating comparative studies and pattern recognition.

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

この関数を使用すると、正規化された 2 つのデータセット間のピクセルごとの類似性を計算できます。元の `data_layer_1` および `data_layer_2` が異なるスケールまたは単位を持つ場合は、正規化が推奨されます。これらのデータセットを入力として与えることで、関数は 0 から 1 の値を持つ類似性マップを生成し、比較研究、パターン認識、空間的一貫性の分析に適したものになります。

### determine\_low\_high\_similarity

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

この関数は、2 つの Dataset 間の低値・高値の類似性を評価します。変数を入力し、 `data_layer_1` および `data_layer_2` Dataset に関連付けられた変数を入力すると、low-low、low-high、high-low、high-high などの組み合わせを示す分類済み類似性マップが得られ、詳細なデータ分類に役立ちます。

### get\_value\_for\_zone

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

この関数を使用すると、単一ゾーン内の Dataset 属性からすべての値を抽出できます。 `data_layer` （属性レイヤー）、 `zones_layer` （ゾーンマップ）、および `zone_id` （ゾーン番号）を指定して、そのゾーン内の収量、施用量、または播種量などの値を分析用に抽出します。

### drop\_value

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

この関数を使用すると、データセット属性から特定の値を削除できます。 `data_layer` および `value_to_drop`を指定することで、それらの値を結果から除外してデータセットをクリーンアップできます。技術的には、それらを `NaN`.

### normalize\_data

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

この関数でデータセット属性を正規化します。 `data_layer`を渡すことで、データを 0 から 1 の標準化された範囲にスケーリングでき、異なるデータセット間での比較や統合が容易になります。

### calculate\_total\_applied\_fertilizer

```python
applications = [urea_rate, map_rate]
coefficients = [1.0, 1.0]  # 単位を維持するには 1.0 を使用し、製品濃度に応じて調整することもできます

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

この関数を使用すると、面積当たり単位での総施肥量を計算できます（例: kg/ha、l/ha、gal/ac など）。 `application_list` AppliedRate 属性を持つ Dataset と、対応する `active_ingredient_coefficient_list` を肥料製品とともに指定することで、実際の総施肥量を単位量（例: kg、l、gal など）で取得できます。

### calculate\_total\_applied\_nitrogen

```python
applications = [urea_rate, uan_rate]
nitrogen_coefficients = [0.46, 0.32]  # 各製品中の N 比率（有効成分）

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

この関数を使用すると、kg/ha で総施用窒素量を計算できます。 `application_list` AppliedRate 属性を持つ Dataset と、対応する `active_ingredient_coefficient_list` 窒素製品に対して、実際の窒素量を kg/ha に換算する値を指定することで、農業計画や持続可能性評価に不可欠な総施用窒素量を正確に計算できます。出力は `N_total_applied` として[`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
)
```

この関数を使用すると、kg/ha で窒素吸収量を算出できます。 `yield_wet_tha`, `moisture_pct`, `protein_pct` を収量 Dataset から、さらに `protein_crop_correction_coefficient` をタンパク質と窒素吸収の関連を表す値として指定することで、作物生産における窒素利用効率を評価できます。出力は `N_uptake` として[`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)
```

この関数を使用すると、窒素利用効率を百分率で評価できます。 [`N_total_applied`](#calculate_total_applied_nitrogen) および [`N_uptake`](#calculate_nitrogen_uptake) 変数（前の関数からの出力）を入力することで、窒素施用の有効性を測定し、肥料利用の最適化に役立てることができます。

### calculate\_costs

```python
rates = [seed_rate, fertilizer_rate]
prices = [1.2, 0.8]  # 各施用量レイヤーの単価
costs = geopard.calculate_costs(rates, prices)
```

この関数を使用すると、施用量と価格に基づく総コストを計算できます。 `application_rate_list` AppliedRate 属性を持つ Dataset のリストと、対応する `price_per_unit_list`を指定することで、さまざまな農作業に関連する費用を集計でき、予算管理や財務計画を支援します。出力は `costs` として[`geopard.calculate_profit`](#calculate_profit).

### calculate\_revenue

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

この関数を使用すると、収量 Dataset から売上を計算できます。 `yield_as_mass` を収量 Dataset 属性に関連付けられた値として、さらに `yield_price_per_unit`を入力することで、作物生産から得られる収入を見積もることができ、経済評価に役立ちます。出力は `costs` として[`geopard.calculate_profit`](#calculate_profit) .

### calculate\_profit

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

この関数を使用すると、売上からコストを差し引いて利益を算出できます。 [`revenue`](#calculate_revenue) および [`costs`](#calculate_costs) 変数（前の関数からの出力）を指定することで、農業経営からの財務的利益を簡単に計算でき、収益性分析や戦略的意思決定を支援します。

### fill\_value\_for\_range

```python
# 10 から 20 の間の値のみを保持し、それ以外は 0 に置き換える
filtered = geopard.fill_value_for_range(layer, min_value=10, max_value=20, value_to_fill=0)
```

この関数は、指定した範囲内の値を `input` 配列内でフィルタリングします。 `input` array, along with optional `min_value` と任意の `max_value` しきい値を指定することで、目的の範囲内にある値を抽出できます。 `value_to_fill` パラメータを使用すると、範囲外の値を指定した値に置き換えることができ、データのフィルタリングや正規化処理を向上させます。

### calculate\_per\_pixel\_mae

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

この関数を使用すると、2 つのデータセット間のピクセルごとの平均絶対誤差（MAE）を計算できます。絶対差の空間マップを提供します。「絶対差」とは、対応するピクセル値の差の大きさのみを示し、どちらが高いか低いかは考慮しません。

この関数は、差異の大きいエリアを特定するのに役立ちます。

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

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

この関数は、2 つのデータセット間の各ピクセルの相対偏差を計算し、その差を `dataset_1`の値に対する百分率として表します。つまり、あるピクセルの値が対応する値からどれだけずれているかを示します。 `dataset_1` を基準にした比例的な観点で表します。

この手法は、土壌特性、作物収量、またはリモートセンシングデータの変動を分析する際に特に有用で、比例差が大きいエリアをすばやく特定するのに役立ちます。

### calculate\_difference

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

この関数は、1 つのデータセットから別のデータセットを減算して差分マップを作成します。あるデータセットの値がもう一方と比べて高い、または低いエリアを強調表示し、経時的な傾向や変化を把握しやすくします。

このツールは、土壌特性、作物収量、またはリモートセンシングデータの変動を可視化するのに特に有用で、追加の分析や対応が必要な可能性のあるエリアをすばやく特定するのに役立ちます。

### calculate\_relative\_difference

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

この関数は、 `dataset_2`の値を用いてデータセット間の差を正規化することにより、各ピクセルの相対差を計算します。つまり、変化が `dataset_2`.

の大きさに対してどの程度重要かを示します。このような比例比較は、異なるスケールのデータセットを扱う際に特に有用で、土壌特性、作物収量、またはセンサー出力の相対的な変化を明らかにするのに役立ちます。この手法により、顕著な変動があるエリアを特定できます。

### calculate\_normalized\_difference

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

この関数は、両方のデータセットをそれぞれの全体最大値に対してスケーリングすることで、各ピクセルの正規化差分を計算します。この処理により、元の範囲が異なっていてもデータセットを直接比較できるようになります。

結果のマップは、土壌特性、作物収量、リモートセンシングデータの変動を明確に示し、重要な差異をすばやく特定して評価できるようにします。

### build\_zones\_by\_intervals

```python
# ゾーニング用の区間
intervals = [
    (4, 8),
    (8, 12),
    (12, 16)
]

# 使用例
zones = geopard.build_zones_by_intervals(
    layer, 
    intervals
)
```

この関数は、ユーザー定義の値区間に基づいて連続ラスターレイヤーを離散的なゾーンに分類し、管理ゾーンマップを作成します。

各区間が 1 つのゾーンを定義し、すべてのピクセルはその値が属する範囲のゾーンに割り当てられます。どの区間にも一致しないピクセルは -1 としてマークされます。

このゾーニング手法は、収量マップ、土壌特性、またはリモートセンシング指標を、可変施用のための実行可能な管理ゾーンに変換するためによく使用されます。

**一般的な使用例**

* 収量、NDVI、または土壌レイヤーから管理ゾーンを作成する
* 施肥量や播種量の計算用にゾーンマップを準備する
* 意思決定のために圃場を均質なゾーンに分割する

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

```python
# target_nutrient のオプション
target_nutrient_option1 = 50 # 定数値
# または
target_nutrient_option2 = {1: 20, 2: 40} # ゾーンごとの dict
# または
target_nutrient_option3 = np.array([[1, 1], [2, 3]], dtype=float) # 連続ラスターレイヤー

# applied_nutrient_operations のオプション
applied_operations = [
    5,                                      # operation1 を定数値として指定
    {1: 2, 2: 4},                           # operation2 をゾーンごとの dict として指定
    np.array([[1, 1], [2, 3]], dtype=float) # operation3 を連続ラスターレイヤーとして指定
]

# 使用例
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 # または []
)
```

この関数は、各管理ゾーンに必要な養分施用量（有効成分量）を計算します。

計算は以下に基づきます:

* 目標養分水準、
* 土壌から供給される植物利用可能な養分、
* 過去の作業ですでに施用された養分（堆肥、肥料、消化液など）。

施用済み養分作業は、定数、ゾーンごとの値、ラスターレイヤー、またはそれらの任意の組み合わせとして指定できます。すべての入力は自動的に解決され、ゾーンごとに集計されます。

デフォルトでは、必要施用量は目標養分水準から、土壌供給分と施用済み養分の合計を差し引いて計算されます。結果は、各ゾーンが均一な養分施用量を持つラスターマップとして返されます。

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

```python
# 有効成分から製品、およびその逆方向への換算係数
corrected_coefficient = 1.5  # 定数係数
# または
corrected_coefficient = np.array([[np.nan, 5], [np.nan, 1]], dtype=float)  # ピクセルごとの係数

# 使用例
rates_as_products = geopard.convert_active_ingredient_and_product(
    layer, 
    corrected_coefficient
)
```

この関数は、 **有効成分量と製品量** の間で、補正係数を用いてラスターレイヤーを変換します。

この `corrected_coefficient` は単一の **float** （すべてのピクセルに適用）または係数 **matrix** （ピクセルごとの変換）にできます。通常、肥料組成や養分濃度に基づいて、計算された養分必要量（有効成分）を実際の製品施用量に変換したり、その逆を行うために使用されます。

変換はピクセル単位で適用され、元のレイヤーの空間構造は維持されます。

**一般的な使用例**

* 養分施用量を肥料製品施用量に変換する
* 養分濃度に基づいて施用マップを調整する
* 機械用の最終処方マップを準備する

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

この関数は、砂・シルト・粘土の割合を使用して、各ピクセルの USDA 土性を推定します。

粒径区分を表す百分率（0～100）の 3 つのラスターレイヤーを指定してください。出力は、 <mark style="background-color:green;">以下のような USDA クラス名</mark> *<mark style="background-color:green;">sand, loamy\_sand, sandy\_loam, loam, silt\_loam, sandy\_clay\_loam, clay\_loam, silty\_clay\_loam, silty\_clay, または undefined</mark>* <mark style="background-color:green;">で、入力が無効な場合に返されます。</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
)
```

この関数は、砂・シルト・粘土の割合に基づいて、各ピクセルの FAO/WRB（ISO 11277）土性クラスを推定します。

粒径区分を表す百分率（0～100）の 3 つのラスターレイヤーを指定してください。出力は、 <mark style="background-color:green;">以下のような FAO/WRB クラスコード</mark> *<mark style="background-color:green;">S, LS, SL, L, SiL, Si, SCL, CL, SiCL, SC, SiC, C, HC, または undefined</mark>* <mark style="background-color:green;">入力が無効な場合</mark>.

### calculate\_soil\_bulk\_density

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

この関数は、 <mark style="background-color:green;">土性クラスおよび任意の土壌有機物（SOM）に基づいて土壌仮比重（g/cm³）を計算します</mark>.

この `texture_class_layer` には、 [USDA 土性関数](#estimate_texture_class_based_on_usda) または [FAO/WRB 土性関数](#estimate_texture_class_based_on_fao_wrb) で上記のように生成されたクラス名またはコードが含まれている必要があります。

もし `som_pct_layer` が百分率の値として指定されている場合、この関数は SOM を用いて仮比重を補正します。そうでない場合は、USDA または FAO/WRB の対応表に基づく、土性クラスに対応した土壌仮比重値（g/cm³）を返します。


---

# 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/jpn/tsu-webapuri/bsuno/kasutamukatarogu.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.
