# 气象监测系统完整功能指南

## 功能概述

气象监测系统是智慧农业生产管理系统的核心模块之一，提供完整的气象数据采集、存储、分析和预警功能。

---

## 一、核心功能

### 1. API接口自动获取气象数据 ✅

**功能描述：**
- 支持对接多种气象API服务（中国气象局、和风天气、OpenWeatherMap等）
- 自动每15分钟刷新一次气象数据
- 实时获取：温度、湿度、风速、降雨量、光照强度、气压等数据

**配置步骤：**
1. 点击右上角"API配置"按钮
2. 填写气象站信息：
   - 气象站名称
   - API接口地址
   - API密钥
   - 经纬度坐标
3. 启用气象站
4. 保存配置

**支持的API示例：**

**和风天气API：**
```
接口地址: https://devapi.qweather.com/v7/weather/now
参数: location=经度,纬度&key=你的密钥
```

**中国气象局API：**
```
接口地址: http://www.weather.com.cn/data/cityinfo/
参数: 城市代码
```

### 2. 历史Excel数据导入 ✅

**功能描述：**
- 支持 Excel (.xlsx, .xls) 和 CSV 格式文件
- 批量导入历史气象数据
- 自动去重和数据验证

**Excel文件格式要求：**

| 列名 | 格式 | 是否必需 |
|------|------|----------|
| 时间 | YYYY-MM-DD HH:mm | 必需 |
| 温度 | 数值 (°C) | 必需 |
| 湿度 | 数值 (%) | 必需 |
| 风速 | 数值 (m/s) | 必需 |
| 降雨量 | 数值 (mm) | 必需 |
| 光照强度 | 数值 (W/m²) | 必需 |
| 气压 | 数值 (hPa) | 可选 |

**导入步骤：**
1. 点击"导入历史数据"按钮
2. 选择Excel或CSV文件
3. 系统自动解析并导入数据
4. 导入完成后显示成功导入的记录数

**注意事项：**
- 导入前请确保数据格式正确
- 重复数据将被自动去重
- 建议单次导入数据量不超过10000条
- 可下载模板文件参考

### 3. 数据可视化展示 ✅

**实时数据卡片：**
- 温度（°C）- 显示当前值和变化趋势
- 湿度（%）- 显示当前值和变化趋势
- 风速（m/s）- 显示当前值和变化趋势
- 降雨量（mm）- 显示今日累计
- 光照强度（W/m²）- 显示当前值
- 气压（hPa）- 显示当前值

**数据曲线图：**
- **温度变化曲线** - 展示24小时/7天/30天温度趋势
- **湿度变化曲线** - 湿度百分比变化趋势
- **风速变化曲线** - 风力变化趋势
- **降雨量柱状图** - 各时段降雨量统计
- **光照强度曲线** - 光照变化趋势

**时间范围选择：**
- 24小时：小时级数据
- 7天：天级数据
- 30天：天级数据

### 4. 天气预报对接 ✅

**功能特性：**
- 未来7天天气预报
- 显示每日天气状况（晴、多云、雨等）
- 显示温度区间
- 温度趋势图可视化

**预报信息：**
- 天气图标
- 天气描述
- 最高/最低温度
- 温度带趋势图

### 5. 灾害天气预警系统 ✅

**智能预警规则：**

| 灾害类型 | 触发条件 | 预警级别 |
|----------|----------|----------|
| 低温冻害 | 温度 ≤ 3°C | 警报 |
| 大风 | 风速 ≥ 10 m/s | 预警 |
| 暴雨 | 3小时降雨量 ≥ 50mm | 紧急 |
| 高温 | 温度 ≥ 35°C | 预警 |

**预警级别：**
- 🟡 **预警** - 需要关注，做好准备
- 🟠 **警报** - 需要采取措施，防范风险
- 🔴 **紧急** - 立即采取行动，避免损失

**预警信息包含：**
- 灾害类型
- 预警级别
- 详细描述
- 影响地块
- 发布时间

### 6. 消息通知功能 ✅

**通知触发：**
- 检测到灾害天气时自动触发
- 手动点击"发送通知"按钮

**通知内容：**
- 预警类型和级别
- 详细的预警信息
- 受影响的地块列表
- 发布时间

**通知方式（可扩展）：**
- 站内消息通知
- 短信通知
- 邮件通知
- 移动端推送

**集成示例：**
```typescript
sendNotification({
  type: 'weather_alert',
  title: `${alert.type}${alert.level}`,
  content: alert.message,
  recipients: ['field_managers', 'operators'],
  priority: alert.level === '紧急' ? 'high' : 'normal',
});
```

### 7. 数据导出功能 ✅

**导出格式：**
- CSV格式
- 包含所有气象指标
- 自动命名：`气象数据_地块_日期.csv`

**导出内容：**
- 时间
- 温度（°C）
- 湿度（%）
- 风速（m/s）
- 降雨量（mm）
- 光照强度（W/m²）
- 气压（hPa）

---

## 二、使用指南

### 快速开始

1. **配置API接口**
   - 进入"气象监测"页面
   - 点击"API配置"
   - 填写API信息并保存

2. **自动获取数据**
   - 系统每15分钟自动刷新
   - 或手动点击"刷新数据"

3. **导入历史数据**
   - 准备符合格式的Excel文件
   - 点击"导入历史数据"
   - 选择文件上传

4. **查看数据可视化**
   - 选择地块和时间范围
   - 查看实时数据卡片
   - 查看各类数据曲线图

5. **监控天气预警**
   - 系统自动检测灾害天气
   - 查看预警列表
   - 点击"发送通知"推送预警

### 高级功能

#### 历史数据分析

**温度统计：**
- 最高温度
- 最低温度
- 平均温度
- 温差

**降水统计：**
- 累计降雨
- 最大降雨
- 降雨时段
- 降雨强度

**风力统计：**
- 最大风速
- 平均风速
- 风力等级
- 主导风向

#### 气象条件评价

**有利条件分析：**
- 温度适宜性
- 光照充足度
- 降水合理性

**注意事项提示：**
- 温差预警
- 风力预警
- 天气变化提醒

---

## 三、数据存储

### 数据保存

**实时数据：**
- 每15分钟采集一次
- 保存最近30天数据
- 自动归档历史数据

**历史数据：**
- 导入的历史数据永久保存
- 支持按时间范围查询
- 支持数据导出

### 数据管理

**数据清理：**
- 自动清理超过1年的详细数据
- 保留月度统计数据
- 支持手动备份

---

## 四、系统集成

### 与其他模块集成

**地块管理：**
- 关联地块信息
- 地块级别的气象数据
- 地块级别的预警通知

**消息系统：**
- 自动推送预警消息
- 支持多种通知方式
- 消息记录可查询

**决策支持：**
- 为农事决策提供气象数据支持
- 气象数据分析和建议
- 农时安排参考

---

## 五、技术实现

### API接口设计

```typescript
interface WeatherStation {
  id: string;
  name: string;
  apiEndpoint: string;
  apiKey: string;
  latitude: number;
  longitude: number;
  enabled: boolean;
}

interface WeatherData {
  time: string;
  temperature: number;      // 温度 °C
  humidity: number;         // 湿度 %
  windSpeed: number;        // 风速 m/s
  rainfall: number;         // 降雨量 mm
  sunlight: number;         // 光照强度 W/m²
  pressure: number;         // 气压 hPa
}

interface WeatherAlert {
  id: string;
  type: '低温冻害' | '大风' | '暴雨' | '高温';
  level: '预警' | '警报' | '紧急';
  message: string;
  time: string;
  affectedFields: string[];
}
```

### 自动刷新机制

```typescript
useEffect(() => {
  if (weatherStation.enabled) {
    // 首次加载
    fetchWeatherData();
    
    // 每15分钟自动刷新一次
    const interval = setInterval(() => {
      fetchWeatherData();
    }, 15 * 60 * 1000);

    return () => clearInterval(interval);
  }
}, [weatherStation.enabled]);
```

### 预警检测算法

```typescript
const checkWeatherAlerts = (data: WeatherData[]) => {
  const alerts: WeatherAlert[] = [];
  
  data.forEach((d) => {
    // 低温冻害预警
    if (d.temperature <= 3) {
      alerts.push({...});
    }
    
    // 大风预警
    if (d.windSpeed >= 10) {
      alerts.push({...});
    }
    
    // 暴雨预警
    if (d.rainfall >= 50) {
      alerts.push({...});
    }
    
    // 高温预警
    if (d.temperature >= 35) {
      alerts.push({...});
    }
  });

  return alerts;
};
```

---

## 六、常见问题

### Q1: API配置后无法获取数据？
**A:** 请检查：
1. API密钥是否正确
2. 接口地址是否可访问
3. 经纬度坐标是否准确
4. 网络连接是否正常

### Q2: Excel导入失败？
**A:** 请确保：
1. 文件格式正确（.xlsx, .xls, .csv）
2. 列名与要求一致
3. 时间格式正确（YYYY-MM-DD HH:mm）
4. 数据类型正确（数值类型）

### Q3: 预警通知没有收到？
**A:** 请检查：
1. 是否启用了预警功能
2. 预警规则是否触发
3. 通知方式是否配置
4. 接收人员是否设置

### Q4: 历史数据不显示？
**A:** 可能原因：
1. 日期选择不在数据范围内
2. 数据尚未导入
3. 地块选择不正确

---

## 七、最佳实践

### 数据采集
- 建议配置可靠的气象API服务
- 定期备份历史数据
- 保持数据采集的连续性

### 预警管理
- 根据实际情况调整预警阈值
- 及时响应预警通知
- 记录预警处理结果

### 数据分析
- 定期查看气象数据趋势
- 结合农事安排分析
- 做好灾害天气防范

---

## 八、未来扩展

### 计划功能
- [ ] 更多气象指标（紫外线、能见度等）
- [ ] 气象灾害影响评估
- [ ] 气象保险联动
- [ ] 移动端APP支持
- [ ] AI气象预测模型
- [ ] 区域气象对比分析

---

## 联系支持

如有任何问题或建议，请联系系统管理员。

**系统版本：** v1.0
**更新日期：** 2024-10-18
