Чтение геометрии Postgres в байт [] с помощью спящего режима?

1

Я пытаюсь прочитать столбец геометрии PostGIS и сохранить его как byte[] Java byte[] с помощью спящего режима.

Насколько я знаю, я должен хранить его на Java так, как он представлен в psql.

Мне удается написать его и даже увидеть его в psql но когда я прочитал его с помощью wkbreader, я получаю следующую ошибку:

com.vividsolutions.jts.io.ParseException: Неизвестный тип WKB 48

Теги:
hibernate
geometry

3 ответа

2
Лучший ответ

PostGIS экспортирует ST_AsBinary функцию или (если вы хотите сохранить SRID) ST_AsEWKB.

Вы должны сохранить результаты этой функции, а не пытаться отобразить представление отображения, а затем загрузить с помощью ST_GeomFromWKB или ST_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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню