From 53857f42f777e2b9753b8f00cce1a60ce3dcb8fd Mon Sep 17 00:00:00 2001
From: Riku <risaku@163.com>
Date: 星期三, 15 十月 2025 22:42:29 +0800
Subject: [PATCH] 2025.10.15 修改高德地图地理逆编码结果,让地理位置信息更加详细
---
src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/exceptiontype/BaseRTExcWindLevel.kt | 78 +++++++++++++++++++++++++++++----------
1 files changed, 58 insertions(+), 20 deletions(-)
diff --git a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/exceptiontype/BaseRTExcWindLevel.kt b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/exceptiontype/BaseRTExcWindLevel.kt
index b1010a1..13b0f3d 100644
--- a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/exceptiontype/BaseRTExcWindLevel.kt
+++ b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/exceptiontype/BaseRTExcWindLevel.kt
@@ -29,12 +29,30 @@
this.callback = callback
}
+ override var excludedFactor: List<FactorType> = listOf(FactorType.NO2)
+
private var callback: NewPolluteClueCallback? = null
abstract var windLevelCondition: RTExcWindLevelConfig.WindLevelCondition
+ override var judgeMethod: JudgeMethod = JudgeMethod.M1
+
override fun getExceptionType(): ExceptionType {
return ExceptionType.TYPE4
+ }
+
+ override fun judgeDataScale(p: BaseRealTimeData?, n: BaseRealTimeData): MutableMap<FactorType, Boolean> {
+ val res = mutableMapOf<FactorType, Boolean>()
+ config.factorFilter.mainList().forEach { f ->
+ if (p?.getByFactorType(f) == null || n.getByFactorType(f) == null || n.windSpeed == null) {
+ res[f] = (false)
+ return@forEach
+ }
+ val nValue = n.getByFactorType(f)!!
+ val minValue = FactorType.getVMin(f)
+ res[f] = nValue >= minValue
+ }
+ return res
}
override fun judgeException(p: BaseRealTimeData?, n: BaseRealTimeData): MutableMap<FactorType, Boolean> {
@@ -48,30 +66,33 @@
val con = windLevelCondition
if (n.windSpeed!! in con.windSpeed.first..con.windSpeed.second) {
+ println("椋庨�燂細${n.windSpeed}锛孾${con.windSpeed.first} - ${con.windSpeed.second}]")
val pValue = p.getByFactorType(f)!!
val nValue = n.getByFactorType(f)!!
// 璁$畻鍚庝竴涓暟鎹浉姣斾簬鍓嶄竴涓暟鎹殑鍙樺寲鐜�
val r = (nValue - pValue) / pValue
- val b1 = r >= con.mutationRate.first
+ val b1 = r >= con.mutationRate.first && r < con.mutationRate.second
+ println("鍥犲瓙锛�${f.des}锛屽箙搴︼細${r}锛岄檺瀹氾細${con.mutationRate.first}锛�${b1}")
res[f] = b1
} else {
res[f] = false
}
}
+
return res
}
- override fun judgeExceptionCount(tag: ExceptionTag): Boolean {
+ override fun judgeExceptionCount(tag: ExceptionTag, factorType: FactorType?): Boolean {
return tag.exceptionData.size >= windLevelCondition.countLimit
}
- override fun needCut(tag: ExceptionTag, hasException: Boolean?): Boolean {
+ override fun needCut(tag: ExceptionTag, hasException: Boolean?, data: BaseRealTimeData): Boolean {
// 鎸夌収鏃堕暱鍜岃窛绂婚檺鍒跺皢寮傚父鎴彇
if (tag.exceptionData.isEmpty()) return false
val se = tag.exceptionData.first()
- val ee = tag.exceptionData.last()
+ val ee = data
val sTime = LocalDateTime.ofInstant(se.dataTime?.toInstant(), ZoneId.systemDefault())
val eTime = LocalDateTime.ofInstant(ee.dataTime?.toInstant(), ZoneId.systemDefault())
@@ -93,29 +114,46 @@
return b1 || b2
}
- override fun immeExcCheck(tag: ExceptionTag): Boolean {
+ override fun immeExcCheck(tag: ExceptionTag, factorType: FactorType): Boolean {
// 寮傚父鍑虹幇绛変簬闄愬畾娆℃暟鏃讹紝灏遍渶瑕佸舰鎴愭薄鏌撶嚎绱�
return tag.exceptionData.size == windLevelCondition.countLimit
}
- override fun newResult(
- start: BaseRealTimeData,
- end: BaseRealTimeData?,
- factor: FactorFilter.SelectedFactor,
- exceptionData: List<BaseRealTimeData>,
- ): PollutedClue {
- return PollutedClue(start, end, factor, exceptionData, getExceptionType(), config, windLevelCondition)
+ override fun newResult(tag: ExceptionTag, factor: FactorFilter.SelectedFactor): PollutedClue {
+ return PollutedClue()
}
- override fun onNewException(
- tag: ExceptionTag,
- factor: FactorFilter.SelectedFactor,
- exceptionStatus: ExceptionStatusType,
- ) {
- super.onNewException(tag, factor, exceptionStatus)
+ override fun newResult(exceptions: List<Pair<FactorFilter.SelectedFactor, ExceptionTag>>): PollutedClue {
+ return if (exceptions.isEmpty())
+ PollutedClue()
+ else
+ PollutedClue(exceptions, getExceptionType(), config, windLevelCondition)
+ }
+
+ // override fun newResult(
+// start: BaseRealTimeData,
+// end: BaseRealTimeData?,
+// factor: FactorFilter.SelectedFactor,
+// exceptionData: List<BaseRealTimeData>,
+// ): PollutedClue {
+// return PollutedClue(start, end, factor, exceptionData, getExceptionType(), config, windLevelCondition)
+// }
+
+
+// override fun mergeExceptionResult() {
+// super.mergeExceptionResult()
+// callback?.let { func ->
+// result.forEach {
+// func.invoke(it)
+// }
+// }
+// }
+
+ override fun onNewResult(result: List<PollutedClue>) {
callback?.let { func ->
- val exc = tag.exceptionResult.last()
- func.invoke(exc as PollutedClue)
+ result.forEach {
+ func.invoke(it)
+ }
}
}
}
\ No newline at end of file
--
Gitblit v1.9.3