From ba82d296ae3f3e5fd7e14907aab2103418d37011 Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Wed, 03 Apr 2024 10:05:37 +0800
Subject: [PATCH] 生成航线文件
---
src/main/java/com/dji/sample/patches/utils/GeoToolsUtil.java | 35 +++++++----------------------------
1 files changed, 7 insertions(+), 28 deletions(-)
diff --git a/src/main/java/com/dji/sample/patches/utils/GeoToolsUtil.java b/src/main/java/com/dji/sample/patches/utils/GeoToolsUtil.java
index d8899bd..e76e356 100644
--- a/src/main/java/com/dji/sample/patches/utils/GeoToolsUtil.java
+++ b/src/main/java/com/dji/sample/patches/utils/GeoToolsUtil.java
@@ -53,10 +53,10 @@
*
* @return
*/
- public static Coordinate [] getRoutePointOrder(List<LotInfo> list) {
+ public static Coordinate[] getRoutePointOrder(List<LotInfo> list, double airportLat, double airportLon) {
List<Coordinate> centros = new ArrayList<>();
List<List<Coordinate>> extremePoints = new ArrayList<>();
- Map<Coordinate,List<Coordinate>> points = new HashMap<>();
+ Map<Coordinate, List<Coordinate>> points = new HashMap<>();
list.forEach(patche -> {
String wkt = patche.getDkfw();
// 解析WKT字符串为多边形
@@ -75,26 +75,23 @@
// 开始封装图斑4个航线
List<Coordinate> coordinatePointList = getExtremePoints(polygon);
extremePoints.add(coordinatePointList);
- points.put(coordinateCentro,coordinatePointList);
+ points.put(coordinateCentro, coordinatePointList);
});
// 开始排序
- // 机场经纬度
- double airportLat = 28.624514734; // 机场纬度
- double airportLon = 115.856725497; // 机场经度
- Coordinate [] coordinates = new Coordinate[centros.size() + 1];
+ Coordinate[] coordinates = new Coordinate[centros.size() + 1];
List<Coordinate> coordinateList = new ArrayList<>();
coordinates[0] = new Coordinate(airportLon, airportLat); //第一个为机场经纬度
coordinateList.add(new Coordinate(airportLon, airportLat)); //第一个为机场经纬度)
for (int i = 1; i < centros.size() + 1; i++) {
- coordinates[i] = centros.get(i-1);
- coordinateList.add(centros.get(i-1));
+ coordinates[i] = centros.get(i - 1);
+ coordinateList.add(centros.get(i - 1));
}
// 对中心坐标数组进行排序
Coordinate[] retCoordinate = new Coordinate[coordinateList.size()];
- Coordinate[] sortedCoordinates = DistanceCalculator.sortByDistance(coordinateList, airportLat, airportLon, 0,retCoordinate);
+ Coordinate[] sortedCoordinates = DistanceCalculator.sortByDistance(coordinateList, airportLat, airportLon, 0, retCoordinate);
// 开始拼接图斑点位--按中心坐标数组排序顺序
// 长度-3第一个起点只有一个点位
@@ -117,24 +114,6 @@
return retc;
- }
-
-
- public static void main(String[] args) {
- //测试
- List<LotInfo> list = new ArrayList<>();
- list.add(LotInfo.builder().dkfw("POLYGON((115.866465564947 28.6344502965542, 115.86425430209 28.6357383285408, 115.864551734716 28.633120921433, 115.866977149064 28.6338435339976, 115.866465564947 28.6344502965542))").build());
- list.add(LotInfo.builder().dkfw("POLYGON((115.864006690605 28.6202713913694, 115.86002109342 28.6162025130492, 115.866374254306 28.6142037658042, 115.865912044006 28.6172001020759, 115.864006690605 28.6202713913694))").build());
- list.add(LotInfo.builder().dkfw("POLYGON((115.839366933455 28.6161999317332, 115.841288489469 28.6160843601496, 115.840931570318 28.6181544912247, 115.838147600941 28.618654178036, 115.839366933455 28.6161999317332))").build());
- list.add(LotInfo.builder().dkfw("POLYGON((115.857499052697 28.6784702230642, 115.859109158101 28.6762273976226, 115.863677723232 28.6766081113836, 115.862154868188 28.6790827508297, 115.857499052697 28.6784702230642))").build());
- list.add(LotInfo.builder().dkfw("POLYGON((115.834974056705 28.6659171428962, 115.833760531592 28.6634960413229, 115.832422084777 28.6624550271329, 115.829745191145 28.6631986086972, 115.831232354274 28.6608191476914, 115.833314382654 28.6603729987527, 115.835545127347 28.6618601618814, 115.837032290475 28.6639421902615, 115.834974056705 28.6659171428962))").build());
- list.add(LotInfo.builder().dkfw("POLYGON((115.885622116006 28.5766308429787, 115.883936664461 28.5771582901683, 115.883365593819 28.5752547213636, 115.883555950699 28.5740174016407, 115.88365112914 28.5724945465969, 115.885364341064 28.5721138328361, 115.886696839227 28.5725897250371, 115.887458266749 28.5736366878797, 115.886792017668 28.5753498998039, 115.885622116006 28.5766308429787))").build());
- list.add(LotInfo.builder().dkfw("POLYGON((115.857644341395 28.5750890964568, 115.857572957565 28.5729475815515, 115.858429563527 28.5728761977213, 115.859072017998 28.5738041875136, 115.859072017998 28.5748035611361, 115.857644341395 28.5750890964568))").build());
- list.add(LotInfo.builder().dkfw("POLYGON((115.912181587649 28.6231542087745, 115.912181587649 28.6215123806805, 115.915893546818 28.6212268453598, 115.916036314478 28.6231542087745, 115.912181587649 28.6231542087745))").build());
- list.add(LotInfo.builder().dkfw("POLYGON((115.842039042965 28.6314426646115, 115.840992080122 28.631252307731, 115.842324578286 28.6305860586493, 115.843181184248 28.6305860586493, 115.84403779021 28.6304908802091, 115.84394261177 28.6317281999322, 115.842039042965 28.6314426646115))").build());
- list.add(LotInfo.builder().dkfw("POLYGON((115.807011889796 28.623935465138, 115.805869748513 28.6224126100944, 115.810247956764 28.6220318963334, 115.809581707682 28.623935465138, 115.807011889796 28.623935465138))").build());
-
- getRoutePointOrder(list);
}
}
--
Gitblit v1.9.3