Bagaimana cara efisien (secara terprogram) menentukan apakah dua dataset memiliki / tidak memiliki konten yang identik?

8

Diberikan:

  • sebuah geodatabase A yang berisi 100 dataset bernama sebuah 1 .. a 100
  • B geodatabase yang berisi 100 dataset bernama b 1 .. b 100

Saya ingin secara terprogram (*) menentukan untuk setiap pasangan dataset ( a i , b i ) apakah mereka memiliki konten yang identik. Karena saya membandingkan 100 pasangan, saya memerlukan metode perbandingan yang efisien. Idealnya, seluruh perbandingan hanya perlu beberapa detik.

(*) Catatan: Saya menyebutkan istilah "terprogram", bukan karena saya mencari contoh kode (walaupun saya dengan senang hati menerimanya), tetapi untuk menekankan bahwa saya mencari metode perbandingan yang sangat cepat, yang tidak akan pernah dimungkinkan ketika membandingkan 100 pasangan dataset secara manual.

Saya berencana untuk menerapkan metode perbandingan ini sendiri, jadi yang saya cari pada dasarnya adalah sebuah algoritma , dan bukan alat yang siap digunakan (kecuali mungkin ketika itu open-source).

Saya sadar bahwa saya kemungkinan bertanya hal yang mustahil, karena ini akan membutuhkan membandingkan konten lengkap dataset (mungkin dengan alat-alat di Perangkat Manajemen DataPerbandingan Data ); atau setidaknya membandingkan hash / pencernaan dataset, tetapi menghasilkan pencernaan juga harus melalui semua data dataset terlebih dahulu.

Karena itu pendekatan terbaik saya sejauh ini adalah sebagai berikut:

  1. Tentukan terlebih dahulu pasangan dataset mana ( a i , b i ) yang tidak mungkin memiliki konten identik.

  2. Lakukan perbandingan data lengkap hanya untuk pasangan dataset yang tersisa.

Pertanyaan saya:

  • Apakah ArcGIS terjadi secara otomatis menghitung beberapa jenis dataset digest yang dapat saya tanyakan? Jika ya, bagaimana caranya?

    (Saya tidak mengetahui hal semacam itu, jadi saya berharap jawabannya "tidak". Tolong buktikan saya salah.)

  • Apa beberapa cara yang sangat efisien dan andal untuk menentukan apakah dua dataset tidak mungkin memiliki konten yang identik?

    (Sejauh ini saya telah mempertimbangkan membandingkan cap waktu modifikasi, meskipun saya tidak tahu seberapa dapat diandalkannya hal ini, dan membandingkan skema dataset. Seberapa andalkah cap waktu dalam geodatabase ArcGIS? Apakah ada karakteristik dataset lain yang dapat berfungsi untuk tujuan ini?)

stakx
sumber
Relevan, tetapi tidak duplikat: gis.stackexchange.com/questions/49427/…
nicksan

Jawaban:

2

Anda bisa membuat bidang pada tabel atribut fitur dan menghitung hash, misalnya MD5 , pada fitur menggunakan IEditEvents atau ekstensi kelas.

Hash akan dihitung pada representasi string dari fitur (baik json atau xml), di mana WKT dapat digunakan untuk bidang bentuk.

Kirk Kuykendall
sumber
Saya mungkin sebenarnya melakukan sesuatu seperti itu. Meskipun mungkin tidak mudah membuat ini berfungsi dalam setiap skenario tanpa ada peluang untuk menghindari perhitungan digest.
stakx
@stakx Ya, menghindari gangguan pencernaan mungkin rumit :) Ekstensi kelas mungkin akan memberikan kontrol paling besar atas CRUD.
Kirk Kuykendall
0

Saya akan melihat X-ray untuk membandingkan skema dan kemudian Fitur Membandingkan, Tabel Membandingkan, dll dari toolset Perbandingan Data untuk membandingkan konten ketika skema cocok. Jika Anda sudah mencoba pendekatan ini maka mungkin beri tahu kami di mana pendekatan ini mungkin gagal.

PolyGeo
sumber
Hai @PolyGeo. Terima kasih atas tautannya, alat ini terlihat sangat berguna. Namun, itu membuat saya menyadari bahwa saya lupa menyebutkan bahwa saya tidak mencari siap digunakan alat , tetapi untuk algoritma . Saya telah mengubah jawaban saya.
stakx