GEOSGeometry to geos :: geom :: Геометрия

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

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

1

Решение

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

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

0

Другие решения

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

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

0

По вопросам рекламы [email protected]