2015-03-16 1 views
3

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

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

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

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

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

+0

Вы можете использовать [ST_GeomFromGeoJSON] (http://www.postgis.org/docs/ST_GeomFromGeoJSON.html) для чтения строки GeoJSON в качестве геометрии. –

+0

Спасибо Майку за ответ, я попробую это. Но что вы думаете о передаче db этой геометрии? –

ответ

1

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

Удачи!

1

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

+0

Спасибо @Paul за ответ. Я не должен сохранять это как String/BLOB, потому что у меня есть сервер wms с другой стороны, и я хочу поделиться с ним своей геометрией. Если я сохраню геометрию как String, сервер wms не сможет принять ее как значение geom. –

0

Возможно, мне нужно разобрать geojson и создать объект polygon из координат geojson.

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

geometry ST_GeomFromGeoJSON(text geomjson); 

Это дает EWKB-геометрии, которые могут быть сохранены в БД, перепроецируется, переформатировать и т.д. Параметр является GeoJSON в виде строки.

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

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