将GeoJSON对象转换为GML几何体。

3

我在将 GeoJSON 对象转换为 GML 几何对象时遇到了以下问题。

首先,在请求的后端中,我检索 GeoJSON 对象。 然后我使用 jackson 库将其转换为 Java 对象。这个 Java 对象是来自 geojson-jackson 库的 FeatureCollection。 因此,我有一个代表 GeoJSON 的 Java 对象在后端,现在我需要将其转换为 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个回答

4

Geotools 可能可以满足您的需求。虽然我没有做过这个,但是一个推测性的方案总比“绝对不行”好。

GeoTools 可以读取 GeoJSON 并给出 JTS 几何或要素,然后使用 org.geotools.xml.Encoder 生成 GML。

使用 org.geotools.geojson.feature.FeatureJSONorg.geotools.geojson.geom.GeometryJSON 获取 JSON 字符串并给出几何实例,就像这样:

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

然后配置一个编码器以编写GML。

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

我希望这足够开始了。如果你成功实现它(或发现不可能),请回来编辑此帖子。

你好。你能提供一个相关的例子吗?我在使用FeatureJSON编码获取到的要素集合时遇到了前缀问题。谢谢。 - Francesco

2
据我所知,Java本身没有这样的功能。但是可以使用ogr2ogr(一个命令行实用程序)来完成此操作:
该工具可以在不同的文件格式之间转换简单要素数据。
链接:http://www.gdal.org/ogr2ogr.html
ogr2ogr -f "GML" destination.gml source.geojson

您可以从Java中运行它,请参见此问题:如何在Java中运行GDAL(ogr2ogr)以将Shapefile转换为GeoJSON


0

不,绝对没有。你必须找到另一种方法来做那件事。

我建议你要么手动完成,要么将其作为文件读取并保存到变量中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接