3

我正在开发一个 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坐标创建多边形对象并传递给我的数据库。但我没有成功。这样做的方法是什么?

提前致谢。

4

3 回答 3

1

Take a look to geojson-jackson project. I think that is what you are looking for (I don't test it yet but looks good).

Good luck!!

于 2015-03-17T10:38:23.407 回答
1

您将不像需要对该字段进行 db 处理,所以为什么不将 db 保存为 String/BLOB。

于 2015-03-27T08:34:07.153 回答
0

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

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

geometry ST_GeomFromGeoJSON(text geomjson);

这会产生一个 EWKB-Geometry,可以保存在数据库中、重新投影、重新格式化等。参数是 GeoJSON 作为字符串。

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

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

于 2015-03-31T11:07:40.457 回答