当前位置: 首页 > 知识库问答 >
问题:

如何保存Geojson(在javascript)到几何(MultiPolygon,4326)在PostGIS与Hibernate

缑赤岩
2023-03-14

我正在做一个jsf项目(2.2版)。我在javascript中有一个GeoJson对象。另一边我有一个列与类型的测地(MultiPolygon,4326)在PostGIS.我使用的是Hibernate 4.3.8和Postgreql 9.3。

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

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

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

提前感谢。

共有3个答案

太叔景曜
2023-03-14

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

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

geometry ST_GeomFromGeoJSON(text geomjson);

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

我不知道如何可以触发这个数据库函数与Hibernate空间,但应该有一个功能来直接执行sql查询。但是要小心,这可能会导致SQL错误。

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

阎淮晨
2023-03-14

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

宋昕
2023-03-14

看看Geojson-jackson项目。我想那就是你要找的(我还没有测试但看起来不错)。

祝你好运

 类似资料:
  • 我有几个使用Spring Data JPA的实体类。(这些实体类位于安装了postgis的postgres db中,并包含几何字段。) 然而,当我切换到r2dbc时,它不起作用。任何提示都将不胜感激。 错误原因:java.lang.IllegalStateException:未找到类org.locationtech.jts.geom.Geometry的必需标识符属性!

  • 我在 PostGIS 中有多边形几何几何,我想用一个点“POINT(77.2135569,28.6248447)”来检查它是否相交。 从 public.tablename 中选择 ST_Intersects('POINT(28.6248447 77.2135569)'::geometry, geom) 这里,geom是数据类型为Geometry的列名。 获取以下错误: 错误:ST_Intersec

  • 我有一个Spring Roo Hibernate项目,它从客户端应用程序获取JTS众所周知的文本(WKT)字符串输入,将其转换为JTS几何对象,然后尝试将其写入PostGIS数据库。我在JDBC连接和类型方面遇到了一些问题,但是这些问题似乎已经通过以下方式解决了: 转换确实: 然而,现在当Hibernate试图将我的几何对象写入数据库时,我得到一个错误: 很明显,这个错误与二进制表示有关,它可能是

  • 我试图将一个几何体对象存储到我的postgist数据库中,该数据库有一个带有几何体列的表。我从另一个带有几何列的表格中得到了几何值,我打印了我之前得到的值,结果没问题。要存储几何体值,我使用下一个函数: 但我总是得到这个错误: 组织。postgresql。util。PSQLException:无法推断用于org实例的SQL类型。波斯吉斯。指向使用带有显式类型值的setObject()指定要使用的类

  • hibernate 5.1 spatial的文档尚未发布(AFAIK),我正在尝试将带有JST几何字段的实体持久化到PostgreSQL 9.5 Postgis 2.2,但没有任何运气。 我也注意到没有组织。冬眠hibernate-core-5.1中的空间包。0.我尝试了以下注释的变体: 当列定义设置为“点”时,我得到“列”the_geom“是点的类型,但表达式是由茶的类型”。在Hibernate

  • 我正在尝试使用postgis设置一个带有hibernate空间的项目。按照hibernate空间4.0-M1的教程,我首先遇到了无法找到依赖postgis-jdbc-1.5.3.jar的问题。就像有人在这里建议的那样,我使用了1.5.2版和教程编译。 但是如果我尝试运行它,我会出错。我将Hibernate的调试级别设置为调试und时偶然发现了以下问题: 错误是德语,但意味着“几何”类型不存在。 如