如何使用Hibernate将geojson(javascript)保存到PostGIS中的几何体(MultiPolygon,4326)

如何使用Hibernate将geojson(javascript)保存到PostGIS中的几何体(MultiPolygon,4326),hibernate,gis,postgis,jsf-2.2,hibernate-spatial,Hibernate,Gis,Postgis,Jsf 2.2,Hibernate Spatial,我正在从事一个jsf项目(版本2.2)。我在javascript中有一个geoJson对象。另一边我在PostGIS中有一个Geometry类型的专栏(MultiPolygon,4326)。我正在使用Hibernate 4.3.8和Postgresql 9.3 模型类中的几何图形列定义 @Type(type="org.hibernate.spatial.GeometryType") @Column(name="geom") private Polygon geom; 我还将HibernateS

我正在从事一个jsf项目(版本2.2)。我在javascript中有一个geoJson对象。另一边我在PostGIS中有一个Geometry类型的专栏(MultiPolygon,4326)。我正在使用Hibernate 4.3.8和Postgresql 9.3

模型类中的几何图形列定义

@Type(type="org.hibernate.spatial.GeometryType")
@Column(name="geom")
private Polygon geom;
我还将HibernateSpatial 4.x包含到我的项目中,我可以访问托管bean中的geojson字符串。但我不知道如何将这个geojson插入我的数据库。可能我必须解析geojson并从geojson坐标创建多边形对象,然后传递到我的数据库。但我没有成功。这样做的方法是什么

提前感谢。

请查看。我想这就是你想要的(我还没有测试它,但看起来不错)


祝你好运

您需要在该字段上进行db处理,所以为什么不将db内部另存为String/BLOB呢

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

你不必这样做,数据库可以为你做,而且很有可能它会比你更快。只需从GeoJSON创建一个几何体。在数据库中使用以下功能:

geometry ST_GeomFromGeoJSON(text geomjson);
这将生成一个EWKB几何体,可以保存在DB中、重新投影、重新格式化等。参数是GeoJSON as字符串

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


注:我不建议在空间应用程序的上下文中使用对象关系映射器,确切地说是因为这样的不可访问性。

您可以将GeoJSON字符串作为几何体来读取。感谢Mike的回复,我会尝试一下。但是你觉得通过db这个几何体怎么样?谢谢@Paul的回复。我不应该将其保存为String/BLOB,因为我在另一端有一台wms服务器,我想与它共享我的几何图形。如果我将几何体保存为字符串,wms服务器将无法像geom值一样接受它。