package com.dji.sample.patches.utils; import com.dji.sample.patches.model.entity.LotInfo; import org.geotools.geometry.jts.JTSFactoryFinder; import org.locationtech.jts.geom.Coordinate; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.Point; import org.locationtech.jts.io.ParseException; import org.locationtech.jts.io.WKTReader; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.*; import java.util.concurrent.atomic.AtomicReference; import static com.dji.sample.patches.utils.GeoToolsUtil.getCentro; import static com.dji.sample.patches.utils.GeoToolsUtil.getExtremePoints; public class FormatConversionUtil { static String str = ""; //优化Polygon格式 public static String[] formatConversion(List s) { String str = s.toString().trim(); String ses = str.substring(1, str.length() - 2); String see = ses.replaceAll("\\[\\[\\[\\[", "((") .replaceAll("].\\[", " ") .replaceAll("]]]", "))"); String[] arr1 = see.split("],"); return arr1; } //优化Polygon格式 public static String modifySpacesAndCommas(String str) { StringBuilder modified = new StringBuilder(); for (char c : str.toCharArray()) { if (c == ' ') { modified.append(','); } else if (c == ',') { modified.append(' '); } else { modified.append(c); } } return modified.toString(); } //获取Polygon的中心点,X轴和Y轴 public static String getCentros(List list) { List centros = new ArrayList<>(); List> extremePoints = new ArrayList<>(); Map> points = new HashMap<>(); list.forEach(patche -> { String wkt = patche.getDkfw(); // 解析WKT字符串为多边形 WKTReader wktReader = new WKTReader(JTSFactoryFinder.getGeometryFactory()); Geometry polygon = null; try { polygon = wktReader.read(wkt); } catch (ParseException e) { throw new RuntimeException(e); } // 开始封装中心点坐标 Coordinate coordinateCentro = getCentro(polygon); centros.add(coordinateCentro); str = coordinateCentro.toString(); // 开始封装图斑4个航线 List coordinatePointList = getExtremePoints(polygon); extremePoints.add(coordinatePointList); points.put(coordinateCentro, coordinatePointList); }); return str; } }