1

我正在寻找具有以下功能的桌面应用程序(没有服务器客户端,只需要编辑存储在磁盘中的数据)的 ac 或 c++ 库

  • 将空间数据存储在虚拟内存中,因此空间查询速度很快
  • 可以选择以智能方式在磁盘中维护等效数据进行更新。更新不必是即时的,但它们可以被缓冲。

. libspatialindex 似乎满足要求。但是从网页上看不清楚的一件事是,假设我从磁盘加载了大量数据,只想更新一个很小的对象。libspatialindex 是否重新序列化整个数据并将其写入磁盘,或者只更新需要更改的部分是否明智?

带有 RTree 的 sqlite 似乎正在实现这一点。但是,我想要一个简单的 c++ 库而不是整个 sql 的东西。

有没有其他的选择。GEOS 是否有任何智能磁盘映像更新功能?

4

1 回答 1

1

libspatialindex 的DiskStorageManager 文档说:

磁盘存储管理器使用两个随机访问文件来存储信息。[...] .idx 文件在初始化期间加载到主内存中,并且仅在刷新存储管理器或在对象销毁期间写入磁盘。如果发生意外失败,对存储管理器的更改将由于过时的 .idx 文件而丢失。避免此类灾难是未来的工作。

...这意味着只要索引条目更改,数据文件中的相应页面就会更新。

这本质上类似于 SQLite 数据库,只是 SQLite 文件在崩溃后不会损坏。(SQLite 存储管理器似乎是 libspatialindex 的一个明显扩展。)


我建议考虑 SQLite;如果您不喜欢它的 C API,请使用包装它的框架,例如 Qt。

于 2013-02-11T20:43:40.357 回答