Menggunakan kelas Label vs kueri Definisi - mana yang melakukan yang terbaik?

11

Yang mana yang akan memberikan kinerja terbaik untuk bekerja dalam ArcMap dengan kumpulan data sangat besar yang disimpan dalam geodatabase ArcSDE? Beberapa kelas label menggunakan kueri SQL kompleks untuk melabeli fitur tertentu, atau beberapa salinan dari lapisan yang sama menggunakan kueri SQL kompleks yang sama yang ditetapkan sebagai kueri definisi untuk setiap lapisan?

ianbroad
sumber
2
Saya pikir "banyak salinan dari lapisan yang sama masing-masing dengan kueri definisi mereka sendiri dan pelabelan berbasis lapangan sederhana" akan masuk sebagai favorit tapi saya tidak punya metrik untuk mendukung perasaan itu jadi saya pikir ini adalah pertanyaan yang bagus. Apakah file fitur geodatabase kelas dengan satu juta poligon memenuhi syarat sebagai dataset yang sangat besar dalam bahasa Anda?
PolyGeo

Jawaban:

5

Dengan asumsi query SQL pada kelas label sama dengan yang ada di lapisan split, pendekatan lapisan tunggal dengan kelas label ganda akan lebih cepat. Mengapa?:

Pelabelan di ArcMap akan mengeksekusi satu kueri untuk lapisan gambar dan kemudian satu kueri untuk setiap kelas label. Jadi sebuah layer dengan 4 kelas label akan melakukan kueri sekali (1 kueri) untuk semua fitur yang diambil dan kemudian total 4 kali tambahan (satu untuk setiap kelas label atau 4 kueri lagi) = 5 kueri total

Jika Anda membagi lapisan, Anda akan memiliki 1 kueri yang difilter (kueri definisi) untuk setiap lapisan (4 kueri) ditambah kueri yang sama untuk setiap kelas label (4 kueri lagi) = 8 kueri total

Dalam hampir semua kasus, 5 kueri akan lebih cepat dari 8 kueri karena hanya overhead kueri meskipun tergantung pada sumber data.

Catatan, di ArcGIS Server cache digunakan untuk pelabelan fitur dan 1 layer dengan 4 kelas label kemungkinan besar akan ditangani melalui satu permintaan ketika kelas label menggunakan SQL standar yang cukup tanpa fungsi khusus vendor.

Craig Williams
sumber
2
Tapi, dengan skenario kueri definisi, saya tidak akan membuat kelas label. Mereka hanya akan diberi label berdasarkan nilai bidang tunggal. Atau apakah saya salah membaca paragraf ketiga?
ianbroad
Kelas label digunakan untuk memberi label subset fitur yang didefinisikan oleh klausa SQL where (persis sama dengan kueri definisi) dan memiliki simbol teks, ekspresi label, dan aturan penempatannya sendiri. Dari uraian Anda, tidak jelas bagaimana cara memindahkan dari kelas ke kueri definisi memungkinkan Anda memberi label hanya pada satu bidang. Apakah Anda mengacu pada ekspresi label yang kompleks bukan query SQL yang kompleks?
Craig Williams
1
Tidak, maksud saya hanya untuk kedua skenario, tidak ada yang menggunakan ekspresi label. Keduanya dilabeli menggunakan bidang tunggal.
ianbroad
4
Saya bekerja di tim label di Esri. Saya akrab dengan cara kerjanya. Lokasi panggilan kueri tidak akan memengaruhi kinerja, tetapi Anda ingin mengurangi kueri total.
Craig Williams
1
Saya pikir saya mengerti jawaban Anda sekarang Craig, tapi saya ingin tahu apakah ada beberapa cara untuk reword agar lebih mudah dimengerti. Saya harus membacanya beberapa kali untuk menyadari bahwa matematika Anda sebenarnya mungkin tidak salah seperti yang saya dan orang lain pikirkan sebelumnya.
jmpreiks
2

Saya menjalankan beberapa tes yang sangat sederhana menggunakan beberapa data NHD yang berasal dari koneksi SDE dan menemukan sedikit perbedaan antara kedua metode.

  1. 7 Label Kelas dalam satu lapisan, juga 7 simbologi terpisah: 36 detik
  2. 7 Pisahkan layer dengan kueri definisi, kelas label tunggal di masing-masing tanpa kueri: 37 detik

Beberapa peringatan:

  1. Tes saya sangat sederhana dengan label sederhana dan pertanyaan sederhana, pertanyaan kompleks harus diuji karena itu adalah bagian dari pertanyaan.
  2. Sekitar sepertiga dari total waktu adalah untuk menggambar simbologi.
  3. Waktu saya adalah dengan stop watch sehingga margin of error cukup besar.
jmpreiks
sumber
+1 untuk tes Anda. Saya bertanya-tanya apakah ada bedanya apakah konflik label terjadi atau tidak? Mungkin Anda bisa memperbesar ukuran font sehingga banyak daftar yang tumpang tindih. Kemudian nonaktifkan opsi label tempat yang tumpang tindih. Apakah ada perbedaan sekarang?
Jens
1
Sebenarnya ada banyak konflik label dalam pengujian saya karena saya harus menunjukkan sebagian besar untuk mendapatkan waktu pemrosesan yang sangat panjang yang dapat saya ukur dengan mudah.
jmpreiks
1
Tidak ada yang namanya "tidak ada kelas label" karena selalu ada satu.
Craig Williams
Benar Craig, saya mengedit jawaban saya untuk mengklarifikasi.
jmpreiks
1

Saya pikir permintaan definisi akan lebih cepat karena berada pada level objek dan bukan pada level data atribut.

Anda masih harus menguji. Namun saya akan menggunakan query definisi dan bukan label kelas.

geogeek
sumber
1
Ya, silakan uji (dan laporkan kembali jika Anda bisa). Saya juga condong ke pertanyaan definisi, tetapi untuk alasan kinerja kegunaan. Dialog ekspresi label sangat lamban dan beberapa lapisan klik lebih dalam dari yang kueri def. Mereka juga lebih mudah didapat dengan python.
matt wilkie
Saya tidak berpikir ini memenuhi syarat sebagai jawaban tanpa semacam dasar teknis atau pengujian kuantitatif. Mungkin menyesatkan beberapa orang. Akan lebih baik sebagai komentar untuk pertanyaan awal.
jmpreiks
Saya akan melakukan itu jika saya memiliki kemampuan untuk berkomentar. Terima kasih atas suaranya. Hanya berusaha membantu.
geogeek