java - 使用功能将 jts 转换为 GeoJSON 时出现类型错误

标签 java gis geojson

我有一个带有 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); 行上的类型错误

enter image description here

它不接受字符串,即使 reader.read方法采用 GeoJSON 字符串。

我也尝试过传递 JTS 点 p:

        GeoJSONReader reader = new GeoJSONReader();
    org.wololo.geojson.Geometry geometry = reader.read(p);

但这也会导致 IDE 中出现错误:

enter image description here

最佳答案

我的读者和作者方法是错误的。作者从 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/

相关文章:

c# 到 geojson 弹出项目括号 []

java - 您链接同一对象的方法结果的设计模式的名称是什么?

java USB点阵打印

javascript - 如何在 map 上绘制渐变着色的区域?

javascript - Leaflet没有用geojsonFeatures标记点?

javascript - 在JS数组中设置对象参数的问题

java - 如何使用 java bean 的参数化属性名称和类型列表

java - 使用正则表达式限制特殊字符

python - 我有一个有 4 个角的多边形,而不是正方形。如何在 python 中获取它的较小部分的纬度和经度?

google-maps - 带有大陆轮廓/边界的 KML 文件