GEOSGeometry в geos::geom::Geometry

У меня наверное тривиальная проблема. Я пытаюсь использовать библиотеку GEOS. У меня есть функции, использующие библиотеку GEOS, в моей собственной библиотеке. И я хочу использовать эту библиотеку в своем плагине QGIS, написанном на C++. Проблема в том, что функции в моей библиотеке работают с geos::geom::Geometry, а в плагине QGIS есть GEOSGeometry. Я думал, что это одно и то же, но, вероятно, это не так.

Может ли кто-нибудь объяснить мне разницу между этими двумя и дать мне совет, как преобразовать их друг в друга или сказать мне, что я делаю неправильно? Спасибо.


person TinF    schedule 10.02.2013    source источник


Ответы (2)


GEOSGeometry — это typedef для структуры, используемой в C (не C++) API. В официальной документации указано, что использование C API предпочтительнее, чем C++ API, поскольку оно может быть более стабильным (с точки зрения будущих изменений).

Я не уверен, что вы можете просто создавать структуры (я бы не советовал). Я предлагаю вам использовать C API вместо C++ API.

person Constantinius    schedule 10.02.2013

Нет, вы не можете просто провести преобразование между типами API GEOS C GEOSGeometry и типами API C++ из иерархии, основанной на классе geos::geom::Geometry.

Однако вы можете преобразовать свою геометрию, используя WKB в качестве формата обмена. между объектами C API и C++ API.

person mloskot    schedule 15.02.2017