将 GeoJSON 对象转换为 GML 几何
Convert GeoJSON object to GML geometry
我在将 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 对象?
不,绝对没有。你必须找到另一种方法来做到这一点。
我建议您手动执行此操作或将其作为文件读取并保存到变量。
据我所知,java 没有这样的东西。 ogr2ogr(命令行实用程序)可以做到这一点:
converts simple features data between file formats
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
Geotools can probably do what you need. 我不会 posted,因为我没有这样做,但是投机食谱比 "definitely not" 更好。
GeoTools 可以读取 GeoJSON and give you a JTS geometry or a Feature, which can then be used to generate GML using a org.geotools.xml.Encoder.
使用org.geotools.geojson.feature.FeatureJSON or org.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);
我希望这足以开始。也许如果你让它工作(或发现它不可能)回来编辑这个 post.
我在将 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 对象?
不,绝对没有。你必须找到另一种方法来做到这一点。
我建议您手动执行此操作或将其作为文件读取并保存到变量。
据我所知,java 没有这样的东西。 ogr2ogr(命令行实用程序)可以做到这一点:
converts simple features data between file formats
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
Geotools can probably do what you need. 我不会 posted,因为我没有这样做,但是投机食谱比 "definitely not" 更好。
GeoTools 可以读取 GeoJSON and give you a JTS geometry or a Feature, which can then be used to generate GML using a org.geotools.xml.Encoder.
使用org.geotools.geojson.feature.FeatureJSON or org.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);
我希望这足以开始。也许如果你让它工作(或发现它不可能)回来编辑这个 post.