@ Dano dengan benar memunculkan beberapa masalah yang sebaiknya ditangani dalam balasan penuh.
Satu kesulitan , sudah dicatat oleh @Celenius, adalah bahwa gabungan antara B dan A (dalam arah manapun) menduplikasi semua bidang; akan sulit untuk memperbaikinya. Saya telah menyarankan dalam komentar bahwa cara mudah yang jelas (ekspor ke spreadsheet) menimbulkan pertanyaan tentang integritas data. Kesulitan lain , yang sudah ditangani oleh proposal Celenius, menyangkut penyelesaian masalah ini ketika tidak ada kombinasi atribut yang dapat berfungsi sebagai kunci untuk A dan B, karena itu menghalangi bergabungnya basis data. Penggabungan spasial mengatasi masalah itu.
Lalu, apa solusi yang baik? Satu pendekatan menggunakan A untuk mengidentifikasi catatan B yang sesuai yang berisi data yang diinginkan. Bergantung pada asumsi tentang konfigurasi poligon - apakah tumpang tindih, apakah beberapa dapat mengandung yang lain, dll - ini dapat dilakukan dengan berbagai cara: menggunakan satu lapisan untuk memilih objek di yang lain, atau melalui gabungan. Intinya di sini adalah bahwa semua yang ingin kita lakukan pada tahap ini adalah memilih subset dari B yang sesuai dengan A.
Setelah mencapai seleksi itu, ekspor seleksi dan biarkan ganti A. Selesai .
Solusi ini mengasumsikan bahwa semua bidang di B dimaksudkan untuk menggantikan rekan-rekan mereka di A. Jika tidak, maka sangat diperlukan untuk melakukan penggabungan 1-1 dari B (sumber) ke A (tujuan). Gabung berdasarkan pengidentifikasi adalah yang terbaik, tetapi membuat gabung pada identitas poligon (Celenius) berfungsi dengan baik jika id tidak tersedia dan tidak ada peluang bentuk poligon yang sesuai di A dan B mungkin berbeda, namun sedikit . (Ini adalah titik yang halus, dan kemungkinan penyebab kesalahan berbahaya, karena pengeditan sebelumnya pada B ke poligon yang tidak sesuai dengan A masih bisa secara tidak terlihat memodifikasi poligon lain dalam B jika GIS "patah" atau "mempertahankan topologi" atau secara otomatis membuat perubahan global selama pengeditan lokal.)
Pada titik ini, ada dua salinan dari setiap bidang: jika [Foo] adalah bidang umum untuk A dan B, maka gabungannya berisi A. [Foo] dan B. [Foo]. Menggunakan perhitungan lapangan , salin B. [Foo] ke A. [Foo]. Ulangi untuk semua bidang yang dibutuhkan. Setelah ini selesai, hapus gabungan.
Meskipun prosedur ini bisa sedikit berat ketika banyak bidang yang terlibat, manfaatnya termasuk
- Sangat mudah dan cepat untuk skrip.
- Scripting itu meninggalkan jejak audit yang mendokumentasikan pemrosesan yang dilakukan pada data. Ini sangat penting untuk melindungi integritas data.
- Itu membela terhadap beberapa jenis kesalahan grosir, seperti mempertahankan bidang yang salah setelah bergabung (dengan demikian menjaga data lama, bukan data baru untuk bidang itu) atau menghapus bidang penting.
- Ini memanfaatkan pertahanan built-in yang ditawarkan oleh sistem manajemen database, seperti penegakan tipe data dan penegakan aturan bisnis, yang beroperasi untuk mencegah dan mengidentifikasi kesalahan dan menjaga konsistensi di antara semua tabel dan lapisan dalam database.
Beberapa prinsip panduan yang terlibat dalam saran ini adalah
- Gunakan sistem manajemen basis data Anda untuk memproses data daripada menggunakan perangkat lunak yang tidak dirancang atau tidak cocok untuk tugas ini.
- Hindari mengubah struktur basis data (seperti menghapus atau menambah bidang) saat operasi tidak benar-benar membutuhkannya.
- Gunakan kemampuan perangkat lunak untuk otomatisasi untuk menyederhanakan pekerjaan, mendokumentasikannya, dan membuat operasi dapat direproduksi.
Orang mungkin keberatan bahwa dalam banyak kasus ada cara yang lebih cepat dan mudah untuk mencapai hasil yang sama. Ya, mungkin ada, dan mereka bisa efektif dan biasanya mereka bekerja ketika dilakukan dengan hati-hati. Tetapi solusi yang berisiko data sulit untuk direkomendasikan dan dipertahankan sebagai jawaban tujuan umum. Mereka paling baik digunakan dalam situasi satu kali dengan dataset kecil di mana korupsi dalam data harus dengan cepat menjadi jelas dan konsekuensi dari kesalahan tersebut tidak material.