OPER-002: 作业面积测量
优先级: 🟡 中 (16.0分) | 实施周期: 2-3周
客户原话
"我们给农户耕地、收割,最头疼的就是测面积。地块不规则,有的是三角形,有的是梯形,凭眼睛估计,说是10亩,农户说只有8亩,经常扯皮。有时候拿皮尺量,太费时间,一块地要量半天。现在有GPS测亩仪,但是信号不好的地方测不准,而且每次测的结果都不一样。作业完了,农户不认账,说我们多算了面积,多收了钱。我们也没办法证明,只能吃哑巴亏。想要个准确的测量方法,最好能自动测,测完了农户也认可,不要再扯皮了。"
—— 某农机合作社机手
客户类型需求差异
农机合作社(10-50台,本地作业)
需求程度: ⭐⭐⭐⭐⭐ 必需
核心需求:
- 面积测量准确(误差<3%)
- 操作简单,机手易上手
- 测量结果农户认可
- 手机端即可操作
- 测量记录可追溯
关键功能:
- GPS自动测量
- 手动修正功能
- 地块轮廓显示
- 测量结果确认
- 历史记录查询
不需要的功能:
- 高精度测绘(厘米级)
- 复杂的地形分析
- 卫星影像对比
农机服务站(跨区作业)
需求程度: ⭐⭐⭐⭐⭐ 必需
核心需求:
- 跨区域测量数据同步
- 离线测量(网络不好时)
- 测量数据云端存储
- 多设备数据共享
- 测量轨迹回放
关键功能:
- 离线测量
- 云端同步
- 轨迹回放
- 数据导出
- 多设备协同
不需要的功能:
- 内部成本分摊
- 地块产权管理
大型农场(自有农机队)
需求程度: ⭐⭐⭐⭐ 重要
核心需求:
- 地块档案管理
- 历史作业面积对比
- 面积数据分析
- 与地块档案关联
- 作业覆盖率分析
关键功能:
- 地块档案
- 面积对比
- 覆盖率分析
- 数据统计
- 报表生成
不需要的功能:
- 对外收费
- 客户确认
农机租赁公司(租赁+作业)
需求程度: ⭐⭐⭐⭐ 重要
核心需求:
- 租赁方和承租方双确认
- 测量数据作为计费依据
- 测量记录防篡改
- 纠纷时可追溯
- 测量数据导出
关键功能:
- 双方确认
- 数据防篡改
- 电子签名
- 数据导出
- 纠纷追溯
业务场景描述
典型场景
场景1: 不规则地块面积测不准
- 农户家地块是不规则多边形
- 机手凭经验估计10亩
- 作业完了按10亩收费
- 农户拿出土地证,实际只有8.5亩
- 双方争执,最后只能按8.5亩收费
- 机手觉得吃亏,农户觉得不信任
场景2: GPS测亩仪信号差,测量不准
- 地块周围有树木和建筑遮挡
- GPS信号弱,定位漂移
- 同一块地测3次,结果分别是9.2亩、10.5亩、8.8亩
- 农户不认可,要求重新测量
- 反复测量,耽误时间,影响作业效率
场景3: 手工测量费时费力
- 地块面积大,形状不规则
- 用皮尺测量,需要2个人配合
- 测量一块地要半小时
- 一天作业10块地,光测量就要5小时
- 严重影响作业效率
场景4: 测量结果无法证明,纠纷难解决
- 作业完了,农户说面积测多了
- 机手说当时测的就是这么多
- 没有测量轨迹记录,无法证明
- 农户不肯付全款
- 只能协商解决,机手吃亏
场景5: 历史测量数据丢失,重复测量
- 去年给这个农户作业过,测过面积
- 今年再来,找不到去年的测量记录
- 只能重新测量
- 农户说去年测的是9亩,今年怎么变成10亩了
- 无法解释,影响信任
核心痛点
- 测量不准确 - 不规则地块,GPS信号差,测量误差大
- 操作复杂 - 测亩仪操作复杂,机手不会用
- 结果有争议 - 测量结果农户不认可,容易扯皮
- 无法追溯 - 没有测量轨迹记录,纠纷时无法证明
- 效率低 - 手工测量费时费力,影响作业效率
业务流程图
当前人工流程
痛点:
- 目测估计误差大,农户不认可
- 皮尺测量费时费力,效率低
- GPS测亩仪信号差时不准确
- 测量结果无记录,纠纷时无法证明
- 重复测量浪费时间
系统化流程
优势:
- GPS自动记录,无需人工操作
- 实时显示面积,即测即知
- 地块轮廓可视化,农户直观认可
- 测量记录自动保存,可追溯
- 关联作业订单,数据完整
用户故事
故事1: 机手快速测量地块面积
作为 农机机手 我想要 用手机快速测量地块面积 以便 准确计算作业费用,避免与农户扯皮
验收标准:
- 打开手机APP,点击"测量面积"
- 沿着地块边界走一圈,系统自动记录GPS轨迹
- 回到起点,系统自动计算面积,显示地块轮廓
- 测量误差<3%
- 测量时间<5分钟
故事2: 农户确认测量结果
作为 农户 我想要 看到地块的测量轨迹和面积 以便 确认面积准确,放心支付作业费用
验收标准:
- 机手测量完成后,手机上显示地块轮廓图
- 可以看到GPS轨迹和计算出的面积
- 可以在手机上签字确认
- 确认后自动生成测量记录
故事3: 管理员查询历史测量记录
作为 合作社管理员 我想要 查询某个地块的历史测量记录 以便 在发生纠纷时提供证据
验收标准:
- 在系统中输入地块编号或农户姓名
- 显示该地块的所有历史测量记录
- 可以查看每次测量的轨迹图、面积、时间、机手
- 可以导出测量记录PDF
故事4: 系统自动关联测量数据到订单
作为 系统 我想要 自动将测量数据关联到作业订单 以便 作业费用计算有准确依据
验收标准:
- 测量完成后,自动识别当前作业订单
- 将测量面积自动填入订单的"作业面积"字段
- 根据面积和单价自动计算作业费用
- 订单详情中可以查看测量轨迹图
故事5: 离线测量,联网后自动同步
作为 跨区作业的机手 我想要 在没有网络的地方也能测量 以便 不影响作业进度
验收标准:
- 离线状态下可以正常使用GPS测量功能
- 测量数据保存在本地
- 恢复网络后,自动上传测量数据到云端
- 上传成功后提示"数据已同步"
数据模型
核心实体
1. 测量记录 (MeasurementRecord)
interface MeasurementRecord {
id: string // 测量记录ID
recordNo: string // 测量编号: MEAS-YYYYMMDD-XXXX
orderId?: string // 关联订单ID
fieldId?: string // 关联地块ID
customerId: string // 客户ID
customerName: string // 客户姓名
// 测量信息
measurementType: 'auto' | 'manual' // 测量方式: 自动/手动
area: number // 测量面积(亩)
perimeter: number // 周长(米)
coordinates: Coordinate[] // GPS坐标点数组
centerPoint: Coordinate // 中心点坐标
// 测量质量
accuracy: number // 精度(米)
signalQuality: 'good' | 'medium' | 'poor' // 信号质量
pointCount: number // 采样点数量
// 确认信息
status: 'draft' | 'confirmed' | 'disputed' // 状态
confirmedBy?: string // 确认人
confirmedAt?: Date // 确认时间
signature?: string // 电子签名(Base64)
// 操作信息
operatorId: string // 测量人ID
operatorName: string // 测量人姓名
deviceId: string // 设备ID
measuredAt: Date // 测量时间
// 备注
notes?: string // 备注
photos?: string[] // 现场照片
// 系统字段
createdAt: Date
updatedAt: Date
syncStatus: 'local' | 'synced' // 同步状态
}
interface Coordinate {
latitude: number // 纬度
longitude: number // 经度
altitude?: number // 海拔
accuracy?: number // 精度
timestamp: Date // 采集时间
}2. 地块档案 (Field)
interface Field {
id: string // 地块ID
fieldNo: string // 地块编号
customerId: string // 所属客户ID
customerName: string // 客户姓名
// 地块信息
name: string // 地块名称
location: string // 地块位置
area: number // 标准面积(亩)
coordinates: Coordinate[] // 地块边界坐标
// 地块属性
soilType?: string // 土壤类型
cropType?: string // 种植作物
irrigation?: boolean // 是否有灌溉
// 测量历史
measurementCount: number // 测量次数
lastMeasuredAt?: Date // 最后测量时间
lastMeasuredArea?: number // 最后测量面积
// 系统字段
createdAt: Date
updatedAt: Date
}3. 测量设备 (MeasurementDevice)
interface MeasurementDevice {
id: string // 设备ID
deviceNo: string // 设备编号
deviceType: 'phone' | 'tablet' | 'gps_meter' // 设备类型
// 设备信息
brand: string // 品牌
model: string // 型号
imei?: string // IMEI号
// GPS信息
gpsModule: string // GPS模块型号
accuracy: number // 标称精度(米)
// 使用信息
operatorId?: string // 当前使用人
lastUsedAt?: Date // 最后使用时间
measurementCount: number // 累计测量次数
// 校准信息
lastCalibratedAt?: Date // 最后校准时间
calibrationStatus: 'valid' | 'expired' // 校准状态
// 系统字段
status: 'active' | 'inactive' | 'maintenance'
createdAt: Date
updatedAt: Date
}数据关系
接口设计
1. 开始测量
POST /api/measurements/start
Request:
{
orderId?: string, // 关联订单ID(可选)
fieldId?: string, // 关联地块ID(可选)
customerId: string, // 客户ID
measurementType: 'auto' | 'manual', // 测量方式
deviceId: string // 设备ID
}
Response:
{
code: 0,
message: "success",
data: {
measurementId: string, // 测量记录ID
recordNo: string, // 测量编号
startTime: string // 开始时间
}
}2. 上传GPS坐标点
POST /api/measurements/{measurementId}/coordinates
Request:
{
coordinates: [
{
latitude: number,
longitude: number,
altitude?: number,
accuracy?: number,
timestamp: string
}
]
}
Response:
{
code: 0,
message: "success",
data: {
receivedCount: number, // 接收到的坐标点数
currentArea: number, // 当前计算的面积
currentPerimeter: number // 当前周长
}
}3. 完成测量
POST /api/measurements/{measurementId}/complete
Request:
{
notes?: string, // 备注
photos?: string[] // 现场照片(Base64)
}
Response:
{
code: 0,
message: "success",
data: {
measurementId: string,
recordNo: string,
area: number, // 最终面积
perimeter: number, // 周长
accuracy: number, // 精度
signalQuality: string, // 信号质量
coordinates: Coordinate[], // 坐标点数组
mapImageUrl: string // 地块轮廓图URL
}
}4. 客户确认测量结果
POST /api/measurements/{measurementId}/confirm
Request:
{
confirmedBy: string, // 确认人姓名
signature: string, // 电子签名(Base64)
notes?: string // 备注
}
Response:
{
code: 0,
message: "success",
data: {
measurementId: string,
status: "confirmed",
confirmedAt: string,
certificateUrl: string // 测量证明PDF URL
}
}5. 查询测量记录
GET /api/measurements?customerId={customerId}&fieldId={fieldId}&startDate={startDate}&endDate={endDate}
Response:
{
code: 0,
message: "success",
data: {
total: number,
list: [
{
measurementId: string,
recordNo: string,
customerName: string,
area: number,
status: string,
measuredAt: string,
operatorName: string
}
]
}
}6. 获取测量详情
GET /api/measurements/{measurementId}
Response:
{
code: 0,
message: "success",
data: {
// MeasurementRecord 完整信息
id: string,
recordNo: string,
area: number,
coordinates: Coordinate[],
mapImageUrl: string,
// ... 其他字段
}
}7. 导出测量证明
GET /api/measurements/{measurementId}/certificate
Response:
{
code: 0,
message: "success",
data: {
pdfUrl: string, // PDF文件URL
expiresAt: string // 链接过期时间
}
}关键业务规则
1. 测量编号规则
- 格式:
MEAS-YYYYMMDD-XXXX - 示例:
MEAS-20240307-0001 - 每天从0001开始编号
- 测量编号全局唯一
2. 面积计算规则
- 使用GPS坐标点计算多边形面积
- 采用高斯面积公式(Shoelace Formula)
- 自动过滤异常坐标点(偏离过大)
- 最少需要3个有效坐标点
- 面积单位统一为亩(1亩 = 666.67平方米)
3. 测量精度要求
- GPS定位精度 < 5米: 信号良好
- GPS定位精度 5-10米: 信号一般
- GPS定位精度 > 10米: 信号差,建议重新测量
- 采样点间隔 < 10米: 精度高
- 采样点数量 > 20个: 精度可靠
4. 测量确认规则
- 测量完成后24小时内需要客户确认
- 客户确认后测量结果不可修改
- 未确认的测量记录可以重新测量
- 客户提出异议时,标记为"有争议",需要重新测量
5. 数据同步规则
- 离线测量数据保存在本地数据库
- 恢复网络后自动上传到云端
- 上传失败时每5分钟重试一次
- 本地数据保留7天后自动清理(已同步的数据)
6. 地块档案关联规则
- 首次测量某地块时,自动创建地块档案
- 后续测量时,可选择关联已有地块档案
- 同一地块的历史测量记录可对比
- 面积变化超过10%时,系统提示异常
技术实现要点
1. GPS定位技术
技术选型:
- Android: 使用 Google Location Services API
- iOS: 使用 Core Location Framework
- 定位模式: 高精度模式(GPS + 网络定位)
优化策略:
- 开始测量前检查GPS信号强度
- 信号弱时提示用户移动到空旷地带
- 自动过滤定位精度>10米的坐标点
- 采用卡尔曼滤波算法平滑GPS轨迹
2. 面积计算算法
算法选择: Shoelace Formula (鞋带公式)
function calculateArea(coordinates: Coordinate[]): number {
let area = 0;
const n = coordinates.length;
for (let i = 0; i < n; i++) {
const j = (i + 1) % n;
area += coordinates[i].longitude * coordinates[j].latitude;
area -= coordinates[j].longitude * coordinates[i].latitude;
}
area = Math.abs(area) / 2;
// 转换为平方米(考虑地球曲率)
const metersPerDegree = 111320; // 赤道附近1度约等于111.32公里
const areaInSquareMeters = area * metersPerDegree * metersPerDegree;
// 转换为亩
const areaInMu = areaInSquareMeters / 666.67;
return Math.round(areaInMu * 100) / 100; // 保留2位小数
}3. 离线存储
技术方案:
- 使用 SQLite 本地数据库存储测量数据
- 使用 IndexedDB (Web端) 或 Realm (移动端)
- 测量轨迹坐标压缩存储(Douglas-Peucker算法)
数据结构:
CREATE TABLE measurement_records (
id TEXT PRIMARY KEY,
record_no TEXT UNIQUE,
customer_id TEXT,
area REAL,
coordinates TEXT, -- JSON格式存储
sync_status TEXT, -- 'local' | 'synced'
created_at INTEGER,
updated_at INTEGER
);
CREATE INDEX idx_sync_status ON measurement_records(sync_status);
CREATE INDEX idx_created_at ON measurement_records(created_at);4. 地图可视化
技术选型:
- 移动端: 高德地图 SDK / 百度地图 SDK
- Web端: Leaflet.js + OpenStreetMap
- 地块轮廓绘制: Polygon 图层
实现要点:
// 绘制地块轮廓
function drawFieldPolygon(map: Map, coordinates: Coordinate[]) {
const polygon = new Polygon({
path: coordinates.map(c => [c.latitude, c.longitude]),
strokeColor: '#FF0000',
strokeWeight: 2,
fillColor: '#FF0000',
fillOpacity: 0.3
});
polygon.setMap(map);
// 自动调整地图视野
map.fitBounds(polygon.getBounds());
return polygon;
}5. 电子签名
技术方案:
- 使用 Canvas 实现手写签名
- 签名数据转换为 Base64 编码
- 签名图片压缩后上传
// 签名组件
class SignaturePad {
private canvas: HTMLCanvasElement;
private ctx: CanvasRenderingContext2D;
private isDrawing: boolean = false;
startDrawing(x: number, y: number) {
this.isDrawing = true;
this.ctx.beginPath();
this.ctx.moveTo(x, y);
}
draw(x: number, y: number) {
if (!this.isDrawing) return;
this.ctx.lineTo(x, y);
this.ctx.stroke();
}
endDrawing() {
this.isDrawing = false;
}
getSignatureBase64(): string {
return this.canvas.toDataURL('image/png');
}
clear() {
this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
}
}客户类型需求差异
农机合作社(10-50台,本地作业)
核心诉求: 测量简单准确,农户认可,操作方便
功能侧重:
- GPS自动测量,无需复杂操作
- 地块轮廓可视化,农户直观认可
- 手机端操作,随时随地测量
- 测量记录自动保存,可追溯
典型场景:
- 机手到达地块,打开手机APP
- 点击"开始测量",沿地块边界走一圈
- 系统自动记录GPS轨迹,实时显示面积
- 测量完成,显示地块轮廓图
- 农户在手机上签字确认
- 测量数据自动关联到作业订单
不需要的功能:
- 高精度测绘(厘米级)
- 复杂的地形分析
- 卫星影像对比
- 地块产权管理
农机服务站(跨区作业)
核心诉求: 跨区域测量,离线可用,数据同步
功能侧重:
- 离线测量功能(网络不好时)
- 测量数据云端存储
- 多设备数据共享
- 测量轨迹回放
- 数据导出功能
典型场景:
- 跨区作业,到达陌生地块
- 网络信号不好,使用离线测量
- 测量数据保存在本地
- 恢复网络后,自动上传到云端
- 其他设备可以查看测量记录
- 导出测量数据给客户
特殊需求:
- 支持多省份地图数据离线下载
- 测量数据按区域分类管理
- 跨区域测量数据统计分析
大型农场(自有农机队)
核心诉求: 地块档案管理,历史数据对比,数据分析
功能侧重:
- 地块档案管理
- 历史作业面积对比
- 面积数据分析
- 与地块档案关联
- 作业覆盖率分析
典型场景:
- 农场有100多块地,建立地块档案
- 每块地有固定编号和标准面积
- 每次作业前,选择地块档案
- 测量实际作业面积
- 对比标准面积,分析覆盖率
- 统计每块地的作业历史
特殊需求:
- 地块档案批量导入
- 地块面积变化趋势分析
- 作业覆盖率热力图
- 与ERP系统集成
农机租赁公司(租赁+作业)
核心诉求: 双方确认,数据防篡改,纠纷追溯
功能侧重:
- 租赁方和承租方双确认
- 测量数据作为计费依据
- 测量记录防篡改
- 纠纷时可追溯
- 测量数据导出
典型场景:
- 承租方租用设备作业
- 作业前,承租方测量地块面积
- 租赁方远程查看测量结果
- 双方在线确认测量数据
- 测量数据作为计费依据
- 作业完成后,根据测量面积结算
特殊需求:
- 测量数据区块链存证
- 双方电子签名
- 测量数据不可修改
- 纠纷仲裁证据导出
系统交互
上游系统
- 订单管理系统: 获取作业订单信息,关联测量数据
- 客户管理系统: 获取客户信息,地块档案
- 设备管理系统: 获取设备信息,GPS设备状态
下游系统
- 计费系统: 提供作业面积数据,作为计费依据
- 作业管理系统: 提供地块信息,支撑作业规划
- 数据分析系统: 提供测量数据,支撑业务分析
集成方式
实施建议
第一阶段: 核心功能(1周)
目标: 实现基本的GPS测量功能
任务:
- [ ] GPS定位功能开发
- [ ] 面积计算算法实现
- [ ] 测量记录保存
- [ ] 地块轮廓显示
- [ ] 基础UI界面
交付物:
- 可用的测量功能
- 测量记录列表
- 地块轮廓图
第二阶段: 确认与同步(1周)
目标: 实现客户确认和数据同步
任务:
- [ ] 电子签名功能
- [ ] 客户确认流程
- [ ] 离线存储功能
- [ ] 数据同步功能
- [ ] 测量证明导出
交付物:
- 客户确认功能
- 离线测量功能
- 测量证明PDF
第三阶段: 优化完善(持续)
目标: 优化用户体验,完善功能
任务:
- [ ] GPS精度优化
- [ ] 地块档案管理
- [ ] 历史数据对比
- [ ] 数据统计分析
- [ ] 用户反馈收集
交付物:
- 优化后的测量功能
- 地块档案功能
- 数据分析报表
成功案例
案例1: 某农机合作社 - 测量纠纷减少80%
实施前:
- 凭经验估算面积,误差大
- 农户不认可,经常扯皮
- 每月有5-10起面积纠纷
- 纠纷处理耗时耗力
实施后:
- GPS自动测量,误差<3%
- 地块轮廓可视化,农户认可
- 电子签名确认,有据可查
- 每月纠纷减少到1-2起
- 纠纷处理时间缩短50%
关键数据:
- 测量时间: 从15分钟降到5分钟
- 测量准确率: 从70%提升到97%
- 客户满意度: 从60分提升到85分
- 纠纷率: 从8%降到1.5%
案例2: 某农机服务站 - 跨区作业效率提升40%
实施前:
- 跨区作业,地块陌生
- 手工测量,费时费力
- 测量数据无法共享
- 重复测量浪费时间
实施后:
- 离线测量,网络不好也能用
- 测量数据云端同步
- 多设备共享测量记录
- 历史地块无需重复测量
关键数据:
- 测量效率: 提升40%
- 数据准确率: 提升30%
- 客户投诉: 减少60%
- 作业量: 增加25%
案例3: 某大型农场 - 地块管理规范化
实施前:
- 100多块地,面积不清楚
- 每次作业都要重新测量
- 作业覆盖率无法统计
- 地块数据分散,难管理
实施后:
- 建立地块档案,面积清晰
- 关联历史测量记录
- 作业覆盖率自动统计
- 地块数据集中管理
关键数据:
- 地块档案: 建立120个
- 测量次数: 减少70%
- 数据准确率: 提升50%
- 管理效率: 提升60%
相关场景
- OPER-001 订单管理: 测量数据关联到作业订单
- BILL-001 费用计算: 测量面积作为计费依据
- OPER-003 质量检查: 测量数据用于质量验收
- OPER-004 作业记录: 测量轨迹作为作业证明
- MACH-001 设备档案: GPS设备管理和校准
常见问题
Q1: GPS信号不好怎么办?
A:
- 移动到空旷地带,避开树木和建筑遮挡
- 等待GPS信号稳定后再开始测量
- 如果信号持续不好,可以使用手动测量模式
- 手动标记地块顶点,系统自动计算面积
Q2: 测量结果不准确怎么办?
A:
- 检查GPS定位精度,精度>10米时建议重新测量
- 检查采样点数量,点数<20个时精度较低
- 沿地块边界慢速行走,确保轨迹完整
- 对比历史测量记录,面积变化>10%时需要核实
Q3: 农户不认可测量结果怎么办?
A:
- 显示地块轮廓图,让农户直观看到测量范围
- 对比土地证或承包合同上的面积
- 如果差异较大,可以重新测量
- 双方协商一致后,电子签名确认
Q4: 离线测量的数据会丢失吗?
A:
- 离线测量数据保存在本地数据库,不会丢失
- 恢复网络后自动上传到云端
- 上传失败时会自动重试
- 本地数据保留7天,确保有足够时间同步
Q5: 如何证明测量数据没有被篡改?
A:
- 测量数据包含GPS轨迹和时间戳
- 客户电子签名确认后,数据不可修改
- 测量记录有完整的操作日志
- 可以导出测量证明PDF,作为法律证据
本场景文档版本: v2.0 | 最后更新: 2024-03-07