From 53857f42f777e2b9753b8f00cce1a60ce3dcb8fd Mon Sep 17 00:00:00 2001
From: Riku <risaku@163.com>
Date: 星期三, 15 十月 2025 22:42:29 +0800
Subject: [PATCH] 2025.10.15 修改高德地图地理逆编码结果,让地理位置信息更加详细

---
 src/main/kotlin/com/flightfeather/uav/biz/dataprocess/RoadSegment.kt |   54 +++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 51 insertions(+), 3 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..8e21070 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
@@ -58,10 +63,53 @@
                 districtName = address.district
                 townCode = address.towncode
                 towmName = address.township
-                street = address.street
+                street = address.address
             })
         }
         // 缁撴灉鍏ュ簱
-        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