将GeoJSON对象转换为GML几何体

时间:2016-02-09 09:29:51

标签: jackson geojson gml

将GeoJSON对象转换为GML几何对象时出现以下问题。

首先,在请求的后端我检索GeoJSON对象。 然后我使用jackson库将其转换为java对象。这个java对象是geojson-jackson库中的FeatureCollection。 所以我在后端有java对象代表GeoJSON,现在我需要将它转换为GML对象并从中提取几何体。

由此:

{
  "featureCollection : {
    "type": "FeatureCollection",
    "features": [{
      "type": "Feature",
      "geometry": {
        "type": "Polygon",
        "coordinates": [ [[100.0,0.0],[101.0,0.0],[101.0,1.0],[100.0,1.0],[100.0,0.0]] ]
      },
    }]
  }
}

我需要得到这个:

<gml:Rectangle srsName="urn:x-ogc:def:crs:EPSG:6.6:25833">
  <gml:exterior>
    <gml:LinearRing>
      <gml:coordinates>100.0,0.0 101.0,0.0 101.0,1.0 100.0,1.0 100.0,0.0</gml:coordinates>
    </gml:LinearRing>
  </gml:exterior>
</gml:Rectangle> 

问题是,是否存在允许从GeoJSON转换为GML对象的现有库?

3 个答案:

答案 0 :(得分:1)

Geotools can probably do what you need.我不会发布,因为我没有这样做,但是投机配方比#34更好;绝对不是&#34;。

GeoTools可以阅读GeoJSON并为您提供JTS几何体或特征,然后可以使用org.geotools.xml.Encoder.

生成GML

使用org.geotools.geojson.feature.FeatureJSONorg.geotools.geojson.geom.GeometryJSON获取JSON字符串并提供Geometry实例,如下所示:

GeometryJSON gJson = new GeometryJSON();
jtsGeometry = gJson.readGeometryCollection(jsonInputStream)

然后配置encoder以编写GML。

org.geotools.xml.Encoder encoder = new org.geotools.xml.Encoder(...);
...
encoder.encode(jtsGeometry, qName, outputStream);

我希望这足以开始。也许如果你让它工作(或发现它不可能),请回来编辑这篇文章。

答案 1 :(得分:0)

不,绝对没有。你必须找到另一种方法来做到这一点。

我建议您手动执行此操作或将其作为文件读取并保存到变量。

答案 2 :(得分:0)

据我所知,java没有这样的东西。 ogr2ogr(命令行实用程序)可以做到这一点:

  

在文件格式之间转换简单要素数据

http://www.gdal.org/ogr2ogr.html

ogr2ogr -f "GML" destination.gml source.geojson

您可以从java运行该程序,请参阅此问题:How to run GDAL (ogr2ogr) in Java to convert Shapefiles to GeoJSON