使用hibernate将Postgres几何体读入byte []?

时间:2014-03-12 13:53:17

标签: java hibernate postgresql geometry

我正在尝试阅读PostGIS几何列并将其保存为带有hibernate的Java byte[]

据我所知,我应该用它在psql中表示的方式存储它。

我设法写它甚至在psql内看到它但是当我用wkbreader读它时 - 我收到以下错误:

  

com.vividsolutions.jts.io.ParseException:未知的WKB类型48

3 个答案:

答案 0 :(得分:2)

PostGIS exports a ST_AsBinary function或(如果您想保留SRID)ST_AsEWKB

您应该存储此函数的结果,而不是尝试转换显示表示,然后加载ST_GeomFromWKBST_GeomFromEWKB(取决于您是否在输出中使用了AsBinary或AsEWKB表单)

答案 1 :(得分:1)

我已经看到通过升级JDBC驱动程序版本解决了此错误。我能够使用以下内容将PostGIS几何体读入JTS:

查询:

SELECT ST_AsBinary(geom) FROM mytable;

代码:

// myWKBReader is a JTS WKBReader
// myResultSet is a JDBC ResultSet
Geometry geom = myWKBReader.read(myResultSet.getBytes("st_asbinary"));

POM:

  <dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>9.2-1003-jdbc4</version>
  </dependency>

答案 2 :(得分:0)

以Postgres

运行此命令
ALTER DATABASE table SET bytea_output TO 'escape';

然后重启Postgres。