java 遍历wkt中的坐标点实现wkt从wgs84转gcj02
要遍历WKT中的坐标点,可以使用Java中的正则表达式来提取每个点的经纬度。以下是一个示例代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class WKTConverter {
private static final Pattern COORD_PATTERN = Pattern.compile("(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)");
public static String wktToGcj02(String wkt) {
StringBuilder sb = new StringBuilder();
int startIndex = wkt.indexOf('(');
int endIndex = wkt.lastIndexOf(')');
String geomType = wkt.substring(0, startIndex).trim();
String coords = wkt.substring(startIndex + 1, endIndex);
sb.append(geomType).append(" (");
Matcher matcher = COORD_PATTERN.matcher(coords);
while (matcher.find()) {
double lon = Double.parseDouble(matcher.group(1));
double lat = Double.parseDouble(matcher.group(2));
double[] gcj02 = CoordinateTransformUtil.wgs84ToGcj02(lon, lat);
sb.append(gcj02[0]).append(" ").append(gcj02[1]).append(", ");
}
sb.setLength(sb.length() - 2); // remove the last comma and space
sb.append(")");
return sb.toString();
}
}
在上面的代码中,我们使用正则表达式(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)来匹配坐标点,其中(-?\d+(?:\.\d+)?)匹配经度,\s*匹配空格,(-?\d+(?:\.\d+)?)匹配纬度。然后,我们使用CoordinateTransformUtil.wgs84ToGcj02方法将WGS84坐标转换为GCJ02坐标,并将结果保存在StringBuilder中。最后,我们将结果转换回WKT格式并返回
原文地址: https://www.cveoy.top/t/topic/fHRu 著作权归作者所有。请勿转载和采集!