2014-03-12 34 views
1

我正在嘗試讀取PostGIS幾何列,並將它作爲具有休眠功能的Java byte[]進行保存。將Postgres幾何讀入hibernate的byte []中?

據我所知,我應該用它在psql中代表它的方式存儲它。

我設法寫它,甚至把它內psql但是當我與wkbreader讀它 - 我得到以下錯誤:

com.vividsolutions.jts.io.ParseException: Unknown WKB type 48

回答

2

PostGIS的exports a ST_AsBinary function或者(如果你想保留SRID)ST_AsEWKB

您應該存儲此函數的結果,而不是嘗試投射顯示錶示形式,然後使用ST_GeomFromWKBST_GeomFromEWKB(取決於您在輸出上是使用AsBinary還是AsEWKB表單)加載。

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> 
0

運行此命令作爲Postgres

ALTER DATABASE table SET bytea_output TO 'escape'; 

然後重新啓動Postgres。

相關問題