如何在PostGIS with Hibernate中将geojson(在javascript中)保存到几何体(MultiPolygon,4326)

时间:2015-03-16 14:38:03

标签: hibernate gis postgis jsf-2.2 hibernate-spatial

我正在开发一个jsf项目(版本2.2)。我在javascript中有一个geoJson对象。另一边我在PostGIS中有一个带有几何类型的列(MultiPolygon,4326)。我使用的是Hibernate 4.3.8和Postgresql 9.3。

模型类中的几何列定义

@Type(type="org.hibernate.spatial.GeometryType")
@Column(name="geom")
private Polygon geom;

我还在项目中包含了Hibernate Spatial 4.x,我可以在托管bean中访问geojson字符串。但我不知道如何将这个geojson插入我的数据库。可能我必须解析geojson并从geojson坐标创建多边形对象并传递给我的数据库。但我没有成功。这样做的方法是什么?

提前致谢。

3 个答案:

答案 0 :(得分:1)

看看geojson-jackson project。我认为这就是你要找的东西(我还没有测试它,但看起来不错)。

祝你好运!!

答案 1 :(得分:1)

您将不同于需要对该字段进行数据库处理,所以为什么不将内部数据保存为String / BLOB。

答案 2 :(得分:0)

  

可能我必须解析geojson并从geojson坐标创建多边形对象。

你不必这样做,数据库可以为你做,并且机会很高,它会比你快。只需从GeoJSON创建一个Geometry。在您的数据库中使用以下函数:

geometry ST_GeomFromGeoJSON(text geomjson);

这会产生一个EWKB-Geometry,可以保存在DB中,重新投影,重新格式化等等。参数是GeoJSON as string。

我不知道如何用hibernate-spatial触发这个数据库函数,但是应该有一个直接执行sql-queries的功能。但要小心,这可能会导致SQL注入错误。

P.S。:我建议不要在空间应用程序的上下文中使用Object-Relational-Mappers,因为这样的不可访问性。