【问题标题】:Type error converting jts to GeoJSON with feature使用功能将 jts 转换为 GeoJSON 的类型错误
【发布时间】:2020-01-13 18:13:17
【问题描述】:

我有一个带有 GIS Geometry 的 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 出错:

【问题讨论】:

    标签: java gis geojson


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-18
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      • 1970-01-01
      • 2012-01-04
      • 2021-08-18
      • 2012-01-14
      相关资源
      最近更新 更多