Gabungan satu-ke-banyak pada kelas fitur ke sebuah tabel

10

Saya menggunakan ArcMap 10.2.2 dengan lisensi Advanced. Saya telah menggunakan ArcMap untuk analisis dasar lainnya, tetapi saya cukup baru untuk program ini dan hanya memiliki keterampilan pengkodean dasar, tanpa pengalaman SQL di luar kueri yang sangat mendasar menggunakan pembangun kode SQL di ArcMap.

Saya memiliki poligon rentang geografis spesies dan saya memiliki tabel dengan daftar patogen / penyakit yang dibawa oleh spesies tersebut. Spesies tertentu membawa banyak patogen. Di dunia yang ideal, saya akan bergabung dengan poligon rentang ke tabel spesies + patogen dan menyimpan data poligon / spasial, tetapi sepertinya tidak ada alat GIS untuk melakukan ini (saya akan kemudian menghitung patogen yang tumpang tindih, jadi penting bahwa setiap kombinasi spesies-patogen memiliki fitur sendiri, daripada satu fitur yang memiliki informasi untuk beberapa patogen). Seperti inilah tampilan data saya (# 1 & # 2, # 3 untuk nanti):

Tabel atribut untuk fitur spasial:

tabel atribut untuk fitur spasial

Tabel tanpa data spasial:

tabel tanpa data spasial

(Harap dicatat bahwa ini bukan data nyata, dan kombinasi spesies-patogen mungkin tidak nyata. Saya sebenarnya memiliki 115 poligon dan 519 baris tabel. Spesies membawa antara 1-40 patogen dan karenanya spesies memiliki antara 1-40 baris dalam meja saya)

Sebagai bonus tambahan, karena analisis masa depan yang perlu saya lakukan, idealnya saya ingin bisa bergabung satu-ke-banyak ini sehingga saya bisa menyimpan kolom data tambahan dari tabel (lihat di bawah untuk contoh bagaimana ini terlihat). Namun, ini kurang penting karena jika saya bisa mengetahui cara melakukan join, saya hanya bisa mengulang analisisnya.

tabel tanpa data spasial, dengan bidang tambahan

Ada beberapa solusi yang saya temukan untuk masalah ini, tetapi mereka tidak bekerja untuk saya karena alasan yang tercantum di bawah ini:

Solusi 1: Blog David Aalbers - Saya terlalu pemula untuk mengetahui cara mengedit skrip yang lebih baru dan mencari cara mengimpornya ke ArcMap. Saya mencoba skrip yang lebih lama dan hanya menghasilkan satu ton poligon kosong berjudul test, test_1, test_1_1, test_1_1_1, dll.

Solusi 2: Gabung Satu-Untuk-Banyak - Saya mencoba menggunakan alat Make Query Table (dan saya tidak memiliki pengetahuan SQL, meskipun saya menggunakan pembuat ekspresi) dan saya mendapat ERROR 000383: Masalah dengan tabel, tidak dapat menemukan ruang kerja & Gagal menjalankan (MakeQueryTable). Semua file saya ada di folder yang sama, tetapi tidak ada dalam geodatabase.

MooseGirl
sumber
1
Make Query Table hanya akan bekerja dengan basis data
FelixIP
1
Make Query Table membutuhkan semua data dalam fgdb yang sama.
klewis

Jawaban:

22

Untuk memperbanyak fitur lakukan ini (tersedia untuk mereka yang memiliki ArcGIS 10.1 atau lebih tinggi).

  1. Tempatkan fitur dan tabel ke dalam file geodatabase yang sama (Anda harus mengonversi file Shapefile / Excel / DBF ke dalam geodatabase agar ini berfungsi).
  2. Pastikan poligon Anda memiliki bidang ID unik yang akan dipertahankan (Anda bisa membuat bidang Panjang dan menghitung ObjectID ke dalamnya sehingga nilai ObjectID tidak akan hilang).
  3. Lakukan penggabungan standar tabel (atribut, tidak ada data spasial) dengan fitur (data spasial) pada bidang yang cocok. Perhatikan bahwa tabel atribut fitur (data spasial) akan memiliki jumlah fitur yang sama seperti sebelumnya, tetapi jangan khawatir tentang ini, semuanya muncul di langkah berikutnya.
  4. Ekspor fitur ke geodatabase yang sama dengan kelas fitur baru (klik kanan layer dari daftar isi dan pilih ekspor). Perhatikan bahwa jumlah fitur dalam tabel atribut dari fitur yang diekspor sekarang memiliki jumlah fitur yang tepat, sama dengan tabel asli (dengan atribut, tidak ada data spasial) atau, dalam kasus banyak orang bergabung, satu set lengkap fitur untuk semua kombinasi fitur dan catatan terkait.

Fitur akan bertambah banyak dalam kelas fitur baru di mana setiap fitur akan hadir (bahkan jika tidak ada kecocokan dalam tabel) dan di mana ada kecocokan 1: M sebelumnya, fitur akan dikalikan untuk membuat 1: 1 cocokkan setiap fitur dengan semua entri tabelnya. Bidang ID unik yang Anda buat pada langkah 2 akan memungkinkan Anda untuk menghubungkan poligon yang dikalikan ke set poligon tunggal asli. Dengan kelas fitur baru dari fitur yang dikalikan, Anda dapat melakukan pilihan pada bidang tabel, ringkasan, Penggabungan Spasial, dll.

Jika Anda ingin menghasilkan nilai ID unik yang mewakili setiap spesies unik dan kombinasi penyakit, Anda dapat menggunakan versi 10.2 dari alat yang dijelaskan dalam posting Blog ini . Memiliki jenis kunci ini memungkinkan Anda menggunakannya untuk melakukan penggabungan standar ke tabel ringkasan dan statistik berdasarkan hubungan multi-bidang sebagai pengganti untuk membuat hubungan multi-bidang yang sebenarnya menggunakan pengaturan Make Query Table.

Berikut ini adalah referensi yang baik dari esri: https://support.esri.com/en/technical-article/000001228

Richard Fairhurst
sumber
Bekerja dengan sempurna ketika diekspor ke dalam geodatabase!
MooseGirl
1
Saya telah memodifikasi langkah 4 saya untuk menyatakan bahwa ekspor harus ke kelas fitur baru di geodatabase yang sama dengan data asli. Mengikuti prosedur itu harus selalu berhasil, walaupun ada kemungkinan bahwa beberapa variasi di mana sumber dan data keluaran disimpan juga diperbolehkan.
Richard Fairhurst
Itu sudah jelas sebelumnya (walaupun orang-orang yang putus asa di masa depan pasti akan menghargai itu dieja), tetapi pada awalnya saya tidak terhubung dengan benar ke folder geodatabase (atau sesuatu) karena itu tidak akan membiarkan saya mengekspor ke geodatabase. Saya memulai kembali dan bekerja dengan baik.
MooseGirl
1
Saya menambahkan bahwa fitur yang bergabung tidak akan memiliki jumlah atribut yang tepat dan fitur yang diekspor akan. Ini sangat membuat saya frustrasi ketika saya mencoba ini, sampai saya melewati semua langkah.
nittyjee
Bunyinya seperti ada yang hilang 'tidak' di # 3, "... akan notmemiliki jumlah fitur yang sama ..."
matt wilkie
-2

Permintaan SQL:

SELECT spp, disease, type
FROM table1, table2
WHERE table1.bimonial = table2.spp;
Cy T
sumber