这是保存到矢量代码:
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但是如何使用?
答案 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);
}
谢谢。