最終更新: 2026-02-16
変更履歴: M:N関係に更新、中山間モデル全17列対応、面積単位統一、帳票仕様追加
このシステムで扱うデータは3種類:
紐付けの関係:
| カラム名 | データ型 | 必須 | 説明 | 例 |
|---|---|---|---|---|
| 名称 | string | ○ | 圃場の名称(自由記述) | "口神 1反2畝" |
| 住所 | string | ○ | 圃場の住所 | "口神ノ川198(笹ヶ谷374-1)" |
| 面積(反) | float | ○ | 面積(単位: 反)※1反=1000m2=10a | 1.20 |
| 地主 | string | ○ | 地主の氏名 | "山崎 出祥" |
| 細目_耕地番号 | int | ○ | 共済マスタとの紐付けキー(1/2) | 2 |
| 細目_分筆番号 | int | ○ | 共済マスタとの紐付けキー(2/2) | 1 |
| 中山間_ID | int | △ | 中山間マスタとの紐付けキー | 50 |
| フィールド名 | データ型 | 説明 |
|---|---|---|
| name | CharField(100) | 圃場名 |
| address | CharField(255) | 住所 |
| area_tan | DecimalField(6,4) | 面積(反) |
| area_m2 | IntegerField | 面積(m2)= area_tan × 1000 |
| owner_name | CharField(100) | 所有者名 |
| group_name | CharField(50), nullable | グループ名(エリアや用途による分類) |
| display_order | IntegerField, default=0 | リスト表示時の順序 |
| raw_kyosai_k_num | CharField(20), nullable | 細目_耕地番号(インポート元の値) |
| raw_kyosai_s_num | CharField(20), nullable | 細目_分筆番号(インポート元の値) |
| raw_chusankan_id | CharField(20), nullable | 中山間_ID(インポート元の値) |
| kyosai_fields | ManyToManyField → OfficialKyosaiField | 関連共済マスタ(M:N) |
| chusankan_fields | ManyToManyField → OfficialChusankanField | 関連中山間マスタ(M:N) |
| location | PointField, nullable | 位置情報(Phase 1では未使用) |
名称 住所 面積(反) 細目_耕地番号 細目_分筆番号 中山間_ID
口神 1反2畝 口神ノ川198(笹ヶ谷374-1) 1.20 2 1 50
口神 北東 口神ノ川198(笹ヶ谷374-1) 0.40 2 2 50
口神 北中 口神ノ川198(笹ヶ谷374-1) 0.43 2 2 50
NaN)| カラム名 | データ型 | 必須 | 説明 | 例 |
|---|---|---|---|---|
| 地名 地番 | string | ○ | 地名と地番(スペース区切り) | "四万十町 ササガタニ 374-1" |
| 耕地番号 | int | ○ | 共済区画の識別子(1/2) | 2 |
| 分筆番号 | int | ○ | 共済区画の識別子(2/2) | 1 |
| 本地面積 (m2) | float | ○ | 申請上の面積(単位: m2) | 25.4 |
| 漢字地名 | string | ○ | 漢字表記の地名 | "四万十町 笹ヶ谷 374-1" |
| フィールド名 | データ型 | 説明 |
|---|---|---|
| k_num | IntegerField | 耕地番号 |
| s_num | IntegerField | 分筆番号 |
| address | CharField(200) | 地名地番 |
| kanji_name | CharField(200) | 漢字地名 |
| area | IntegerField | 本地面積(m2) |
制約: (k_num, s_num) のペアで一意(unique_together)
地名 地番 耕地番号 分筆番号 本地面積(m2) 漢字地名
四万十町 ササガタニ 374-1 2 1 25.4 四万十町 笹ヶ谷 374-1
四万十町 ササガタニ 374-1 2 2 12.0 四万十町 笹ヶ谷 374-1
| カラム名 | データ型 | 必須 | 説明 | 例 |
|---|---|---|---|---|
| ID | int | ○ | 中山間区画の識別子 | 1 |
| 中山間 | string | ○ | 中山間フラグ | "〇" |
| 大字 | string | ○ | 大字名 | "口神ノ川" |
| 字 | string | ○ | 字名 | "壱町切" |
| 地番 | string | ○ | 地番(数値でないケースあり:イ、ロ等) | "1694" |
| 枝番 | string | △ | 枝番(-, 1, イ, ロ等) | "-" |
| 地目 | string | ○ | 地目 | "田" |
| 農地面積 | int | ○ | 農地面積(m2) | 2900 |
| 植栽面積 | int | ○ | 植栽面積(m2) | 2748 |
| 作付け品目 | string | △ | 役場が記入した作付け品目 | "ニラ" |
| 協定管理者 | string | ○ | 協定管理者名 | "神山倫子" |
| 所有者 | string | △ | 所有者名(NULLあり) | "谷脇史男" |
| 傾斜度 | string | ○ | 傾斜度 | "1/29" |
| 基本金額 | int | ○ | 基本金額(円) | 23200 |
| 超急傾斜加算額 | decimal | △ | 超急傾斜加算額(円) | 0.0 |
| スマート農業加算額 | decimal | △ | スマート農業加算額(円) | 14500 |
| 交付金額 | int | ○ | 交付金額合計(円) | 37700 |
| フィールド名 | データ型 | 説明 |
|---|---|---|
| c_id | CharField(20), unique | 中山間ID |
| chusankan_flag | CharField(10), nullable | 中山間フラグ(〇等) |
| oaza | CharField(100) | 大字 |
| aza | CharField(100) | 字 |
| chiban | CharField(50) | 地番(文字列:イ、ロ等があるため) |
| branch_num | CharField(20), nullable | 枝番(-, 1, イ, ロ等) |
| land_type | CharField(20), nullable | 地目(田, 畑等) |
| area | IntegerField | 農地面積(m2) |
| planting_area | IntegerField, nullable | 植栽面積(m2) |
| original_crop | CharField(100), nullable | 作付け品目(役場記入の元データ) |
| manager | CharField(100), nullable | 協定管理者 |
| owner | CharField(100), nullable | 所有者 |
| slope | CharField(20), nullable | 傾斜度 |
| base_amount | IntegerField, nullable | 基本金額(円) |
| steep_slope_addition | DecimalField, nullable | 超急傾斜加算額(円) |
| smart_agri_addition | DecimalField, nullable | スマート農業加算額(円) |
| payment_amount | IntegerField, nullable | 交付金額(円) |
ID 中山間 大字 字 地番 枝番 地目 農地面積 植栽面積 作付け品目 協定管理者 所有者 傾斜度 基本金額 交付金額
1 〇 口神ノ川 壱町切 1694 - 田 2900 2748 ニラ 神山倫子 1/29 23200 37700
2 〇 口神ノ川 大窪 490 1 田 652 490 野菜 谷脇誠一 谷脇史男 1/20 15204 18824
| フィールド名 | データ型 | 必須 | 説明 |
|---|---|---|---|
| id | int (自動) | ○ | 主キー |
| field | FK → Field | ○ | 実圃場(外部キー) |
| year | IntegerField | ○ | 年度(2025など) |
| crop | FK → Crop, nullable | △ | 作物(外部キー) |
| variety | FK → Variety, nullable | △ | 品種(外部キー、NULLあり) |
| notes | TextField, nullable | △ | 備考 |
| フィールド名 | データ型 | 説明 |
|---|---|---|
| id | int (自動) | 主キー |
| name | CharField(50), unique | 作物名 |
| フィールド名 | データ型 | 説明 |
|---|---|---|
| id | int (自動) | 主キー |
| crop | FK → Crop | 所属する作物 |
| name | CharField(100) | 品種名 |
制約: (crop, name) のペアで一意
共済マスタのインポート
水稲共済細目用.ods を読み込みOfficialKyosaiField テーブルに保存中山間マスタのインポート
中山間.ods を読み込みOfficialChusankanField テーブルに全17列を保存実圃場データのインポート
吉田農地台帳.ods を読み込みField テーブルに保存細目_耕地番号 + 細目_分筆番号 → OfficialKyosaiField を検索して M:N 関連に追加中山間_ID → OfficialChusankanField を検索して M:N 関連に追加# 共済マスタとの紐付け(M:N)
kyosai_record = OfficialKyosaiField.objects.get(
k_num=row['細目_耕地番号'],
s_num=row['細目_分筆番号']
)
field.kyosai_fields.add(kyosai_record)
# 中山間マスタとの紐付け(M:N)
if pd.notna(row['中山間_ID']):
chusankan_record = OfficialChusankanField.objects.get(
c_id=str(int(row['中山間_ID']))
)
field.chusankan_fields.add(chusankan_record)
出力形式:
表の列:
| 列名 | データ元 | 備考 |
|---|---|---|
| 漢字地名 | OfficialKyosaiField.kanji_name | 例: 四万十町 笹ヶ谷 374-1 |
| 耕地-分筆 | k_num + "-" + s_num | 例: 2-1 |
| 本地面積 (m2) | OfficialKyosaiField.area | |
| 作付品目 | Plan.crop.name | システムの作付け計画から |
| 品種 | Plan.variety.name | 〃 |
| 圃場名称 | Field.name | 吉田農地台帳の名称 |
集計ロジック:
出力形式:
表の列:
| 列名 | データ元 | 備考 |
|---|---|---|
| 所在地 | 大字+字+地番+枝番 連結 | 例: 口神ノ川 壱町切 1694 |
| 植栽面積 | OfficialChusankanField.planting_area | m2 |
| 作付け品目(元) | OfficialChusankanField.original_crop | 役場記入の値 |
| 協定管理者 | OfficialChusankanField.manager | |
| 所有者 | OfficialChusankanField.owner | |
| 作物 | Plan.crop.name | システムの作付け計画から |
| 品種 | Plan.variety.name | 〃 |
| 圃場名称 | Field.name | 吉田農地台帳の名称 |
集計ロジック:
システム内部では以下のように統一:
| 用途 | 単位 | DB型 | 変換式 |
|---|---|---|---|
| 実圃場の面積(DB保存) | 反 + m2 | DecimalField + IntegerField | 1反 = 1000m2 |
| 共済マスタの面積(DB保存) | m2 | IntegerField | - |
| 中山間マスタの面積(DB保存) | m2 | IntegerField | - |
| 画面表示 | 反 | - | area_m2 / 1000 |
実装方針:
area_tan(DecimalField)と area_m2(IntegerField)の両方を保持area は m2(IntegerField)で保存m2 に変換紐付けの存在確認
細目_耕地番号/細目_分筆番号 が共済マスタに存在するか中山間_ID が中山間マスタに存在するか面積の整合性(参考情報)
作付け未設定の検出