农业作物推荐系统
项目概述
基于Spark智能推荐算法的农业作物推荐系统,为农民提供精准的作物种植建议。
技术栈
- 后端框架: Flask 3.0
- 数据库: SQLite + SQLAlchemy
- 前端框架: Bootstrap 5
- 可视化: ECharts 5.4
- 推荐算法: Spark ML风格推荐引擎
核心功能
用户端功能
-
用户认证
- 用户注册/登录
- 会话管理
- 安全认证
-
智能推荐
- 基于土壤类型匹配
- 基于气候条件分析
- 基于季节适宜度评估
- 基于经济效益计算
- 多维度综合评分
-
作物库
- 作物浏览和搜索
- 作物详细信息
- 分类筛选
- 市场价格对比
-
收益计算器
- 实时计算预估产量
- 实时计算预估收益
- 可调整种植面积
-
个人中心
- 历史推荐记录
- 用户信息管理
管理端功能
-
仪表盘
- 实时统计数据
- 关键指标展示
- 快捷操作入口
-
用户管理
- 用户列表查看
- 用户信息编辑
- 角色权限管理
-
作物管理
- 作物增删改查
- 批量管理
- 分类管理
-
土壤管理
- 土壤类型维护
- 土壤参数管理
- 养分数据管理
-
数据分析
- 作物价格分布图
- 类别占比饼图
- 用户推荐统计
- 产量分析柱状图
- 系统数据总览
推荐算法
采用多维度加权评分的推荐算法:
评分维度
-
土壤匹配度 (30%)
- 土壤类型匹配
- 养分指标分析
- 排水性能评估
-
气候适应度 (25%)
- 温度范围匹配
- 湿度条件分析
- 降水需求评估
-
季节适宜度 (20%)
- 种植季节匹配
- 生长周期评估
- 收获时间分析
-
经济效益 (25%)
- 市场价格评估
- 产量潜力分析
- 综合收益预测
推荐流程
用户输入条件
↓
提取作物特征
↓
计算各维度分数
↓
加权综合评分
↓
排序并返回Top-K
↓
生成推荐理由
数据库设计
核心数据表
-
User(用户表)
- 用户基本信息
- 登录认证信息
- 角色权限
-
Crop(作物表)
- 作物基本信息
- 生长参数
- 市场数据
- 种植要求
-
Soil(土壤表)
- 土壤类型信息
- 化学指标
- 物理特性
-
Climate(气候表)
- 地区气候数据
- 温湿度信息
- 降水数据
-
Recommendation(推荐表)
- 推荐记录
- 评分数据
- 推荐理由
-
UserSoil(用户土壤表)
- 用户土地信息
- 土壤关联
- 面积数据
项目结构
agricultural_recommendation_system/
├── app/
│ ├── __init__.py # Flask应用工厂
│ ├── models.py # 数据库模型定义
│ ├── routes/
│ │ ├── __init__.py
│ │ ├── user_routes.py # 用户端路由
│ │ ├── admin_routes.py # 管理端路由
│ │ └── api_routes.py # API接口路由
│ ├── static/ # 静态资源
│ │ ├── css/
│ │ ├── js/
│ │ └── images/
│ └── templates/ # HTML模板
│ ├── base.html # 基础模板
│ ├── user/ # 用户端模板
│ │ ├── login.html
│ │ ├── register.html
│ │ ├── index.html
│ │ ├── recommendation.html
│ │ ├── crops.html
│ │ ├── crop_detail.html
│ │ └── profile.html
│ └── admin/ # 管理端模板
│ ├── base.html
│ ├── index.html
│ ├── users.html
│ ├── crops.html
│ ├── crop_form.html
│ ├── soils.html
│ ├── soil_form.html
│ └── analytics.html
├── config/
│ └── config.py # 配置文件
├── database/
│ ├── __init__.py
│ └── init_db.py # 数据库初始化脚本
├── spark_ml/
│ ├── __init__.py
│ └── recommender.py # 推荐算法模块
├── utils/ # 工具模块
├── run.py # 应用启动入口
├── requirements.txt # Python依赖
├── .coze # 项目配置
├── README.md # 项目文档
└── 项目说明.md # 本文档
API接口
1. 推荐接口
URL : POST /api/recommend
请求参数:
json
{
"soil_type": "黑土",
"climate": "温暖湿润",
"season": "春季",
"area_size": 1,
"user_id": 2
}
响应示例:
json
{
"success": true,
"recommendations": [
{
"crop_id": 1,
"crop_name": "大豆",
"score": 81.2,
"reason": "土壤匹配优秀;气候适应优秀;季节适宜优秀;属于经济作物",
"market_price": 4800.0,
"yield_per_acre": 3000.0,
"estimated_revenue": 14400.0
}
]
}
2. 作物列表
URL : GET /api/crops
3. 作物详情
URL : GET /api/crops/<id>
4. 统计数据
URL : GET /api/stats
5. 用户推荐历史
URL : GET /api/recommendations/<user_id>
快速开始
1. 安装依赖
bash
pip install -r requirements.txt
2. 初始化数据库
bash
python database/init_db.py
3. 启动应用
bash
python run.py
4. 访问系统
打开浏览器访问: http://localhost:5000
测试账号
普通用户
- 用户名:
farmer1 - 密码:
password123
管理员
- 用户名:
admin - 密码:
admin123
特色亮点
-
智能推荐引擎
- 多维度综合评分
- 可配置权重参数
- 详细的推荐理由
-
数据可视化
- ECharts图表展示
- 实时数据更新
- 多种图表类型
-
用户体验
- 响应式设计
- Bootstrap 5美观界面
- 流畅的交互体验
-
系统架构
- 前后端分离
- RESTful API
- 模块化设计
功能实现









