Usar las clases de etiqueta frente a las consultas de definición: ¿cuál funciona mejor?

11

¿Cuál proporcionaría el mejor rendimiento para trabajar dentro de ArcMap con conjuntos de datos muy grandes almacenados en una geodatabase de ArcSDE? ¿Múltiples clases de etiquetas que usan consultas SQL complejas para etiquetar características específicas, o múltiples copias de la misma capa usando las mismas consultas SQL complejas establecidas como una consulta de definición para cada capa?

ianbroad
fuente
2
Creo que "varias copias de la misma capa, cada una con su propia consulta de definición y etiquetado simple basado en campos" entrará como favorito, pero no tengo métricas para respaldar ese sentimiento, así que creo que esta es una gran pregunta. ¿Una clase de entidad de geodatabase de archivos con un millón de polígonos calificaría como un conjunto de datos muy grande en su lenguaje?
PolyGeo

Respuestas:

5

Suponiendo que las consultas SQL en las clases de etiquetas sean las mismas que las de las capas divididas, el enfoque de una sola capa con múltiples clases de etiquetas será más rápido. ¿Por qué?:

El etiquetado en ArcMap ejecutará una consulta para el dibujo de capa y luego una consulta para cada clase de etiqueta. Por lo tanto, una capa con 4 clases de etiqueta consultará una vez (1 consulta) para todas las características dibujadas y luego 4 veces adicionales en total (una para cada clase de etiqueta o 4 consultas más) = 5 consultas totales

Si divide las capas, tendrá 1 consulta filtrada (consulta de definición) para cada capa (4 consultas) más esa misma consulta para cada clase de etiqueta (4 consultas más) = 8 consultas totales

En casi todos los casos, 5 consultas serán más rápidas que 8 consultas debido a la simple sobrecarga de consultas, aunque depende de la fuente de datos.

Tenga en cuenta que en ArcGIS Server se usa un caché para el etiquetado de entidades y 1 capa con 4 clases de etiquetas probablemente se manejará a través de una consulta cuando las clases de etiquetas usan SQL bastante estándar sin funciones específicas del proveedor.

Craig Williams
fuente
2
Pero, con el escenario de consulta de definición, no crearía clases de etiquetas. Simplemente se etiquetarían en función de un solo valor de campo. ¿O estoy leyendo el tercer párrafo incorrectamente?
ianbroad
Las clases de etiquetas se utilizan para etiquetar un subconjunto de características definidas por una cláusula where SQL (exactamente igual que una consulta de definición) y tienen su propio símbolo de texto, expresión de etiqueta y reglas de ubicación. No me queda claro por su descripción cómo pasar de las clases a una consulta de definición le permite etiquetar solo en un solo campo. ¿Se refiere a expresiones de etiqueta complejas y no a consultas SQL complejas?
Craig Williams
1
No, solo quiero decir que para ambos escenarios, ninguno usa una expresión de etiqueta. Ambos están etiquetados con un solo campo.
ianbroad
44
Trabajo en el equipo de etiquetado de Esri. Estoy íntimamente familiarizado con cómo funciona esto. La ubicación de la llamada de la consulta no afectará el rendimiento, pero querrá reducir el total de consultas.
Craig Williams el
1
Creo que entiendo tu respuesta ahora, Craig, pero me pregunto si hay alguna forma de reformularla para que sea más fácil de entender. Tuve que leerlo varias veces para darme cuenta de que sus matemáticas probablemente no estén mal, como pensé yo y otros.
jmpreiks
2

Ejecuté algunas pruebas muy simples usando algunos datos de NHD provenientes de una conexión SDE y encontré muy poca diferencia entre cualquiera de los métodos.

  1. 7 clases de etiquetas en una sola capa, también 7 simbologías separadas: 36 segundos
  2. 7 capas separadas con consultas de definición, clase de etiqueta única en cada una sin consulta: 37 segundos

Algunas advertencias:

  1. Mi prueba fue muy simple con etiquetas simples y consultas simples, las consultas complejas deberían ser probadas ya que eso era parte de la pregunta.
  2. Alrededor de un tercio del tiempo total fue para dibujar la simbología.
  3. Mi tiempo fue con un cronómetro, por lo que el margen de error es bastante grande.
jmpreiks
fuente
+1 para tus pruebas. Me pregunto si hace una diferencia si los conflictos de etiquetas ocurren o no. Quizás pueda ampliar el tamaño de fuente para que se superpongan muchas etiquetas. Luego deshabilite la opción de colocar etiquetas superpuestas. ¿Hay alguna diferencia ahora?
Jens
1
En realidad, hubo muchos conflictos de etiquetas en mis pruebas porque tuve que mostrar mucho para obtener un tiempo de procesamiento realmente largo que pudiera medir fácilmente.
jmpreiks
1
No existe tal cosa como "clases sin etiqueta", ya que siempre hay una.
Craig Williams
Verdadero Craig, edité mi respuesta para aclarar.
jmpreiks
1

Creo que la consulta de definición sería más rápida porque está en el nivel de objeto y no en el nivel de datos de atributo.

Aún tendrías que probar. Sin embargo, usaría consultas de definición y no etiquetas de clases.

geogeek
fuente
1
Sí, por favor pruebe (e informe si puede). También me inclino por las consultas de definición, pero por razones de rendimiento de usabilidad. Los cuadros de diálogo de expresión de etiqueta son dolorosamente lentos y varias capas de clic más profundas que las de consulta de definición. También son más fáciles de alcanzar en Python.
Matt Wilkie 01 de
No creo que esto califique como una respuesta sin algún tipo de base técnica o prueba cuantitativa. Puede inducir a error a algunas personas. Hubiera sido mejor como comentario a la pregunta original.
jmpreiks
Habría hecho eso si tuviera la capacidad de comentar. Gracias por el voto negativo. Solo intento ayudar.
geogeek