# 地块适宜性评价系统 - 完整功能说明

## 📋 系统概述

地块适宜性评价系统是智慧农业生产管理系统的核心模块之一，采用层次分析法(AHP)进行多因子综合评价，实现地块适宜性的科学评估和作物智能推荐。

---

## 🎯 核心功能模块

### 1️⃣ 多因子综合评价

#### 功能描述
整合土壤pH值、有机质含量、土层厚度等关键指标，采用层次分析法构建加权评分体系，输出0-100分的适宜性评分及分级建议。

#### 评价因子
```typescript
评价因子体系：
├─ pH值 (默认权重: 20%)
├─ 有机质含量 (默认权重: 25%)
├─ 土层厚度 (默认权重: 20%)
├─ 全氮 (默认权重: 10%)
├─ 全磷 (默认权重: 10%)
├─ 全钾 (默认权重: 10%)
└─ 排水性 (默认权重: 5%)
```

#### 评分标准
- **高度适宜 (≥80分)**: 土壤条件优秀，适合多种作物，预期产量高
- **一般适宜 (60-79分)**: 部分因子需改善，可种植耐性作物，需适当改良
- **不适宜 (<60分)**: 土壤条件较差，需大幅改良，风险较高

#### 计算方法 - 层次分析法(AHP)
```
总分 = Σ(因子得分 × 因子权重)

示例计算:
总分 = pH值得分(95) × 20% 
     + 有机质得分(90) × 25%
     + 土层厚度得分(88) × 20%
     + 全氮得分(85) × 10%
     + 全磷得分(80) × 10%
     + 全钾得分(82) × 10%
     + 排水性得分(90) × 5%
     = 87分 (高度适宜)
```

#### 因子评分规则
每个因子根据其实际值与最佳范围的接近程度打分：
- 实际值在最佳范围内: 80-100分
- 实际值偏离最佳范围: 根据偏离程度扣分
- 偏离程度越大，得分越低

---

### 2️⃣ 自动化空间分析

#### 功能描述
系统自动循环调用空间分析服务，读取所有地块的各项因子数据，进行加权汇总计算，批量生成适宜性指数并更新到数据库。

#### 工作流程
```
┌─────────────────────────────────────────────┐
│  1. 数据读取                                 │
│  ↓ 从数据库读取所有地块的土壤、环境因子     │
├─────────────────────────────────────────────┤
│  2. 循环分析                                 │
│  ↓ 自动循环遍历每个地块单元                 │
├─────────────────────────────────────────────┤
│  3. 空间分析服务调用                         │
│  ↓ 调用GIS空间分析接口，获取空间属性        │
├─────────────────────────────────────────────┤
│  4. 加权计算                                 │
│  ↓ 根据配置的权重体系进行加权汇总            │
├─────────────────────────────────────────────┤
│  5. 评分分级                                 │
│  ↓ 生成0-100分的适宜性评分，自动分级        │
├─────────────────────────────────────────────┤
│  6. 批量更新                                 │
│  ↓ 将评价结果批量写回数据库                 │
├─────────────────────────────────────────────┤
│  7. 报告生成                                 │
│  ↓ 自动生成可视化分析报告，支持导出          │
└─────────────────────────────────────────────┘
```

#### 批量分析结果统计
- 高度适宜地块数量及占比
- 一般适宜地块数量及占比
- 不适宜地块数量及占比
- 整体评价分布图表
- 各因子平均得分

#### 性能优化
- 并行处理: 支持多线程并行分析
- 进度显示: 实时显示分析进度
- 错误处理: 单个地块失败不影响整体
- 结果缓存: 缓存计算结果，避免重复计算

---

### 3️⃣ 作物适配推荐

#### 功能描述
构建"作物-环境"知识库，定义各种作物最适宜的生长环境参数范围，自动生成推荐作物清单，并标注预期产量和风险提示。

#### 作物知识库

##### 水稻
```yaml
作物名称: 水稻
适宜条件:
  pH值: 6.0 - 7.0
  有机质: 25 - 40 g/kg
  土层厚度: 50 - 100 cm
  温度: 20 - 30 °C
  降雨量: 1000 - 1500 mm
预期产量: 600 - 800 kg/亩
风险提示:
  - 春季降雨偏少，有干旱风险
  - 需保证灌溉水源充足
```

##### 玉米
```yaml
作物名称: 玉米
适宜条件:
  pH值: 6.5 - 7.5
  有机质: 20 - 35 g/kg
  土层厚度: 60 - 120 cm
  温度: 18 - 28 °C
  降雨量: 600 - 1000 mm
预期产量: 700 - 900 kg/亩
风险提示:
  - 土壤偏碱性，可能影响养分吸收
  - 建议施用酸性肥料
```

##### 小麦
```yaml
作物名称: 小麦
适宜条件:
  pH值: 6.0 - 7.5
  有机质: 20 - 30 g/kg
  土层厚度: 40 - 80 cm
  温度: 15 - 25 °C
  降雨量: 450 - 650 mm
预期产量: 500 - 700 kg/亩
风险提示:
  - 土层厚度良好，适宜种植
```

##### 大豆
```yaml
作物名称: 大豆
适宜条件:
  pH值: 6.5 - 7.0
  有机质: 25 - 35 g/kg
  土层厚度: 50 - 100 cm
  温度: 20 - 28 °C
  降雨量: 500 - 800 mm
预期产量: 300 - 450 kg/亩
风险提示:
  - 有机质含量优秀，适合固氮
```

#### 推荐等级
- **高度推荐**: 地块环境参数与作物需求完全匹配（3/3因子匹配）
- **推荐**: 部分环境参数匹配（2/3因子匹配）
- **谨慎种植**: 环境参数匹配度低（≤1/3因子匹配）

#### 匹配算法
```typescript
function matchCrop(fieldData, cropRequirements) {
  const factors = ['ph', 'organicMatter', 'soilDepth'];
  let matchCount = 0;
  
  for (const factor of factors) {
    const value = fieldData[factor];
    const [min, max] = cropRequirements[factor];
    
    if (value >= min && value <= max) {
      matchCount++;
    }
  }
  
  const matchScore = matchCount / factors.length;
  
  if (matchScore >= 1.0) return '高度推荐';
  if (matchScore >= 0.66) return '推荐';
  return '谨慎种植';
}
```

---

### 4️⃣ 权重配置

#### 功能描述
支持自定义评价指标权重，提供预设方案快速配置。

#### 预设方案

##### 粮食作物权重方案
```
有机质含量: 30%
土层厚度:   25%
pH值:       20%
全氮:       8%
全磷:       8%
全钾:       8%
排水性:     5%
总计:       100%
```

##### 经济作物权重方案
```
有机质含量: 35%
pH值:       25%
土层厚度:   15%
全氮:       7%
全磷:       7%
全钾:       7%
排水性:     8%
总计:       100%
```

#### 权重调整规则
- 权重总和必须为100%
- 单个因子权重范围: 0-100%
- 支持滑块调整和直接输入
- 实时计算权重总和
- 提供恢复默认功能

---

## 📊 数据结构

### 评价因子数据结构
```typescript
interface EvaluationFactor {
  id: string;              // 因子ID
  name: string;            // 因子名称
  value: number;           // 实际值
  weight: number;          // 权重 (%)
  unit: string;            // 单位
  optimalRange: [number, number];  // 最佳范围
  score: number;           // 得分 (0-100)
}
```

### 适宜性评价结果
```typescript
interface SuitabilityResult {
  fieldId: string;         // 地块ID
  fieldName: string;       // 地块名称
  totalScore: number;      // 综合评分 (0-100)
  grade: '高度适宜' | '一般适宜' | '不适宜';  // 等级
  factors: EvaluationFactor[];  // 各因子详情
  timestamp: string;       // 评价时间
}
```

### 作物需求数据结构
```typescript
interface CropRequirement {
  cropName: string;                    // 作物名称
  ph: [number, number];                // pH值范围
  organicMatter: [number, number];     // 有机质范围
  soilDepth: [number, number];         // 土层厚度范围
  temperature: [number, number];       // 温度范围
  rainfall: [number, number];          // 降雨量范围
  expectedYield: [number, number];     // 预期产量范围
  risks: string[];                     // 风险提示
}
```

---

## 🎨 UI/UX 设计

### 颜色系统
- 🟢 绿色: 高度适宜、优秀、匹配
- 🟡 黄色: 一般适宜、待改善、警告
- 🔴 红色: 不适宜、较差、偏离
- 🔵 蓝色: 信息提示、推荐
- 🟣 紫色: 统计数据

### 评分可视化
- 进度条: 显示各因子得分
- 雷达图: 多维度综合展示（可扩展）
- 柱状图: 批量评价结果分布
- 最佳范围标记: 在进度条上标记最佳范围区间

### 交互设计
- 滑块调整权重: 直观拖动调整
- 实时计算: 权重变化实时更新总和
- 智能提示: 超标或不合理时给出提示
- 一键应用: 预设方案一键应用

---

## 🔬 技术实现

### 层次分析法(AHP)实现
```typescript
function calculateAHPScore(factors: EvaluationFactor[]): number {
  let totalScore = 0;
  let totalWeight = 0;
  
  for (const factor of factors) {
    totalScore += factor.score * (factor.weight / 100);
    totalWeight += factor.weight;
  }
  
  // 归一化到100分制
  return totalWeight > 0 ? (totalScore / totalWeight) * 100 : 0;
}
```

### 因子评分算法
```typescript
function calculateFactorScore(
  value: number,
  optimalRange: [number, number],
  scoreRange: [number, number] = [0, 100]
): number {
  const [minOptimal, maxOptimal] = optimalRange;
  const [minScore, maxScore] = scoreRange;
  
  // 在最佳范围内，得分80-100
  if (value >= minOptimal && value <= maxOptimal) {
    const position = (value - minOptimal) / (maxOptimal - minOptimal);
    return 80 + position * 20;
  }
  
  // 低于最佳范围
  if (value < minOptimal) {
    const deviation = (minOptimal - value) / minOptimal;
    return Math.max(0, 80 - deviation * 60);
  }
  
  // 高于最佳范围
  const deviation = (value - maxOptimal) / maxOptimal;
  return Math.max(0, 80 - deviation * 60);
}
```

### 批量分析实现
```typescript
async function runBatchAnalysis(fields: Field[]): Promise<SuitabilityResult[]> {
  const results: SuitabilityResult[] = [];
  const total = fields.length;
  
  for (let i = 0; i < total; i++) {
    const field = fields[i];
    
    try {
      // 1. 读取地块因子数据
      const factorData = await fetchFieldFactors(field.id);
      
      // 2. 调用空间分析服务
      const spatialData = await callSpatialAnalysis(field.geometry);
      
      // 3. 计算因子得分
      const factors = calculateFactorScores(factorData, spatialData);
      
      // 4. 计算综合评分
      const totalScore = calculateAHPScore(factors);
      
      // 5. 确定等级
      const grade = determineGrade(totalScore);
      
      // 6. 生成评价结果
      const result: SuitabilityResult = {
        fieldId: field.id,
        fieldName: field.name,
        totalScore,
        grade,
        factors,
        timestamp: new Date().toISOString(),
      };
      
      results.push(result);
      
      // 7. 更新数据库
      await updateFieldSuitability(field.id, result);
      
      // 8. 更新进度
      updateProgress((i + 1) / total * 100);
      
    } catch (error) {
      console.error(`评价地块 ${field.id} 失败:`, error);
      // 继续处理下一个地块
    }
  }
  
  return results;
}
```

---

## 📈 应用场景

### 场景1: 新地块适宜性评估
**需求**: 新获得一块土地，需要评估其种植适宜性
**操作流程**:
1. 录入地块土壤检测数据
2. 选择地块，点击"开始评价"
3. 系统自动计算适宜性评分
4. 查看评价结果和改善建议
5. 根据结果决定是否种植及种植什么

### 场景2: 批量地块评估规划
**需求**: 对农场所有地块进行系统评估，制定种植规划
**操作流程**:
1. 点击"批量评价"
2. 系统自动分析所有68个地块
3. 查看统计结果: 28块高度适宜，32块一般适宜，8块不适宜
4. 针对不适宜地块制定改良方案
5. 根据评价结果分配作物种植

### 场景3: 作物选择决策
**需求**: 某地块想种植经济作物，需要选择最合适的作物
**操作流程**:
1. 选择地块，查看适宜性评价
2. 切换到"作物适配推荐"页面
3. 查看推荐作物清单及匹配度
4. 对比各作物预期产量和风险
5. 选择"高度推荐"的作物进行种植

### 场景4: 土壤改良优化
**需求**: 某地块评分较低，需要定向改良
**操作流程**:
1. 查看地块适宜性评价详情
2. 分析各因子得分，找出短板因子
3. 制定针对性改良方案
   - pH值偏高 → 施用酸性肥料
   - 有机质低 → 增施有机肥
   - 土层薄 → 深耕深松
4. 改良后重新评价
5. 对比改良前后评分变化

---

## 🎯 系统优势

### 1. 科学性
- **层次分析法**: 采用成熟的多准则决策方法
- **加权评分**: 根据因子重要性科学加权
- **量化评估**: 将定性评价转化为定量评分

### 2. 自动化
- **批量分析**: 一键评价所有地块
- **自动更新**: 评价结果自动入库
- **智能推荐**: 自动匹配推荐作物

### 3. 灵活性
- **权重可调**: 支持自定义权重配置
- **预设方案**: 提供多种预设方案
- **因子扩展**: 可灵活添加评价因子

### 4. 实用性
- **产量预测**: 提供预期产量区间
- **风险提示**: 智能识别种植风险
- **改良建议**: 给出针对性改良建议

---

## 🔮 未来扩展

### 功能扩展
- [ ] 机器学习模型优化评分算法
- [ ] 历史评价数据趋势分析
- [ ] 多年度对比分析
- [ ] 作物轮作推荐
- [ ] 3D可视化地块适宜性分布
- [ ] 移动端适配

### 知识库扩展
- [ ] 扩充更多作物品种
- [ ] 细化作物生育期需求
- [ ] 添加病虫害风险评估
- [ ] 集成气候变化影响
- [ ] 引入市场价格因素

### 集成扩展
- [ ] 对接遥感影像数据
- [ ] 集成实时气象数据
- [ ] 连接物联网传感器
- [ ] 打通农事操作记录
- [ ] 关联产量统计数据

---

## 📚 参考文献

1. Saaty, T.L. (1980). The Analytic Hierarchy Process. McGraw-Hill.
2. 农业部. 《耕地质量等级》(GB/T 33469-2016)
3. 中国科学院. 《土壤肥力评价方法》
4. FAO. Land Evaluation: Towards a Revised Framework

---

## 👥 技术支持

如有问题或建议，请联系开发团队。

**开发团队**: 智慧农业系统研发组  
**版本**: v1.0.0  
**更新日期**: 2024-10-15
