1

次の機能を備えたデスクトップアプリケーション用のacまたはc ++ライブラリを探しています(サーバークライアントなし、ディスクに保存されたデータのみを編集する必要があります)

  • 空間クエリが高速になるように空間データを仮想メモリに格納します
  • 必要に応じて、スマートな更新方法で同等のデータをディスクに保持できます。更新は即時である必要はありませんが、バッファリングできます。

. libspatialindex は要件を満たしているようです。しかし、この Web ページからは明らかでないことが 1 つあります。たとえば、ディスクから大量のデータをロードして、小さなオブジェクトだけを更新したいとします。libspatialindex はデータ全体を再シリアル化してディスクに書き込みますか、それとも変更が必要な部分だけを更新するのが賢明ですか?

RTree を使用した sqlite はこれを達成しているようです。ただし、SQL の全体ではなく、単純な C++ ライブラリが必要です。

他に代替手段はありますか。GEOS にはスマート ディスク イメージの更新機能がありますか?

4

1 に答える 1

1

libspatialindexのDiskStorageManagerドキュメントには次のように書かれています。

ディスクストレージマネージャは、情報を格納するために2つのランダムアクセスファイルを使用します。[...] .idxファイルは、初期化中にメインメモリにロードされ、ストレージマネージャーのフラッシュ後またはオブジェクトの破棄中にのみディスクに書き込まれます。予期しない障害が発生した場合、古い.idxファイルが原因でストレージマネージャーへの変更が失われます。そのような災害を回避することは将来の仕事です。

...これは、インデックスエントリが変更されるたびに、データファイル内の対応するページが更新されることを意味します。

これは基本的にSQLiteデータベースに似ていますが、クラッシュ後にSQLiteファイルが破損しない点が異なります。(SQLiteストレージマネージャーはlibspatialindexの明らかな拡張機能のようです。)


SQLiteを検討することをお勧めします。C APIが気に入らない場合は、QtなどのCAPIをラップするフレームワークを使用してください。

于 2013-02-11T20:43:40.357 に答える