J'ai des points représentant des exemples d'emplacements. Souvent, plusieurs échantillons seront prélevés au même emplacement: plusieurs points avec le même emplacement mais différents ID d'échantillons et d'autres attributs. Je voudrais étiqueter tous les points qui sont co-localisés avec une seule étiquette, avec du texte empilé répertoriant tous les exemples d'ID de tous les points à cet endroit.
Est-ce possible dans ArcGIS en utilisant le moteur d'étiquetage standard ou Maplex? Je sais que je pourrais contourner cela en créant une nouvelle couche avec tous les exemples d'ID pour chaque emplacement dans une valeur d'attribut, mais j'aimerais éviter de créer de nouvelles données uniquement pour l'étiquetage.
Fondamentalement, je veux partir de cela:
Pour cela (pour le point le plus haut):
Sans faire aucune édition manuelle des étiquettes.
Réponses:
Une façon de procéder consiste à cloner la couche, à l'aide de requêtes de définition et à les étiqueter séparément, en utilisant uniquement la position d'étiquette en haut à gauche pour la première couche et en bas à gauche pour la seconde.
Ajoutez un entier de type THEFIELD au calque et remplissez-le à l'aide de l'expression ci-dessous:
Appelez-le par:
Créez une copie de la couche dans la table des matières, appliquez la requête de définition THEFIELD = 1.
Appliquer la requête de définition THEFIELD = 2 pour la couche d'origine.
Appliquer un placement d'étiquette fixe différent
MISE À JOUR basée sur les commentaires de la solution d'origine:
Ajoutez le champ COORD et remplissez-le en utilisant
Résumez ce champ en utilisant le premier et le dernier pour l'étiquette. Joignez ce tableau à l'original à l'aide du champ COORD. Sélectionnez les enregistrements dans lesquels <<> dernier et concaténez la première et la dernière étiquette dans un nouveau champ à l'aide de
Utilisez Count_COORD et THEFIELD pour définir 2 «couches différentes» et des champs pour les étiqueter:
Mise à jour # 2 inspirée de la solution @Hornbydd:
MISE À JOUR novembre 2016, espérons-le dernier.
L'expression ci-dessous testée sur 2000 doublons fonctionne comme un charme:
la source
Voici une solution partielle.
Cela va dans l'expression de l'étiquette Advance. Ce n'est pas très efficace, donc je demande le nombre de points dans votre jeu de données. Donc, pour chaque ligne qui est étiquetée, elle crée 2 dictionnaires
d
où la clé est le XY et la valeur est le texte etd2
qui est l'ID d'objet et le XY. En utilisant cette combinaison de dictionnaires, il est capable de renvoyer une seule étiquette qui est une concaténation avec des caractères de nouvelle ligne, dans mon exemple, elle concatène TARGET_FID. "sj" est le nom de la couche dans la table des matières.Pourquoi il s'agit d'une solution partielle, c'est que cela est fait pour chaque point, je n'ai pas pu imaginer comment vous désactiveriez tous les autres points empilés. C'est à cause de cela que je pense que la solution ultime est un python qui construit une nouvelle couche de points uniques avec une seule étiquette construite à partir de la pile de points.
Vous trouverez ci-dessous la sortie de 3 points empilés, comme vous pouvez le voir, l'étiquette est créée pour chaque point car ils existent tous au même emplacement.
la source