From 9a9a27f185bc0cf9dc0001cfc6839e6d13dbccd9 Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期四, 08 五月 2025 17:38:30 +0800 Subject: [PATCH] 1. 添加了动态污染溯源相关功能逻辑 --- src/main/kotlin/com/flightfeather/uav/biz/dataprocess/RoadSegment.kt | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 50 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..93403a2 100644 --- a/src/main/kotlin/com/flightfeather/uav/biz/dataprocess/RoadSegment.kt +++ b/src/main/kotlin/com/flightfeather/uav/biz/dataprocess/RoadSegment.kt @@ -42,10 +42,15 @@ 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 -> + Thread.sleep(400) val address = AMapService.reGeo(pair) segmentInfoList.add(SegmentInfo().apply { missionCode = mission.missionCode @@ -62,6 +67,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