| | |
| | | * 线索分析 |
| | | */ |
| | | private fun analysis() { |
| | | if (clueList.isEmpty()) return |
| | | val result = AnalysisResult() |
| | | // 共有多少相关污染源,哪些污染源被扫描次数较多 |
| | | val sceneMap = mutableMapOf<String?, Pair<SceneInfo?, Int>>() |
| | |
| | | } |
| | | } |
| | | } |
| | | val res = sceneMap.entries.sortedBy { it.value.second } |
| | | val res = sceneMap.entries.sortedByDescending { it.value.second } |
| | | result.sortedSceneList = res.map { it.value } |
| | | |
| | | // 当前的走航数据的定位和污染源距离是否是逐渐接近,若走航远离了主要污染源,提示用户调整走航路线 |
| | | if (!result.sortedSceneList.isNullOrEmpty()) { |
| | | val sT = clueList.first().pollutedData?.startTime |
| | | val closetScene = result.sortedSceneList?.first() |
| | | result.advice = "根据${sT}起的${clueList.size}条最新污染线索,污染源[${closetScene?.first?.name}]被多次溯源,具有较高污染风险,现提供新的走航推荐路线,可经过该污染源。" |
| | | |
| | | // 走航路线调整建议 |
| | | result.advice = |
| | | "根据${sT}起的${clueList.size}条最新污染线索,污染源【${closetScene?.first?.name}】被多次溯源,具有较高污染风险,现提供新的走航推荐路线,可经过该污染源。" |
| | | |
| | | val lastP = realTimeDataList.last() |
| | | // 建议对应的数据采样时间 |
| | | result.time = lastP.dataTime |
| | | if (lastP.longitude != null && lastP.latitude != null && |
| | | lastP.longitude!! > BigDecimal.ZERO && lastP.latitude!! > BigDecimal.ZERO |
| | | && closetScene?.first?.longitude != null && closetScene.first?.latitude != null && |
| | | closetScene.first?.longitude!! > BigDecimal.ZERO && closetScene.first?.latitude!! > BigDecimal.ZERO) { |
| | | closetScene.first?.longitude!! > BigDecimal.ZERO && closetScene.first?.latitude!! > BigDecimal.ZERO |
| | | ) { |
| | | |
| | | val origin = MapUtil.wgs84ToGcj02(lastP.longitude!!.toDouble() to lastP.latitude!!.toDouble()) |
| | | val destination = closetScene.first!!.longitude.toDouble() to closetScene.first!!.latitude.toDouble() |
| | | |
| | | // 建议的走航路线 |
| | | result.direction = AMapService.directionDriving(origin, destination) |
| | | } |
| | | } |
| | | |
| | | |
| | | result.time = realTimeDataList.last().dataTime |
| | | // 线索分析完成后,移动至历史线索列表 |
| | | historyClueList.addAll(clueList) |
| | | clueList.clear() |