2つのデータセットに同一のコンテンツがあるかどうかを効率的に(プログラムで)判断する方法


8

与えられた:

  • ジオデータベースAという名前の100個のデータセットが含ま1 ... 100
  • b 1 .. b 100という名前の100個のデータセットを含むジオデータベースB

プログラムで(*)各データセットのペア(a ib i)が同じ内容であるかどうかを確認したい。100ペアを比較するので、効率的な比較方法が必要です。理想的には、全体の比較に数秒しかかからないでしょう。

(*) 注:コード例を探しているからではなく(喜んで受け入れます)、「プログラム的」という用語を使用していますが、非常に高速な比較方法を探していることを強調するために、 100のデータセットペアを手動で比較するときに可能です。

私はこの比較方法を自分で実装するつもりなので、基本的に探しているのはアルゴリズムであり、すぐに使えるツールではありません(おそらくオープンソースの場合を除きます)。

データセットの完全な内容を比較する必要があるため(おそらく、データ管理データ比較ツールセットのツールを使用するため)、私は不可能を尋ねている可能性が高いことを認識しています。または、少なくともデータセットのハッシュ/ダイジェストを比較しますが、ダイジェストを生成するには、最初にすべてのデータセットのデータを調べる必要があります。

したがって、これまでの私の最善のアプローチは次のとおりです。

  1. (データセットの対た第一判断IB iは)ことができない可能性が同一の内容を有します。

  2. 残りのデータセットのペアに対してのみ、完全なデータ比較を実行します。

私の質問:

  • ArcGISは、クエリを実行できるある種のデータセットダイジェストを自動計算しますか?もしそうなら、どうですか?

    (私はそのようなことを何も知らないので、私は答えが「いいえ」であることを期待します。私を誤解してください。)

  • 2つのデータセットに同一のコンテンツを含めることができないかどうかを判断する、非常に効率的で信頼性の高い方法は何ですか?

    (これまでのところ、変更タイムスタンプの比較は信頼性がわかりませんが、データセットのスキーマの比較を検討しました。ArcGISジオデータベースのタイムスタンプの信頼性は?この目的に役立つ他のデータセット特性はありますか?)


関連が、重複しない:gis.stackexchange.com/questions/49427/...
nicksan

回答:


2

機能属性テーブルにフィールドを作成し、IEditEventsまたはクラス拡張を使用して、機能のハッシュ(MD5など)を計算できます。

ハッシュは、機能の文字列表現(jsonまたはxmlのいずれか)で計算され、WKTは形状フィールドに使用できます。


私は実際にそのようなことをするかもしれません。ダイジェストの計算を回避する機会がなければ、すべてのシナリオでこれを機能させるのは簡単ではないかもしれません。
stakx 2013年

@stakxはい、消化不良を回避するのは難しいかもしれません:)クラス拡張はおそらくCRUDを最も制御するでしょう。
Kirk Kuykendall 2013年

0

X線を見てスキーマを比較し、スキーマが一致したときにデータ比較ツールセットの機能比較、テーブル比較などを実行して内容を比較します。このアプローチを既に試したことがある場合は、このアプローチが不十分な場合があることをお知らせください。


@PolyGeo様 リンクありがとうございます。このツールはとても便利に見えます。しかし、すぐに使えるツールではなく、アルゴリズムを探していることを忘れてしまったことを実感しました。回答を修正しました。
stakx 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.