geojson协调转换为来自PostgreSQL的数据格式?

时间:2015-08-18 09:49:03

标签: hibernate format spatial geojson geotools

这是保存到矢量代码:

 if (vectorType.equalsIgnoreCase("Point")) {
            Point point = new GeometryJSON().readPoint(item.getData());
            lineString.setSRID(3857);
            theEvent.setGeom(point);
            theEvent.setVectorType(vectorType);
        }

我想从数据库格式geojson读取数据但我需要做快捷方式

我做了以下代码:

   if(entity.getVectorType().trim().equalsIgnoreCase("Point"))
        {
            JSONObject point = new JSONObject();
            point.put("type", "Point");
            JSONArray coord = new JSONArray("["+entity.getGeom().getX()+","+entity.getGeom().getY()+"]");
            point.put("coordinates", coord);
            geoJson.setData(point.toString());                
        }

但我必须做捷径。我能怎么做。我认为使用geotools。我们可以使用FeatureJson但是如何使用?

2 个答案:

答案 0 :(得分:1)

在这个例子中应该是这样的:Point to GeoJSON

让我们看看你的代码:

   if(entity.getVectorType().trim().equalsIgnoreCase("Point")){
        geoJson.setData(createJSONGeoPoint(entity.getGeom()));//getGeom() is your Point.
    }

你的新方法:

private String createJSONGeoPoint(Point point){
    SimpleFeatureType TYPE = DataUtilities.createType("Test", "Location:Point");
    final GeometryBuilder builder = new GeometryBuilder();
    SimpleFeatureBuilder fBuild = new SimpleFeatureBuilder(TYPE);
    fBuild.add(point);
    SimpleFeature feature = fBuild.buildFeature(null);
    FeatureJSON fjson = new FeatureJSON();
    StringWriter writer = new StringWriter();
    try {
        fjson.writeFeature(feature, writer);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return writer.toString();
}

您需要针对您的问题进行测试,如果需要,请对代码进行更正。

答案 1 :(得分:1)

我做了stackoverflow用户 解决方案如下:

 if(entity.getVectorType().trim().equalsIgnoreCase("Point"))
        {
            GeometryJSON gjson = new GeometryJSON();
            Object obj = JSONValue.parse(gjson.toString(entity.getGeom()));
            System.out.println(obj);
        }

谢谢。