From 5b0d58c3f7f35f61c0a0437bac3ff708db57fe61 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期四, 18 七月 2024 17:34:16 +0800
Subject: [PATCH] 1. 修正实时走航数据平滑处理算法,PM2.5、PM10、VOC采用新的修正算法
---
src/main/kotlin/com/flightfeather/uav/biz/dataprocess/RoadSegment.kt | 51 +++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 49 insertions(+), 2 deletions(-)
diff --git a/src/main/kotlin/com/flightfeather/uav/biz/dataprocess/RoadSegment.kt b/src/main/kotlin/com/flightfeather/uav/biz/dataprocess/RoadSegment.kt
index e2fbd29..1b099a3 100644
--- a/src/main/kotlin/com/flightfeather/uav/biz/dataprocess/RoadSegment.kt
+++ b/src/main/kotlin/com/flightfeather/uav/biz/dataprocess/RoadSegment.kt
@@ -42,7 +42,11 @@
avgGPS.add(d.longitude!!.toDouble() to d.latitude!!.toDouble())
}
}
- val gdGPS = AMapService.coordinateConvert(avgGPS)
+ val gdGPS = mutableListOf<Pair<Double, Double>>()
+ val _avgGPS = prepareForConvert(avgGPS)
+ _avgGPS.forEach {
+ gdGPS.addAll(AMapService.coordinateConvert(it))
+ }
// 閫氳繃楂樺痉API鏌ヨ鍧愭爣瀵瑰簲鐨勮矾娈�
val segmentInfoList = mutableListOf<SegmentInfo>()
gdGPS.forEachIndexed { i, pair ->
@@ -62,6 +66,49 @@
})
}
// 缁撴灉鍏ュ簱
- segmentInfoRep.insert(segmentInfoList)
+ saveResult(segmentInfoList)
+ }
+
+ /**
+ * 鍧愭爣杞崲鍒嗘鍑嗗
+ * 楂樺痉API鐨勫潗鏍囪浆鎹㈡帴鍙d竴娆¤闂渶澶氭敮鎸�40瀵瑰潗鏍�
+ */
+ private fun prepareForConvert(gpsList: List<Pair<Double, Double>>): List<List<Pair<Double, Double>>> {
+ val res = mutableListOf<List<Pair<Double, Double>>>()
+ val maxLen = 40
+ var start = 0
+ var end = start + maxLen
+ while (end < gpsList.size) {
+ res.add(gpsList.subList(start, end))
+ start += maxLen
+ end += maxLen
+ }
+ if (start < gpsList.size) {
+ res.add(gpsList.subList(start, gpsList.size))
+ }
+ return res
+ }
+
+ /**
+ * 缁撴灉鍏ュ簱
+ * 鍏ュ簱涔嬪墠锛屽皢杩炵画骞跺睘浜庡悓涓�閬撹矾鐨勮褰曞悎骞�
+ */
+ private fun saveResult(segmentInfoList:List<SegmentInfo>) {
+ val res = mutableListOf<SegmentInfo>()
+ segmentInfoList.forEach { s ->
+ // 鍒ゆ柇褰撳墠璁板綍鍜屼笂涓褰曟槸鍚︽暟鎹悓涓�鏉¢亾璺�
+ if (res.isNotEmpty()) {
+ val lastOne = res.last()
+ // 鑻ュ睘浜庡悓涓�閬撹矾锛屽悎骞�
+ if (lastOne.street == s.street) {
+ lastOne.endTime = s.endTime
+ } else {
+ res.add(s)
+ }
+ } else {
+ res.add(s)
+ }
+ }
+ segmentInfoRep.insert(res)
}
}
\ No newline at end of file
--
Gitblit v1.9.3