| | |
| | | package com.dji.sample.patches.utils; |
| | | |
| | | import java.util.List; |
| | | 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 static org.locationtech.jts.io.WKTConstants.POLYGON; |
| | | 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<String> s) { |
| | | String str = s.toString().trim(); |
| | | String ses = str.substring(1, str.length() - 2); |
| | | String see = ses.replaceAll("\\[\\[\\[\\[", "((") |
| | | .replaceAll("].\\[", " ") |
| | | .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()) { |
| | |
| | | } |
| | | return modified.toString(); |
| | | } |
| | | //获取Polygon的中心点,X轴和Y轴 |
| | | public static String getCentros(List<LotInfo> list) { |
| | | List<Coordinate> centros = new ArrayList<>(); |
| | | 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(); |
| | | }); |
| | | return str; |
| | | } |
| | | |
| | | } |