Etiket sınıflarını ve Tanım sorgularını kullanma - hangisi en iyi performansı gösterir?


11

Hangi bir ArcSDE coğrafi veritabanında saklanan çok büyük veri kümeleriyle ArcMap içinde çalışmak için en iyi performansı sağlar? Belirli özellikleri etiketlemek için karmaşık SQL sorguları kullanan birden çok etiket sınıfı veya her katman için tanım sorgusu olarak ayarlanan aynı karmaşık SQL sorgularını kullanarak aynı katmanın birden çok kopyası mı?


2
"Kendi tanım sorgusu ve basit alan tabanlı etiketleme ile her biri aynı katmanın birden fazla kopya" favori olarak gidecek düşünüyorum ama ben bu bağırsak hissi yedeklemek için hiçbir metrikleri bu yüzden bu harika bir soru olduğunu düşünüyorum. Bir milyon çokgen içeren bir dosya coğrafi veritabanı özellik sınıfı, tablonuzda çok büyük bir veri kümesi olarak nitelendirilir mi?
PolyGeo

Yanıtlar:


5

Etiket sınıflarındaki SQL sorgularının bölünmüş katmanlardakiyle aynı olduğu varsayılarak, birden çok etiket sınıfına sahip tek katmanlı yaklaşım daha hızlı olacaktır. Neden?:

ArcMap'ta etiketleme, katman çizimi için bir sorgu ve ardından her etiket sınıfı için bir sorgu yürütür. Böylece 4 etiket sınıfına sahip bir katman, çizilen tüm özellikler için bir kez (1 sorgu) ve ardından toplam 4 ek kez (her etiket sınıfı için bir tane veya 4 sorgu daha) sorgulayacaktır = 5 toplam sorgu

Katmanları ayırırsanız, her katman için 1 filtrelenmiş sorgu (tanım sorgusu) artı her etiket sınıfı için aynı sorgunuz (4 sorgu daha) = 8 toplam sorgu

Neredeyse tüm durumlarda, veri kaynağına bağlı olmasına rağmen, yalnızca düz sorgu yükü nedeniyle 5 sorgu 8 sorgudan daha hızlı olacaktır.

ArcGIS Server'da özellik etiketleme için bir önbellek kullanılır ve etiket sınıfları satıcıya özgü işlevler olmadan oldukça standart SQL kullandığında, büyük olasılıkla 4 etiket sınıfına sahip 1 katman tek bir sorgu ile işlenir.


2
Ancak, tanım sorgusu senaryosu ile etiket sınıfları oluşturmazdım. Yalnızca tek bir alan değerine göre etiketlenirler. Yoksa üçüncü paragrafı yanlış mı okuyorum?
ianbroad

Etiket sınıfları, bir SQL tarafından tanımlanan (burada bir tanım sorgusu ile tam olarak aynı) bir özellik alt kümesini etiketlemek için kullanılır ve kendi metin sembollerine, etiket ifadelerine ve yerleşim kurallarına sahiptir. Açıklamanızdan, sınıflardan tanım sorgusuna geçişin yalnızca tek bir alanda nasıl etiketleme yapabileceğinizi açık değil. Karmaşık SQL sorguları değil karmaşık etiket ifadelerine mi başvuruyorsunuz?
Craig Williams

1
Hayır, her iki senaryoda da hiçbirinin etiket ifadesi kullanmadığını kastediyorum. Her ikisi de tek bir alan kullanılarak etiketlenir.
ianbroad

4
Esri'de etiketleme ekibi üzerinde çalışıyorum. Bunun nasıl çalıştığını yakından tanıyorum. Sorgunun arama konumu performansı etkilemez, ancak toplam sorguları azaltmak istersiniz.
Craig Williams

1
Sanırım cevabınızı şimdi anlıyorum Craig, ama daha kolay anlaşılır hale getirmek için tekrar sarmanın bir yolu olup olmadığını merak ediyorum. Matematiğinizin aslında benim ve diğerlerinin ilk düşündüğü gibi yanlış olmadığını anlamak için birkaç kez okumak zorunda kaldım.
jmpreiks

2

Bir SDE bağlantısından gelen bazı NHD verilerini kullanarak birkaç basit test yaptım ve her iki yöntem arasında çok az fark buldum.

  1. Tek bir katmanda 7 Etiket Sınıfı, ayrıca 7 ayrı semboloji: 36 saniye
  2. 7 Tanım sorgularıyla ayrı katmanlar, sorgu içermeyen her birinde tek etiket sınıfı: 37 saniye

Birkaç uyarı:

  1. Basit etiketler ve basit sorgular ile testim çok basitti, bu sorunun bir parçası olduğu için karmaşık sorgular test edilmelidir.
  2. Toplam sürenin yaklaşık üçte biri sembolojiyi çizmek içindi.
  3. Zamanlamam bir kronometre ile oldu, bu yüzden hata payı oldukça büyük.

Testleriniz için +1. Etiket çakışmalarının oluşup oluşmadığını fark edip etmediğini merak ediyorum. Belki de yazı tipi boyutunu büyütebilirsiniz, böylece çok sayıda etiket çakışır. Ardından yer çakışan etiketler seçeneğini devre dışı bırakın. Şimdi bir fark var mı?
Jens

1
Aslında testlerimde çok fazla etiket çakışması vardı, çünkü kolayca ölçebileceğim gerçekten uzun bir işlem süresi elde etmek için büyük ölçüde göstermek zorunda kaldım.
jmpreiks

1
Her zaman olduğu gibi "etiket sınıfı yok" diye bir şey yoktur.
Craig Williams

Doğru Craig, cevabımı açıklığa kavuşturmak için düzenledim.
jmpreiks

1

Ben tanımlama sorgusu daha hızlı olacağını düşünüyorum çünkü öznitelik veri düzeyinde değil, nesne düzeyinde.

Yine de test etmek zorunda kalacaksın. Ancak sınıfları değil tanım sorgularını kullanırdım.


1
Evet, lütfen test edin (ve mümkünse rapor edin). Ayrıca tanım sorgularına da eğiliyorum, ancak kullanılabilirlik performans nedenlerinden dolayı. Etiket ifadesi iletişim kutuları ağrılı bir şekilde durur ve def sorgularından daha derin olan birkaç tıklama katmanıdır. Ayrıca python'a girmek daha kolaydır.
matt wilkie

Bunun bir tür teknik temel veya niceliksel test olmadan bir cevap olarak nitelendirdiğini sanmıyorum. Bazı insanları yanlış yönlendirebilir. Orijinal soruya bir yorum olarak daha iyi olurdu.
jmpreiks

Eğer yorum yapabilseydim bunu yapardım. Aşağı oy için teşekkürler. Sadece yardım etmeye çalışıyorum.
geogeek
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.