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<String> 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<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;
|
}
|
|
}
|