我正在开发一个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坐标创建多边形对象并传递给我的数据库。但我没有成功。这样做的方法是什么?
提前致谢。
答案 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,因为这样的不可访问性。