Как сохранить геойсон (в javascript) в геометрии (MultiPolygon,4326) в PostGIS с Hibernate

Я работаю над проектом jsf (версия 2.2). У меня есть объект geoJson в javascript. С другой стороны у меня есть столбец с типом геометрии (MultiPolygon,4326) в PostGIS. Я использую Hibernate 4.3.8 и Postgresql 9.3.

Определение столбца геометрии в классе модели

@Type(type="org.hibernate.spatial.GeometryType")
@Column(name="geom")
private Polygon geom;

Я также включил Hibernate Spatial 4.x в свой проект и могу получить доступ к строке геоджона в управляемом бине. Но я не знаю, как я могу вставить этот геойсон в мою базу данных. Вероятно, мне нужно проанализировать geojson и создать объект многоугольника по координатам geojson и перейти к моей базе данных. Но мне не удалось. Как это сделать?

Заранее спасибо.

3 ответа

В отличие от этого вам не понадобится обработка БД над этим полем, так почему бы просто не сохранить внутри БД в виде String/BLOB.

Взгляните на проект геойсон-джексон. Я думаю, это то, что вы ищете (я пока не тестирую, но выглядит хорошо).

Удачи!!

Возможно, мне нужно проанализировать геойсон и создать объект многоугольника по координатам геойсона.

Вам не нужно этого делать, база данных может сделать это за вас, и велики шансы, что это будет быстрее, чем вы. Просто создайте геометрию из GeoJSON. В вашей базе данных используйте следующую функцию:

geometry ST_GeomFromGeoJSON(text geomjson);

Это приводит к EWKB-геометрии, которую можно сохранить в БД, перепроектировать, переформатировать и т. Д. Параметр - GeoJSON в виде строки.

Я понятия не имею, как вы можете вызвать эту функцию базы данных с Hibernate-пространственной, но должна быть функциональность для непосредственного выполнения sql-запросов. Будьте осторожны, это может привести к ошибкам SQL-инъекций.

PS: я вообще не рекомендую использовать Object-Relational-Mappers в контексте пространственных приложений, особенно из-за таких недоступностей.

Другие вопросы по тегам