1 votos

¿Utilización de VBScript para el etiquetado avanzado en ArcMap?

Estoy tratando de hacer un poco de etiquetado avanzado con VBScript y necesito un poco de ayuda para llegar a la línea de meta. Nunca he scripted nada antes de la semana pasada, así que estoy definitivamente un novato cuando se trata de VBScripting.

Mi problema es el siguiente: tengo cientos de sondeos en los que se han recogido varias muestras a distintas profundidades. El número de muestras recogidas en cada lugar varía, al igual que la profundidad. Así que escribí un script muy simple para obtener mis etiquetas en un formato de tabla. Concatene dos campos en Excel (Profundidad y Resultado) separados por espacios para crear el campo [LABEL].

Mi problema ahora es añadir una expresión a mi script existente que no devolverá ningún valor si no hay datos en la tabla de datos. Lo que obtengo ahora son varias líneas en blanco cuando las muestras no se recogieron a esa profundidad. Véase la imagen adjunta como referencia.

¿Cómo puedo corregir mi expresión para omitir estos espacios en blanco?

Este es el script que tengo hasta ahora...

"<FNT name= 'Arial' size='10'><BOL>" & [Sample_ID] & "</BOL></FNT>" + vbnewline + "<UND>" & "DEPTH (BGS)" & "</UND>" + "  " + "<UND>" & "LEAD (MG/KG)" & "</UND>" + vbnewline + vbnewline + [ALABEL] + vbnewline + [BLABEL] + vbnewline + [CLABEL] + vbnewline + [DLABEL] 

Hasta ahora, todo esto se ha hecho con el sencillo creador de expresiones de etiquetas de ArcGIS. Supongo que tendré que añadir algún tipo de declaración if then y un bucle para conseguir lo que necesito. Pero como he dicho antes ... No soy un experto en secuencias de comandos todavía.

enter image description here

1voto

Michael La Voie Puntos 56

La secuencia de comandos sería algo así

Function FindLabel ( [Sample_ID], [ALABEL], [BLABEL], [CLABEL],[DLABEL] )
  dim label
  label = "<FNT name= 'Arial' size='10'><BOL>" & [Sample_ID] & "</BOL></FNT>" + vbnewline + "<UND>" & "DEPTH (BGS)" & "</UND>" + "  " + "<UND>" & "LEAD (MG/KG)" & "</UND>" + vbnewline
  if [ALABEL] <> " " then
    label = label + vbnewline + [ALABEL]
  end if 
  if [BLABEL] <> " " then
    label = label + vbnewline + [BLABEL]
  end if 
  if [CLABEL] <> " " then
    label = label + vbnewline + [CLABEL]
  end if
  if [DLABEL] <> " " then
    label = label + vbnewline + [DLABEL]
  end if 
  FindLabel = label
End Function

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X