Ich habe Punkte, die Beispielorte darstellen. Oft werden mehrere Proben an demselben Ort genommen: mehrere Punkte mit demselben Ort, aber unterschiedlichen Proben-IDs und anderen Attributen. Ich möchte alle Punkte, die sich zusammen mit einem einzelnen Etikett befinden, mit gestapeltem Text kennzeichnen, in dem alle Beispiel-IDs aller Punkte an diesem Punkt aufgelistet sind.
Ist dies in ArcGIS entweder mit der regulären Beschriftungsengine oder mit Maplex möglich? Ich weiß, dass ich das umgehen könnte, indem ich einen neuen Layer mit allen Beispiel-IDs für jede Position in einem Attributwert erstelle, aber ich möchte vermeiden, neue Daten nur zum Beschriften zu erstellen.
Grundsätzlich möchte ich davon ausgehen:
Dazu (für den obersten Punkt):
Ohne manuelle Bearbeitung der Etiketten.
Antworten:
Eine Möglichkeit besteht darin, die Ebene zu klonen, Definitionsabfragen zu verwenden und sie separat zu kennzeichnen, wobei für die erste Ebene nur die Beschriftungsposition oben links und für die zweite Ebene die Beschriftungsposition unten links verwendet wird.
Fügen Sie der Ebene eine Ganzzahl vom Typ THEFIELD hinzu und füllen Sie sie mit dem folgenden Ausdruck:
Nennen Sie es durch:
Erstellen Sie eine Kopie des Layers im Inhaltsverzeichnis und wenden Sie die Definitionsabfrage THEFIELD = 1 an.
Wenden Sie die Definitionsabfrage THEFIELD = 2 für die ursprüngliche Ebene an.
Wenden Sie eine andere feste Etikettenposition an
UPDATE basierend auf Kommentaren zur ursprünglichen Lösung:
Fügen Sie das Feld COORD hinzu und füllen Sie es mit
Fassen Sie dieses Feld mit first und last for label zusammen. Verbinden Sie diese Tabelle wieder mit dem COORD-Feld. Wählen Sie Datensätze aus, bei denen zuerst <> als letztes angezeigt wird, und verknüpfen Sie das erste und das letzte Etikett in einem neuen Feld mit
Verwenden Sie Count_COORD und THEFIELD, um zwei "verschiedene Ebenen" und Felder zu definieren, um sie zu kennzeichnen:
Update Nr. 2 inspiriert von der @ Hornbydd-Lösung:
UPDATE November 2016, hoffentlich zuletzt.
Der folgende Ausdruck, der an 2000 Duplikaten getestet wurde, wirkt wie Charme:
quelle
Unten ist eine Teillösung.
Dies geht in den Advance-Label-Ausdruck ein. Es ist nicht sehr effizient, daher frage ich nach der Anzahl der Punkte in Ihrem Datensatz. Für jede Zeile, die beschriftet wird, werden 2 Wörterbücher erstellt, in
d
denen der Schlüssel das XY und der Wert der Text undd2
die objectID und das XY sind. Mit dieser Kombination von Wörterbüchern kann ein einzelnes Label zurückgegeben werden, bei dem es sich um eine Verkettung mit Zeilenumbrüchen handelt, in meinem Beispiel um die Verkettung von TARGET_FID. "sj" ist der Ebenenname im Inhaltsverzeichnis.Warum dies eine Teillösung ist, ist, dass dies für jeden Punkt durchgeführt wird. Ich war nicht in der Lage zu überlegen, wie Sie alle anderen gestapelten Punkte deaktivieren würden. Aus diesem Grund denke ich, ist die ultimative Lösung ein Python, der eine neue Ebene von einzelnen Punkten mit einer einzelnen Beschriftung aus dem Punktestapel erstellt.
Unten sehen Sie die Ausgabe von 3 gestapelten Punkten. Sie sehen, dass die Beschriftung für jeden Punkt erstellt wird, da alle an derselben Position vorhanden sind.
quelle