20251124炳辰版本

This commit is contained in:
wxlong
2025-11-25 17:51:39 +08:00
commit 537fba0e06
269 changed files with 34909 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
从总体上看,任务自动分配可以分为两部分,一个是分配工作区域,另一个是分配数据。
# 分配工作区域
目前工作工作区域分配的前提是用户已经上传了包含整个工作区域信息的 Shapefile。
如果用户设置了 [Geohash](https://halfrost.com/go_spatial_search/) 精度,将整个工作区域的外接矩形按照用户选择的精度划分为若干个 Geohash 网格(如果按照用户选择的精度划分出的网格数量小于外业人员数量,则尝试将精度加 1 后再次划分),然后将这些网格尽可能平均地分配给外业人员。
如果用户没有指定 Geohash 精度,则按照以下方法将 Shapefile 中的多边形分配给外业人员:
1. 如果多边形数量等于外业人员数量,随机分配;
2. 如果多边形数量大于 1 但小于外业人员数量,以多边形的面积为权重进行分配,即多边形的面积越大,分配到的人员数量就越多;
3. 如果多边形数量大于外业人员数量,对多边形进行 k-means 聚类,类簇数量等于外业人员数量,然后随机分配每个类簇;
4. 如果只有一个多边形而且外业人员数量大于 1将这个多边形的外接矩形按照合适的 Geohash 精度划分为若干个网格,然后将这些网格尽可能平均地分配给外业人员;确定 Geohash 精度的原则是保证划分后得到的网格数量不小于外业人员数量。
# 分配数据
如果用户提前导入了一些数据,则需要按照以下方法分配数据:
1. 如果只有一个外业人员,将所有数据都分配给该人员;
2. 如果外业人员数量大于 1首先计算每个数据的质心坐标相同的质心只保留一个然后按照以下方法分配
1. 如果质心数量小于外业人员数量,将所有数据尽可能平均地分配给外业人员;
2. 否则,将质心进行聚类,类簇数量等于外业人员数量,然后随机分配每个类簇。

View File

@@ -0,0 +1,35 @@
在数据库中,每条数据都有 3 个字段:
- `collector`:这条数据的上传者的 ID
- `reviewer`:需要到实地对这条数据进行**核查**的外业人员的 ID大多数情况下 `collector != reviewer`
- `status`:状态字段。
将这 3 个字段结合起来分析,可以识别一条数据在整个工作流程中当前所处的阶段。
一条数据从被导入数据库中到被核查,会经历以下 3 个阶段:
| collector | reviewer | status | 阶段 |
| --------- |----------| ------ |---------------------|
| -1 | -1 | 0 | 数据刚被导入到数据库中 |
| -1 | A | 0 | 管理员将数据分配给外业人员 A |
| -1 | A | 1 | 外业人员 A 已经在实地核查过这条数据 |
如果一条数据原本不在数据库中(即所谓的“新增”数据),那么它从被上传到被核查,会经历以下 3 个阶段:
| collector | reviewer | status | 阶段 |
|-----------|----------|--------|---------------------|
| A | -1 | 1 | 外业人员 A 上传了这条数据 |
| A | B | 0 | 管理员将数据分配给外业人员 B |
| A | B | 1 | 外业人员 B 已经在实地核查过这条数据 |
管理员还可以在网页端对**已经被外业人员核查过的数据**进行审核,如果管理员认为数据没问题,则标记为审核通过:
| status |
|--------|
| 2 |
如果管理员将数据标记为审核未通过:
| status |
|--------|
| -1 |