我有一个带有 GIS 几何图形的 Java POJO“任务”,我正在尝试将其转换为具有特征的 GeoJSON。
我用来进行转换的库是 jts2geojson
我的测试用例代码是这样的,当我尝试将其传递给阅读器时,错误出现在 String geoJson 上。
GeometryFactory gf = new GeometryFactory();
Double y = -36.829;
Double x = 174.896;
Task testTask = new Task();
testTask.setId(new Long(01));
testTask.setTitle("Test Task");
Point p = gf.createPoint(new Coordinate(x, y));
p.setSRID(4326);
testTask.setLocation(p);
taskRepository.save(testTask);
ObjectMapper objectMapper = new ObjectMapper();
String geoJson = objectMapper.writeValueAsString(testTask); // geojson is a String
GeoJSONReader reader = new GeoJSONReader();
org.wololo.geojson.Geometry geometry = reader.read(geoJson); // type error
// create and serialize a FeatureCollection
List<Feature> features = new ArrayList<Feature>();
Map<String, Object> properties = new HashMap<String, Object>();
properties.put("Size", 5);
properties.put("Area", "Auckland");
features.add(new Feature(geoJson, properties));
GeoJSONWriter writer = new GeoJSONWriter();
GeoJson json = writer.write(features);
问题是 org.wololo.geojson.Geometry Geometry = reader.read(geoJson); 行上的类型错误
它不接受字符串,即使 reader.read方法采用 GeoJSON 字符串。
我也尝试过传递 JTS 点 p:
GeoJSONReader reader = new GeoJSONReader();
org.wololo.geojson.Geometry geometry = reader.read(p);
但这也会导致 IDE 中出现错误:
最佳答案
我的读者和作者方法是错误的。作者从 jts.geometry 转到 wololo.geometry。
GeometryFactory gf = new GeometryFactory();
Double y = -36.829;
Double x = 174.896;
Task testTask = new Task();
testTask.setId(new Long(01));
testTask.setTitle("Test Task");
Point p = gf.createPoint(new Coordinate(x, y));
p.setSRID(4326);
testTask.setLocation(p);
taskRepository.save(testTask);
ObjectMapper objectMapper = new ObjectMapper();
String geoJson = objectMapper.writeValueAsString(testTask);
System.out.println(geoJson);
GeoJSONWriter writer = new GeoJSONWriter();
org.wololo.geojson.Geometry geom = writer.write(p);
// create and serialize a FeatureCollection
List<Feature> features = new ArrayList<Feature>();
Map<String, Object> properties = new HashMap<String, Object>();
properties.put("Size", 5);
properties.put("Area", "Auckland");
features.add(new Feature(geom, properties));
GeoJSONWriter writer1 = new GeoJSONWriter();
FeatureCollection json = writer1.write(features);
writer 方法将我的点 p 转换为 org.wololo.geojson.geometry 对象,然后我可以将其添加到 Feature 或 FeaturesCollection 中。
关于java - 使用功能将 jts 转换为 GeoJSON 时出现类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59721950/