package com.flightfeather.uav.biz.sourcetrace.config
|
|
import com.flightfeather.uav.biz.FactorFilter
|
import com.flightfeather.uav.biz.dataanalysis.BaseAnalysisConfig
|
import com.flightfeather.uav.biz.sourcetrace.model.DistanceType
|
import com.flightfeather.uav.socket.eunm.FactorType
|
|
/**
|
*
|
* @date 2025/5/29
|
* @author feiyu02
|
*/
|
class RTExcWindLevelConfig(factorFilter: FactorFilter): BaseAnalysisConfig(factorFilter) {
|
|
inner class WindLevelCondition(
|
val windSpeed: Pair<Double, Double>,
|
val mutationRate: Pair<Double, Double>,
|
val distanceType: DistanceType,
|
val countLimit: Int,
|
){
|
}
|
// 是否联网查找对应路段地址信息
|
var isSearchAddress = true
|
|
// 限定距离内(单位:米)
|
var distanceLimit = 3000
|
// 限定时间内(单位:分钟)
|
var timeLimit = 3
|
|
// 溯源扩散偏移角度(单位:度)
|
var sourceTraceDegOffset = 120.0
|
|
// 定时线索分析时间间隔(单位:分钟)
|
var analysisPeriod = 5
|
// 定时分析间隔中,立即进行线索分析的最小线索量(单位:个)
|
var analysisCount = 4
|
|
/****数据突变*****************************************************************************/
|
// 0 - 1级风
|
var windLevelCondition1 = WindLevelCondition(
|
.0 to 1.5,
|
0.5 to Double.MAX_VALUE,
|
DistanceType.TYPE1,
|
1
|
)
|
|
// 0 - 1级风
|
var windLevelCondition1_1 = WindLevelCondition(
|
.0 to 1.5,
|
0.2 to 0.5,
|
DistanceType.TYPE2,
|
1
|
)
|
|
// 2 - 4级风
|
var windLevelCondition2 = WindLevelCondition(
|
1.6 to 7.9,
|
0.2 to Double.MAX_VALUE,
|
DistanceType.TYPE3,
|
2
|
// 1
|
)
|
|
// 5 - 6级风
|
var windLevelCondition3 = WindLevelCondition(
|
8.0 to 13.8,
|
0.1 to Double.MAX_VALUE,
|
DistanceType.TYPE4,
|
2
|
)
|
|
/****数据快速上升*****************************************************************************/
|
// 在风速处于0 - 1.5 m/s 之间时
|
var changeRateUp1 = mutableMapOf(
|
// PM2.5在一个监测周期(4秒)上升量级大于等于4μg/m³,连续发生2次
|
FactorType.PM25 to WindLevelCondition(
|
.0 to 1.5,
|
4.0 to Double.MAX_VALUE,
|
DistanceType.TYPE1,
|
// fixme: 2025.7.24 因为低风速下数据变化次数设置过多,导致遗漏识别
|
// 3
|
2
|
),
|
// PM10在一个监测周期(4秒)上升量级大于等于4μg/m³,连续发生2次
|
FactorType.PM10 to WindLevelCondition(
|
.0 to 1.5,
|
4.0 to Double.MAX_VALUE,
|
DistanceType.TYPE1,
|
2
|
),
|
// VOC在一个监测周期(4秒)上升量级大于等于6μg/m³,连续发生1次
|
FactorType.VOC to WindLevelCondition(
|
.0 to 1.5,
|
6.0 to Double.MAX_VALUE,
|
DistanceType.TYPE1,
|
1
|
),
|
)
|
// 在风速处于1.6 - 7.9 m/s 之间时
|
var changeRateUp2 = mutableMapOf(
|
// PM2.5在一个监测周期(4秒)上升量级大于等于4μg/m³,连续发生3次
|
FactorType.PM25 to WindLevelCondition(
|
1.6 to 7.9,
|
4.0 to Double.MAX_VALUE,
|
DistanceType.TYPE3,
|
2
|
),
|
// PM10在一个监测周期(4秒)上升量级大于等于4μg/m³,连续发生3次
|
FactorType.PM10 to WindLevelCondition(
|
1.6 to 7.9,
|
4.0 to Double.MAX_VALUE,
|
DistanceType.TYPE3,
|
2
|
),
|
// VOC在一个监测周期(4秒)上升量级大于等于6μg/m³,连续发生1次
|
FactorType.VOC to WindLevelCondition(
|
1.6 to 7.9,
|
6.0 to Double.MAX_VALUE,
|
DistanceType.TYPE3,
|
1
|
),
|
)
|
// 在风速处于8.0 - 13.8 m/s 之间时
|
var changeRateUp3 = mutableMapOf(
|
// PM2.5在一个监测周期(4秒)上升量级大于等于4μg/m³,连续发生3次
|
FactorType.PM25 to WindLevelCondition(
|
8.0 to 13.8,
|
4.0 to Double.MAX_VALUE,
|
DistanceType.TYPE4,
|
2
|
),
|
// PM10在一个监测周期(4秒)上升量级大于等于4μg/m³,连续发生3次
|
FactorType.PM10 to WindLevelCondition(
|
8.0 to 13.8,
|
4.0 to Double.MAX_VALUE,
|
DistanceType.TYPE4,
|
2
|
),
|
// VOC在一个监测周期(4秒)上升量级大于等于6μg/m³,连续发生1次
|
FactorType.VOC to WindLevelCondition(
|
8.0 to 13.8,
|
6.0 to Double.MAX_VALUE,
|
DistanceType.TYPE4,
|
1
|
),
|
)
|
|
/****数据快速下降提醒*****************************************************************************/
|
var changeRateWarnDown = mutableMapOf(
|
// PM2.5在一个监测周期(4秒)内下降量级大于等于2μg/m³,连续发生3次
|
FactorType.PM25 to WindLevelCondition(
|
.0 to Double.MAX_VALUE,
|
-Double.MAX_VALUE to -2.0,
|
DistanceType.TYPE1,
|
3
|
),
|
// PM10在一个监测周期(4秒)内下降量级大于等于2μg/m³,连续发生3次
|
FactorType.PM10 to WindLevelCondition(
|
.0 to Double.MAX_VALUE,
|
-Double.MAX_VALUE to -2.0,
|
DistanceType.TYPE1,
|
3
|
),
|
// VOC在一个监测周期(4秒)内下降量级大于等于3μg/m³,连续发生3次
|
FactorType.VOC to WindLevelCondition(
|
.0 to Double.MAX_VALUE,
|
-Double.MAX_VALUE to -3.0,
|
DistanceType.TYPE1,
|
3
|
),
|
)
|
|
/****数据有上升趋势提醒*****************************************************************************/
|
var changeRateWarnUp = mutableMapOf(
|
// PM2.5在一个监测周期(4秒)上升量级在2 - 4μg/m³之间,连续发生3次
|
FactorType.PM25 to WindLevelCondition(
|
.0 to Double.MAX_VALUE,
|
2.0 to 4.0,
|
DistanceType.TYPE1,
|
2
|
),
|
// PM10在一个监测周期(4秒)上升量级在2 - 4μg/m³之间,连续发生3次
|
FactorType.PM10 to WindLevelCondition(
|
.0 to Double.MAX_VALUE,
|
2.0 to 4.0,
|
DistanceType.TYPE1,
|
2
|
),
|
// VOC在一个监测周期(4秒)上升量级在3 - 6μg/m³之间,连续发生2次
|
FactorType.VOC to WindLevelCondition(
|
.0 to Double.MAX_VALUE,
|
3.0 to 6.0,
|
DistanceType.TYPE1,
|
2
|
),
|
)
|
|
/****滑动平均值异常*****************************************************************************/
|
// 求滑动平均值的数据组个数
|
var changeTrendGroup = 12
|
// 滑动平均值连续
|
var changeTrendInterval = 12
|
var changeTrendRate = .2
|
// 滑动平均值变化率异常连续次数
|
var changeTrendTimes = 3
|
}
|