From f0abc5b4a6efc5aa3493a50817d3bc1aa2347322 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期三, 12 二月 2025 17:03:00 +0800
Subject: [PATCH] 1. 新增坐标点是否在多边形内部的判定算法

---
 src/main/kotlin/com/flightfeather/uav/domain/entity/BaseRealTimeData.kt |   39 ++++++++++++++++++++-------------------
 1 files changed, 20 insertions(+), 19 deletions(-)

diff --git a/src/main/kotlin/com/flightfeather/uav/domain/entity/BaseRealTimeData.kt b/src/main/kotlin/com/flightfeather/uav/domain/entity/BaseRealTimeData.kt
index 8c9f9df..d4d315c 100644
--- a/src/main/kotlin/com/flightfeather/uav/domain/entity/BaseRealTimeData.kt
+++ b/src/main/kotlin/com/flightfeather/uav/domain/entity/BaseRealTimeData.kt
@@ -1,7 +1,7 @@
 package com.flightfeather.uav.domain.entity
 
-import com.flightfeather.uav.common.utils.DateUtil
 import com.flightfeather.uav.biz.dataprocess.AvgPair
+import com.flightfeather.uav.common.utils.DateUtil
 import com.flightfeather.uav.lightshare.bean.DataVo
 import com.flightfeather.uav.socket.bean.AirData
 import com.flightfeather.uav.socket.eunm.FactorType
@@ -11,7 +11,10 @@
 import java.util.*
 import javax.persistence.Column
 import javax.persistence.Id
-import kotlin.math.*
+import kotlin.math.atan
+import kotlin.math.cos
+import kotlin.math.round
+import kotlin.math.sin
 
 /**
  * 瀹炴椂鐩戞祴鏁版嵁鍩虹被
@@ -66,6 +69,9 @@
     @Column(name = "NOI")
     var noi: Float? = null
 
+    @Column(name = "NO")
+    var no: Float? = null
+
     var velocity: Float? = null
 
     @Column(name = "wind_speed")
@@ -105,20 +111,7 @@
             add(AirData().apply { setData(FactorType.WIND_SPEED, windSpeed) })
             add(AirData().apply { setData(FactorType.WIND_DIRECTION, windDirection) })
             add(AirData().apply { setData(FactorType.HEIGHT, height) })
-        }
-    }
-
-    fun getByFactorIndex(i: Int): Float? {
-        return when (i) {
-            0 -> no2
-            1 -> co
-            2 -> h2s
-            3 -> so2
-            4 -> o3
-            5 -> pm25
-            6 -> pm10
-            7 -> voc
-            else -> null
+            add(AirData().apply { setData(FactorType.NO, no) })
         }
     }
 
@@ -138,17 +131,18 @@
             FactorType.LNG -> longitude?.toFloat()
             FactorType.LAT -> latitude?.toFloat()
             FactorType.VELOCITY -> velocity
-//            FactorType.TIME -> noi
+//            FactorType.TIME -> dataTime?.time?.toFloat()
             FactorType.WIND_SPEED -> windSpeed
             FactorType.WIND_DIRECTION -> windDirection
             FactorType.HEIGHT -> height
+            FactorType.NO -> no
             else -> null
         }
     }
 
 }
 
-fun List<BaseRealTimeData>.avg(): RealTimeDataGridMin {
+fun List<BaseRealTimeData>.avg(): BaseRealTimeData {
     //椋庡悜閲囩敤鍗曚綅鐭㈤噺娉曟眰鍙栧潎鍊�
     var u = .0//涓滆タ鏂逛綅鍒嗛噺鎬诲拰
     var v = .0//鍗楀寳鏂逛綅鍒嗛噺鎬诲拰
@@ -156,7 +150,7 @@
 
     //闄ら鍚戝鐨勫叾浠栧洜瀛愰噰鐢ㄧ畻鏈钩鍧囨硶姹傚彇鍧囧��
     val tmpList = mutableListOf<AvgPair>()
-    repeat(17) {
+    repeat(18) {
         tmpList.add(AvgPair(0f, 0))
     }
 
@@ -271,6 +265,12 @@
                 this.c++
             }
         }
+        tmpList[17].apply {
+            it.no?.let {
+                t += it
+                this.c++
+            }
+        }
     }
 
     return RealTimeDataGridMin().apply {
@@ -295,6 +295,7 @@
         velocity = tmpList[14].avg()
         windSpeed = tmpList[15].avg()
         height = tmpList[16].avg()
+        no = tmpList[17].avg()
 
         if (c != 0) {
             val avgU = u / c

--
Gitblit v1.9.3