Utilizzo delle classi Label e delle query di definizione: qual è il migliore?


11

Quale fornirebbe le migliori prestazioni per lavorare all'interno di ArcMap con set di dati molto grandi memorizzati in un geodatabase ArcSDE? Più classi di etichette che utilizzano query SQL complesse per etichettare funzionalità specifiche o più copie dello stesso layer utilizzando le stesse query SQL complesse impostate come query di definizione per ogni layer?


2
Penso che "copie multiple dello stesso livello, ognuna con una propria query di definizione e una semplice etichettatura basata sul campo", entreranno tra i preferiti, ma non ho metriche per sostenere quella sensazione viscerale, quindi penso che questa sia un'ottima domanda. Una classe di caratteristiche di geodatabase di file con un milione di poligoni si qualificherebbe come un set di dati molto grande nel tuo linguaggio?
PolyGeo

Risposte:


5

Supponendo che le query SQL sulle classi di etichette siano uguali a quelle sui livelli suddivisi, l'approccio a livello singolo con più classi di etichette sarà più veloce. Perché?:

L'etichettatura in ArcMap eseguirà una query per il disegno del livello e quindi una query per ogni classe di etichette. Quindi un layer con 4 classi di etichette eseguirà una query una volta (1 query) per tutte le funzioni disegnate e quindi 4 volte aggiuntive totali (una per ogni classe di etichette o altre 4 query) = 5 query totali

Se dividi i livelli, avrai 1 query filtrata (query di definizione) per ogni layer (4 query) più quella stessa query per ogni classe di etichette (altre 4 query) = 8 query totali

In quasi tutti i casi, 5 query saranno più veloci di 8 query a causa del semplice sovraccarico di query, sebbene dipenda dall'origine dati.

Nota: in ArcGIS Server viene utilizzata una cache per l'etichettatura delle funzioni e molto probabilmente 1 livello con 4 classi di etichette verrà gestito tramite una query quando le classi di etichette utilizzano SQL abbastanza standard senza funzioni specifiche del fornitore.


2
Ma, con lo scenario della query di definizione, non vorrei creare classi di etichette. Sarebbero semplicemente etichettati in base a un singolo valore di campo. O sto leggendo il terzo paragrafo in modo errato?
ianbroad,

Le classi di etichette vengono utilizzate per etichettare un sottoinsieme di funzioni definite da una clausola SQL where (esattamente la stessa di una query di definizione) e hanno il proprio simbolo di testo, espressione di etichetta e regole di posizionamento. Non mi è chiaro dalla tua descrizione come passare dalle classi a una query di definizione ti permetta di etichettare solo su un singolo campo. Ti riferisci a espressioni di etichette complesse e non a query SQL complesse?
Craig Williams,

1
No, intendo solo che per entrambi gli scenari, né utilizza un'espressione etichetta. Entrambi sono etichettati usando un singolo campo.
ianbroad,

4
Lavoro nel team di etichettatura di Esri. Conosco profondamente come funziona. La chiamata della posizione della query non influirà sulle prestazioni, ma ti consigliamo di ridurre le query totali.
Craig Williams,

1
Penso di aver capito subito la tua risposta Craig, ma mi chiedo se c'è un modo per riformularla per renderlo più facile da capire. Ho dovuto leggerlo alcune volte per rendermi conto che la tua matematica probabilmente non è sbagliata come io e altri abbiamo pensato.
jmpreiks,

2

Ho eseguito alcuni test molto semplici utilizzando alcuni dati NHD provenienti da una connessione SDE e ho riscontrato una differenza minima tra i due metodi.

  1. 7 classi di etichette in un singolo livello, anche 7 simbologie separate: 36 secondi
  2. 7 livelli separati con query di definizione, classe di etichetta singola in ciascuna senza query: 37 secondi

Alcune avvertenze:

  1. Il mio test è stato molto semplice con etichette semplici e query semplici, le query complesse dovrebbero essere testate poiché faceva parte della domanda.
  2. Circa un terzo del tempo totale è stato dedicato al disegno della simbologia.
  3. Il mio tempismo era con un cronometro, quindi il margine di errore è piuttosto grande.

+1 per i tuoi test. Mi chiedo se fa differenza se si verificano o meno conflitti di etichette ? Forse puoi ingrandire la dimensione del carattere in modo che molte etichette si sovrappongano. Quindi disabilitare l'opzione Posiziona etichette sovrapposte. C'è differenza adesso?
Jens,

1
In realtà ci sono stati molti conflitti con le etichette nei miei test perché dovevo dimostrare in larga misura di ottenere un tempo di elaborazione davvero lungo che potevo facilmente misurare.
jmpreiks,

1
Non esiste "nessuna classe di etichetta" in quanto ne esiste sempre una.
Craig Williams,

Vero Craig, ho modificato la mia risposta per chiarire.
jmpreiks,

1

Penso che la query di definizione sarebbe più veloce perché è a livello di oggetto e non a livello di dati di attributo.

Dovresti ancora provare. Tuttavia, vorrei utilizzare le query di definizione e non le classi di etichette.


1
Sì, per favore prova (e riferisci se puoi). Mi affido anche alle query di definizione, ma per motivi di prestazioni di usabilità. Le finestre di dialogo di espressione dell'etichetta sono dolorosamente lente e diversi livelli di clic più profondi di quelli di query di definizione. Sono anche più facili da trovare in Python.
Matt Wilkie,

Non penso che ciò si qualifichi come una risposta senza una sorta di base tecnica o test quantitativi. Potrebbe fuorviare alcune persone. Sarebbe stato meglio come commento alla domanda originale.
jmpreiks,

Lo avrei fatto se avessi avuto la possibilità di commentare. Grazie per il voto negativo. Sto solo cercando di aiutare.
geogeek,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.