我正在嘗試讀取PostGIS幾何列,並將它作爲具有休眠功能的Java byte[]
進行保存。將Postgres幾何讀入hibernate的byte []中?
據我所知,我應該用它在psql
中代表它的方式存儲它。
我設法寫它,甚至把它內psql
但是當我與wkbreader讀它 - 我得到以下錯誤:
com.vividsolutions.jts.io.ParseException: Unknown WKB type 48
我正在嘗試讀取PostGIS幾何列,並將它作爲具有休眠功能的Java byte[]
進行保存。將Postgres幾何讀入hibernate的byte []中?
據我所知,我應該用它在psql
中代表它的方式存儲它。
我設法寫它,甚至把它內psql
但是當我與wkbreader讀它 - 我得到以下錯誤:
com.vividsolutions.jts.io.ParseException: Unknown WKB type 48
PostGIS的exports a ST_AsBinary
function或者(如果你想保留SRID)ST_AsEWKB
。
您應該存儲此函數的結果,而不是嘗試投射顯示錶示形式,然後使用ST_GeomFromWKB
或ST_GeomFromEWKB
(取決於您在輸出上是使用AsBinary還是AsEWKB表單)加載。
我看到通過升級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>
運行此命令作爲Postgres
ALTER DATABASE table SET bytea_output TO 'escape';
然後重新啓動Postgres。