Essayer de trouver un moyen par programme (arcpy) de déplacer la légende si elle intercepte des entités dans un bloc de données, dans le scénario ci-dessous, si la légende obscurcit la vue de l'AOI, alors je veux qu'elle se déplace vers un autre coin jusqu'à ce que ce ne soit pas un problème. Cela doit être au-dessus du bloc de données au lieu de réduire le bloc de données et de le mettre de côté.
arcpy
legend
data-frame
Slevy
la source
la source
Réponses:
Entrées: Script:
PRODUCTION:
REMARQUES: Pour chaque page des pages axées sur les données, le script tente de trouver suffisamment d'espace dans les coins du cadre de données pour placer la légende (appelée myLegend) sans couvrir aucune couche d'entités visible. Le script utilise un filet pour identifier les cellules des coins. La dimension de cellule est légèrement supérieure à la dimension de légende dans les unités d'affichage des données. La cellule d'angle est celle qui partage une frontière avec 3 voisins. Si aucun coin ou pièce n'est trouvé, Legend place le cadre de données extérieur sur la page de disposition.
Malheureusement, je ne sais pas comment gérer la requête de définition de page. Les points affichés étaient à l'origine dispersés tout autour de l'étendue RECTANGLE, certains d'entre eux n'ayant aucune association avec les pages. Arcpy voit toujours la couche entière, bien que j'aie appliqué une requête de définition (correspondance) aux points.
la source
La façon de procéder serait de créer une classe d'entités "élément de légende" qui représente votre élément de légende dans le même système de coordonnées que ces entités.
De cette façon, vous pouvez utiliser Sélectionner un calque par emplacement pour tester si votre élément de légende chevauche des entités et le déplacer si c'est le cas.
Son non trivial mais éminemment faisable et il y a un Q&A sur ce site ( Convertir le point XY en unités de page XY en utilisant arcpy? ) Qui pourrait être utilisé pour résoudre la partie la plus difficile de la conversion entre les coordonnées de page et de carte.
la source
Vous trouverez ci-dessous le code que j'ai utilisé pour déplacer les légendes et les cartes en encart afin de ne pas masquer les données. Vous avez posé des questions sur la fonction de vérification d'intersection sur un autre thread. Ceci est mon implémentation du code de quelqu'un d'autre. Je ne me souviens pas exactement d'où ça vient. C'était un script pour déplacer une carte en médaillon pour un état de la Nouvelle-Angleterre, je pense.
encart est le handle de la légende ou de l'élément de carte en encart.
Ensuite, le code ci-dessous de cet article ( Pages dynamiques avec carte mobile de légende / encart ) devrait avoir plus de sens.
la source