From 5353617c7b2135ab00f98d8e05b2f8dfb2e096ed Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期三, 30 六月 2021 09:55:40 +0800
Subject: [PATCH] 1. 新增污染权重分析功能

---
 src/main/kotlin/com/flightfeather/uav/model/epw/WindDirWeight.kt |   28 +++++++++++++++++++---------
 1 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/src/main/kotlin/com/flightfeather/uav/model/epw/WindDirWeight.kt b/src/main/kotlin/com/flightfeather/uav/model/epw/WindDirWeight.kt
index 16baf70..1ede99c 100644
--- a/src/main/kotlin/com/flightfeather/uav/model/epw/WindDirWeight.kt
+++ b/src/main/kotlin/com/flightfeather/uav/model/epw/WindDirWeight.kt
@@ -1,23 +1,33 @@
 package com.flightfeather.uav.model.epw
 
+import com.flightfeather.uav.lightshare.bean.CompanySOP
+import com.flightfeather.uav.lightshare.bean.DataVo
 import com.flightfeather.uav.model.BaseWeight
+import com.flightfeather.uav.socket.eunm.FactorType
 import kotlin.math.PI
 import kotlin.math.abs
 import kotlin.math.atan2
-import kotlin.math.sqrt
 
 /**
- *
+ * 椋庡悜鏉冮噸
  */
-class WindDirWeight : BaseWeight() {
+class WindDirWeight : BaseWeight<DataVo, CompanySOP>() {
+
+    override val tag: String = "椋庡悜鏉冮噸"
+
     override val sectionValues: List<Double> = listOf(22.5, 67.5, 112.5, 157.5, 180.0)
+
     override val weights: List<Double> = listOf(1.0, 0.8, 0.5, 0.2, 0.1)
 
-    fun getWeight(deg: Double):Double {
-        return weightCal(deg)
+    override fun onWeightFactor(mData: DataVo, sop: CompanySOP): Double? {
+        val p1 = Pair(mData.lng!!, mData.lat!!)
+        val p2 = Pair(sop.ciLongitude!!.toDouble(), sop.ciLatitude!!.toDouble())
+        val wd = mData.getFactorData(FactorType.WIND_DIRECTION) ?: 0.0
+        return getAngle(p1, p2, wd)
     }
 
-    fun getWeight(p1: Pair<Double, Double>, p2: Pair<Double, Double>, wd: Int): Double {
+
+    private fun getAngle(p1: Pair<Double, Double>, p2: Pair<Double, Double>, wd: Double): Double {
         val dx = p2.first - p1.first
         val dy = p2.second - p1.second
         var x1 = atan2(dy, dx) * 180 / PI
@@ -25,8 +35,8 @@
         var x2 = 270 - wd
         if (x2 < 0) x2 += 360
         x1 = abs(x2 - x1)
-        if (x1>180) x1 = 360 - x1
-
-        return weightCal(x1)
+        if (x1 > 180) x1 = 360 - x1
+//        println("澶硅锛�$x1")
+        return x1
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3