Si se coloca etiquetas a todas las curvas de nivel podría ser innecesario. También colocar etiquetas sobre las líneas de las curvas de nivel no permite obtener un diseño aceptable. Con el motor de etiquetado de Maplex y unos pequeños detalles se pueden revertir estos problemas, dando como resultado etiquetas enmascaradas las cuales permiten una mejor visualización.
Una capa de curvas de nivel se puede categorizar en primarias y secundarias, según su intervalo altitudinal. Para realizar este proceso se requiere añadir un nuevo campo en la tabla atributos que permita categorizarlas. Aunque no sería necesario ejecutar el proceso descrito anteriormente, si se cuenta con los tipos de curvas de nivel en diferentes capas. Para realizar la categorización usando las herramientas de selección realizar los siguientes pasos:
- Hacer clic derecho sobre la capa (de curvas de nivel) abrir la tabla de atributos.
- En Table Options > Add Field agregar un nuevo campo tipo texto (Intervalo).
- Ir al menú Selection > Select By Attributes.
- En el cuadro de diálogo copiar la expresión
Mod(Round(" Contour ", 0) * 10, 1000)=0
para seleccionar las curvas de nivel a un intervalo de 100 (metros). Nótese que Contour es el nombre del campo que contiene los valores de elevación. Para personalizar el intervalo altitudinal, el valor de diez (10) debe ser multiplicado por el intervalo requerido (1000), para curvas de nivel cada tres metros usar la expresión:Mod(Round(" Contour ", 0) * 10, 30)=0
. También la expresión SQL:Floor( Contour/10) = Contour/10
permite personalizar la selección en diferentes escenarios (curvas de nivel cada 10 metros). Simplemente reemplazando el valor númerico (10) por el intervalo requerido. - En el campo Intervalo abrir el Field Calculator y colocar entre comillas «Primarias» y aceptar.
- En Table Options invertir la selección con Switch Selection.
- En el campo Intervalo abrir el Field Calculator y colocar entre comillas «Secundarias» y aceptar.
Para configurar y visualizar por categorías hacer clic derecho sobre la capa (de curvas de nivel) ir a Properties > Pestaña Symbology > Categories >Unique values > Intervalo > Add all values.
Mientras que para el etiquetado de las curvas de nivel a un intervalo de 100 metros configurar de la siguiente manera:
- Hacer clic derecho sobre el Data Frame (Layers) y seleccionar Properties > Pestaña General > Label Engine > Maplex Label Engine.
- Hacer clic derecho sobre la capa (de curvas de nivel) y seleccionar Properties > Pestaña Labels > Marcar casilla Label features in this layer > Label Field > Contour.
- Hacer clic en el botón Expression, marcar la casilla Advanced y colocar la siguiente expresión:
Function FindLabel ([Contour])
If ([Contour] Mod 100) = 0 Then
FindLabel = [Contour]
End If
End Function
- Nótese que [Countour] corresponde al campo que contiene los valores de elevación. Mod permite personalizar el intervalo de las curvas de nivel que van a ser etiquetadas.
- Mantenerse en la ventana de las propiedades de la capa e ir a Other Options > Placement Properties > Pestaña Label Position > General > Contour Placement.
- Luego dirigirse a Text Symbol > Symbol > Edit Symbol > Pestaña Mask > Style y seleccionar Halo para enmascarar las curvas de nivel.
- Ahora aceptar todos los cambios, para mayor claridad se recomienda ver el siguiente vídeo:
Buenos dias,
Me podrias explicar como funciona el mod, porque deseo hacerlo para curvas que estan cada 5 metros y no logro identificar como es el funcionamiento
Debes multiplicar el intervalo por diez, para contornos cada cinco metros usa la siguiente expresión.
Mod(Round(" Contour ", 0) * 10, 50)=0
saludos, sigo todos tus pasos en el vídeo, pero extrañamente no puedo visualizar las etiquetas de las curvas de nivel, espero puedas ayudarme. saludos y éxitos con tu blog
Has activado Maplex? aunque en el vídeo se muestra todo el procedimiento.
Basicamente se toman los valores enteros pues si tienes curvas de 1m en 1m las multiplicas por 10 y luego divides en 50 (seria intervalos de 5m) todos los multiplos de 5 quedaran enteros (sin decimales) y estos se seleccionarian, mejor dicho se seleccionan los que son múltiplos de 5, a mi parecer funciona mejor este Floor( Contour/10) = Contour/10 si tienes curvas muy detalladas ejemplo cada 0,5 m.
Muy buen Post
Saludos
Gracias, espero que te haya sido útil.
Hola, oye y si lo que se quiere es que el halo de la etiqueta sea transparente? Es que tengo una geología debajo (de diferentes colores) entonces la idea es que alrededor del texto se vea un hueco (como si la curva estuviera cortada). Gracias
Encontraste solución Juancho? yo tengo el mismo problema y he puesto un halo blanquete pero más delgado… lo ideal sería que fuera trasparente pero sin que se viera la linea de la curva de nivel…… si alguien tiene ideas soy toda oídos. Felicitaciones por el blog, Franz!
Buenas Franz, seguí todo el procedimiento sin embargo a la hora del etiquetado final por alguna razón aparece todas las curvas etiquetadas, por lo que creo que algo estoy haciendo mal con el script, estoy usando el Arcmap 10.4 y al activar el botón de avanzado me muestra lo siguiente automáticamente:
Function FindLabel ( [Elevacion] )
FindLabel = [Elevacion]
End Function
Ya pobre de todas las formas modificando el script y a la hora de verificarlo no me da ningún error, de hecho me da una muestra de como se verás las etiquetas, sin embargo al aceptar todas las ventanas y ver el mapa me aparecen todas las curvas etiquetadas. Gracias por la ayuda.
Prueba con un Mod
luego de aplicar la sintaxis y etiquetas nuestras curvas maestras, tambien se puede hacer una seleccion por clase para las entidades.
Hola, Buenas Tardes, de acuerdo con el etiquetado para las curvas a cada 100 metros, la expresión me sale errónea, cambio «Contour» por «ELEVACION» de acuerdo a mis curvas de nivel, pero me sale erronea al aplicarla, podras ayudarme. Gracias
Mejor prueba usando un Mod como se indica líneas arriba.
Esta muy bien el vídeo, pero tengo una duda, cual es funcion de Maplex Label Engine, por q yo no lo activo y no hay problema.
Gracias de antemano por tu respuesta.
Para activar mayor cantidad de opciones para trabajar con las etiquetas.
hola, en atributos de la tabla no aparece la columna «contour», solo aparece: «FID», «Chape», «Z» y «Codigo»
a que se debe eso??
Me imagino que Z tiene los valores de Contour.
Muchas gracias compañero
Hola, tengo mis curvas de nivel cada 50 metros ejemplo: 1050, 1100, 1150, 1200, 1250 etc. y requiero filtrar solamente las curvas que terminen en 50, cual seria la expresión para filtrar las que requiero? de antemano Gracias!
Floor( Contour/50) = Contour/50
Franz como hago para modificar mis curvas de nivel cada 20 🙁 … Todo el procedimiento del tutorial me sale, solo que como tengo curvas de nivel cada 50, no se notan mis lineas primarias 🙁
Puedes usar
Floor( Contour/20) = Contour/20
siempre y cuando en las curvas tengas múltiplos de 20.Buenas tardes, todo muy bien hasta que llego a a «Other Options > Placement Properties > Pestaña Label Position > General > Contour Placement.», cuando hago click en Other Options no me aparece ninguna de esas pestañas si no que solo me aparecen 2 : «Placement» y «Conflic detection»
Estimado Franz, ¿Cómo hago para editar la etiquete de tal forma que sólo figure las últimas tres cifras de un código que tengo en mi tabla de atributos?
En la propiedades del campo si te refieres a decimales. O crea un nuevo campo y copia los valores con en Field Calculator usando la expresión Left.
donde encuentro el archivo de practica de este tutorial frank, o podrias enviarmelo al correo crdaza2@areandina.edu.co