我正在尝试阅读PostGIS几何列并将其保存为带有hibernate的Java byte[]
。
据我所知,我应该用它在psql
中表示的方式存储它。
我设法写它甚至在psql
内看到它但是当我用wkbreader读它时 - 我收到以下错误:
com.vividsolutions.jts.io.ParseException:未知的WKB类型48
答案 0 :(得分:2)
PostGIS exports a ST_AsBinary
function或(如果您想保留SRID)ST_AsEWKB
。
您应该存储此函数的结果,而不是尝试转换显示表示,然后加载ST_GeomFromWKB
或ST_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。