From 8fc27dba6719041402e3e3c099e2f3e01d9d52c7 Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期三, 16 七月 2025 17:30:56 +0800 Subject: [PATCH] 2025.7.16 1. 修改动态溯源异常判断逻辑 --- src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedArea.kt | 66 ++++++++++++++++++++++++--------- 1 files changed, 48 insertions(+), 18 deletions(-) diff --git a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedArea.kt b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedArea.kt index fac9ce7..cd82f6c 100644 --- a/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedArea.kt +++ b/src/main/kotlin/com/flightfeather/uav/biz/sourcetrace/model/PollutedArea.kt @@ -20,18 +20,22 @@ */ constructor( + historyData: List<BaseRealTimeData>, exceptionData: List<BaseRealTimeData>, config: RTExcWindLevelConfig, - windLevelCondition: RTExcWindLevelConfig.WindLevelCondition, + windLevelCondition: RTExcWindLevelConfig.WindLevelCondition?, ) : this() { - distanceType = windLevelCondition.mutationRate.second - sourceTrace(exceptionData, config, windLevelCondition) + distanceType = windLevelCondition?.distanceType + windLevelCondition?.let { sourceTrace(historyData, exceptionData, config, it) } } var address: String? = null - // 姹℃煋鑼冨洿鍖哄煙(缁忕含搴﹀杈瑰舰) + // 姹℃煋鑼冨洿鎵囧舰鍖哄煙(缁忕含搴﹀杈瑰舰) var polygon: List<Pair<Double, Double>>? = null + + // 杩戣窛绂绘薄鏌撳渾褰㈠尯鍩� + var closePolygon: List<Pair<Double, Double>>? = null // 姹℃煋鍙兘鐨勫彂鐢熻窛绂� var distanceType: DistanceType? = null @@ -40,6 +44,7 @@ * 鍙嶅悜婧簮 */ private fun sourceTrace( + historyData: List<BaseRealTimeData>, exceptionData: List<BaseRealTimeData>, config: RTExcWindLevelConfig, windLevelCondition: RTExcWindLevelConfig.WindLevelCondition, @@ -53,15 +58,20 @@ val pair = avgData.longitude!!.toDouble() to avgData.latitude!!.toDouble() polygon = calSector( - avgData.windSpeed!!.toDouble(), + avgData.windDirection!!.toDouble(), pair, - windLevelCondition.mutationRate.second.disRange, + windLevelCondition.distanceType.disRange, config.sourceTraceDegOffset - ) + ).map { + // 灏嗗潗鏍囪浆鎹负gcj02锛堢伀鏄熷潗鏍囩郴锛夛紝鍥犱负姹℃煋婧愬満鏅俊鎭兘涓烘鍧愭爣绯� + MapUtil.wgs84ToGcj02(it) + } + + closePolygon = closeSourceTrace(historyData, pair) try { val address = AMapService.reGeo(pair) - this.address = address.township + address.street + this.address = address.district + address.township + address.street } catch (e: Exception) { e.printStackTrace() } @@ -89,25 +99,45 @@ val result = mutableListOf<Pair<Double, Double>>() if (distanceRange.first == .0) { - result.add(center) +// result.add(center) + var startDeg = 0 + while (startDeg <= 360) { + val p = MapUtil.getPointByLen(center, distanceRange.second, startDeg * PI / 180) + result.add(p) + startDeg++ + } } else { - // 浠庡紑濮嬭搴﹀惊鐜绠楀潗鏍囩偣鍊肩粨鏉熻搴︼紝姝ラ暱1掳 + // 浠庡紑濮嬭搴﹀惊鐜绠楀潗鏍囩偣鑷崇粨鏉熻搴︼紝姝ラ暱1掳 var startDeg = sDeg while (startDeg <= eDeg) { val p = MapUtil.getPointByLen(center, distanceRange.first, startDeg * PI / 180) result.add(p) startDeg++ } + if (distanceRange.second > .0) { + // 姝ゅ闇�瑕佷粠缁撴潫瑙掑害寮�濮嬪弽鍚戝惊鐜绠楄嚦寮�濮嬭搴︼紝姝ラ暱1掳锛屼娇寰椾袱缁勫潗鏍囩偣鎸夐『搴忔帓鍒楋紝鍙粯鍒跺搴旂殑澶氳竟褰� + startDeg = eDeg + while (startDeg >= sDeg) { + val p = MapUtil.getPointByLen(center, distanceRange.second, startDeg * PI / 180) + result.add(p) + startDeg-- + } + } } - if (distanceRange.second > .0) { - // 姝ゅ闇�瑕佷粠缁撴潫瑙掑害寮�濮嬪弽鍚戝惊鐜绠楄嚦寮�濮嬭搴︼紝姝ラ暱1掳锛屼娇寰椾袱缁勫潗鏍囩偣鎸夐『搴忔帓鍒楋紝鍙粯鍒跺搴旂殑澶氳竟褰� - var startDeg = eDeg - while (startDeg >= sDeg) { - val p = MapUtil.getPointByLen(center, distanceRange.second, startDeg * PI / 180) - result.add(p) - startDeg-- - } + return result + } + + private fun closeSourceTrace( + historyData: List<BaseRealTimeData>, + center: Pair<Double, Double>, + ): List<Pair<Double, Double>> { + val result = mutableListOf<Pair<Double, Double>>() + var startDeg = 0 + while (startDeg <= 360) { + val p = MapUtil.getPointByLen(center, DistanceType.TYPE1.disRange.second, startDeg * PI / 180) + result.add(p) + startDeg++ } return result -- Gitblit v1.9.3