Java 将 GeoJSON rings 数组转换为 WKT 格式
以下是将 GeoJSON 中的 rings 数组转换为 WKT 格式的 Java 代码:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.GeometryFactory;
import org.locationtech.jts.geom.LinearRing;
import org.locationtech.jts.geom.Polygon;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class GeoJsonToWktConverter {
public static String convert(String geoJson) throws IOException {
ObjectMapper mapper = new ObjectMapper();
ArrayNode coordinates = (ArrayNode) mapper.readTree(geoJson).get('coordinates');
GeometryFactory geometryFactory = new GeometryFactory();
List<Coordinate[]> rings = new ArrayList<>();
for (int i = 0; i < coordinates.size(); i++) {
ArrayNode ringCoordinates = (ArrayNode) coordinates.get(i);
Coordinate[] ring = new Coordinate[ringCoordinates.size()];
for (int j = 0; j < ringCoordinates.size(); j++) {
ArrayNode coordinate = (ArrayNode) ringCoordinates.get(j);
double x = coordinate.get(0).asDouble();
double y = coordinate.get(1).asDouble();
ring[j] = new Coordinate(x, y);
}
rings.add(ring);
}
LinearRing[] linearRings = new LinearRing[rings.size() - 1];
for (int i = 1; i < rings.size(); i++) {
linearRings[i - 1] = geometryFactory.createLinearRing(rings.get(i));
}
Polygon polygon = geometryFactory.createPolygon(rings.get(0), linearRings);
return polygon.toText();
}
}
该代码使用 Jackson 库来解析 GeoJSON 字符串,并使用 JTS 库来创建 WKT 格式的几何对象。该代码将 GeoJSON 中的 rings 数组转换为 JTS 的 LinearRing 数组,并使用这些线性环来创建一个多边形对象。最终,它返回多边形对象的 WKT 表示形式。
原文地址: https://www.cveoy.top/t/topic/ofDL 著作权归作者所有。请勿转载和采集!