【发布时间】:2013-01-25 17:41:17
【问题描述】:
我可能有一些小问题。我正在尝试使用 GEOS 库。我在自己的库中有使用 GEOS 库的函数。我想在我用 C++ 编写的 QGIS 插件中使用这个库。问题是,我的库中的函数使用geos::geom::Geometry,但在QGIS 插件中,有GEOSGeometry。我认为这是同一件事,但可能不是。
谁能解释一下这两者之间的区别并给我一个建议,如何将它们相互转换或告诉我我做错了什么?谢谢。
【问题讨论】:
我可能有一些小问题。我正在尝试使用 GEOS 库。我在自己的库中有使用 GEOS 库的函数。我想在我用 C++ 编写的 QGIS 插件中使用这个库。问题是,我的库中的函数使用geos::geom::Geometry,但在QGIS 插件中,有GEOSGeometry。我认为这是同一件事,但可能不是。
谁能解释一下这两者之间的区别并给我一个建议,如何将它们相互转换或告诉我我做错了什么?谢谢。
【问题讨论】:
GEOSGeometry 是 C(非 C++)API 中使用的结构的 typedef。官方文档中指出,使用 C API 优于 C++ API,因为它可能更稳定(就未来的变化而言)。
我不确定你是否可以简单地铸造结构(我建议不要这样做)。我建议你使用 C API 而不是 C++ API。
【讨论】:
不,您不能简单地在 GEOS C API 类型 GEOSGeometry 和 C++ API 类型之间从根植于 geos::geom::Geometry 类的层次结构中进行转换。
不过,您可以在 C API 和 C++ API 对象之间使用convert your geometries using WKB as an interchange format。
【讨论】: