Wenn Sie versuchen, einen Weg zu finden, wie Sie die Legende programmgesteuert (arcpy) verschieben können, wenn sie Features innerhalb eines Datenrahmens abfängt. Wenn die Legende im folgenden Szenario die Ansicht des AOI verdeckt, möchte ich, dass sie in eine andere Ecke verschoben wird, bis sie nicht mehr angezeigt wird Problem. Dies muss über dem Datenrahmen liegen, anstatt den Datenrahmen zu verkleinern und nur zur Seite zu legen.
arcpy
legend
data-frame
Slevy
quelle
quelle
Antworten:
Eingaben: Skript:
AUSGABE:
HINWEISE: Für jede Seite in Datenseite - Skript versucht angetrieben genug Platz in Datenrahmen finden Ecken ohne platzieren Legend (genannt myLegend) sichtbares Merkmal Schicht bedeckt. Das Skript verwendet Fischnetz, um Eckzellen zu identifizieren. Die Zellendimension ist in Datenansichtseinheiten geringfügig größer als die Legendendimension. Eckzelle ist diejenige, die eine Grenze mit 3 Nachbarn teilt. Wenn keine Ecken oder Räume gefunden wurden, wurde die Legende außerhalb des Datenrahmens auf der Layoutseite platziert.
Leider weiß ich nicht, wie man die Seitendefinitionsabfrage verwaltet. Die gezeigten Punkte waren ursprünglich über die gesamte RECHTECK-Ausdehnung verteilt, wobei einige von ihnen keine Zuordnung zu Seiten hatten. Arcpy sieht immer noch die gesamte Ebene, obwohl ich eine Definitionsabfrage (Übereinstimmung) auf die Punkte angewendet habe.
quelle
Die Art und Weise, wie ich dies tun würde, wäre, eine Feature-Class "Legendenelement" zu erstellen, die Ihr Legendenelement im selben Koordinatensystem wie diese Features darstellt.
Auf diese Weise können Sie mithilfe von Ebene nach Ort auswählen testen, ob sich Ihr Legendenelement mit Features überschneidet, und es gegebenenfalls verschieben.
Es ist nicht trivial, aber hervorragend machbar, und auf dieser Site gibt es Fragen und Antworten ( Punkt XY mit arcpy in Seiteneinheiten XY konvertieren? ), Mit denen der schwierigste Teil der Konvertierung zwischen Seiten- und Kartenkoordinaten ermittelt werden kann.
quelle
Unten ist Code, den ich verwendet habe, um Legenden zu verschieben und Karten einzufügen, um Daten nicht zu verdecken. Sie haben nach der Funktion zum Überprüfen von Schnittpunkten in einem anderen Thread gefragt . Dies ist meine Implementierung des Codes eines anderen. Ich erinnere mich nicht genau, woher es kommt. Ich glaube, es war ein Skript, um eine Karte für einen Staat in Neuengland zu verschieben.
Inset ist das Handle für die Legende oder das Inset-Map-Element.
Dann sollte der folgende Code aus diesem Beitrag ( datengesteuerte Seiten mit beweglicher Legende / eingefügter Karte ) sinnvoller sein.
quelle