Tengo puntos que representan ubicaciones de muestra. A menudo, se tomarán múltiples muestras en la misma ubicación: múltiples puntos con la misma ubicación pero diferentes ID de muestra y otros atributos. Me gustaría etiquetar todos los puntos que se ubican conjuntamente con una sola etiqueta, con texto apilado que enumera todas las ID de muestra de todos los puntos en ese lugar.
¿Es esto posible en ArcGIS utilizando el motor de etiquetado normal o Maplex? Sé que podría solucionar esto creando una nueva capa con todos los ID de muestra para cada ubicación en un valor de atributo, pero me gustaría evitar crear nuevos datos solo para el etiquetado.
Básicamente quiero ir de esto:
Para esto (para el punto más alto):
Sin hacer ninguna edición manual de las etiquetas.
Respuestas:
Una forma de hacer esto es clonando la capa, usando consultas de definición y etiquetándolas por separado, usando la posición de etiqueta superior izquierda para la primera capa y la izquierda inferior para la segunda.
Agregue el entero de tipo THEFIELD a la capa y complételo con la siguiente expresión:
Llámalo por:
Cree una copia de la capa en la tabla de contenido, aplique la consulta de definición THEFIELD = 1.
Aplicar la consulta de definición THEFIELD = 2 para la capa original.
Aplicar diferentes ubicaciones de etiquetas fijas
ACTUALIZACIÓN basada en comentarios a la solución original:
Agregue el campo COORD y complételo usando
Resuma este campo usando first y last para la etiqueta. Vuelva a unir esta tabla al original usando el campo COORD. Seleccione los registros donde los primeros <> últimos y concatene la primera y la última etiqueta en un campo nuevo usando
Use Count_COORD y THEFIELD para definir 2 'capas diferentes' y campos para etiquetarlas:
Actualización n. ° 2 inspirada en la solución @Hornbydd:
ACTUALIZACIÓN Noviembre de 2016, es de esperar que dure.
Debajo de la expresión probada en 2000 duplicados, funciona como encanto:
fuente
A continuación se muestra una solución parcial.
Esto entra en la expresión de etiqueta Avanzado. No es muy eficiente, por lo tanto, le pregunto sobre el número de puntos en su conjunto de datos. Entonces, para cada fila que se etiqueta, crea 2 diccionarios
d
donde la clave es el XY y el valor es el texto yd2
cuál es el objectID y el XY. Usando esa combinación de diccionarios, puede devolver una sola etiqueta, que es una concatenación con caracteres de nueva línea, en mi ejemplo concatena TARGET_FID. "sj" es el nombre de la capa en la tabla de contenido.Por qué esta es una solución parcial es que esto se hace para cada punto, no he sido capaz de pensar cómo apagaría todos los otros puntos apilados. Es por esto que creo que la solución definitiva es un python que crea una nueva capa de puntos únicos con una sola etiqueta construida a partir de la pila de puntos.
A continuación se muestra la salida de 3 puntos apilados, ya que puede ver que la etiqueta se crea para cada punto, ya que todos existen en la misma ubicación.
fuente