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/fq3e 著作权归作者所有。请勿转载和采集!