10

I'm creating a map with ArcGIS Desktop v10.2.2, showing museums as points. The museums layer has no symbol and the labels are made of a circle filled with color with the ID inside, taken from the [ID] field.

I want to add the entire list of museums in the layout map legend, having a list of my symbols with their IDs and the description (their name) taken from the [LABEL] field, without creating it manually.

I know that a possible manual solution would be to set the layer symbology to "Unique values", then add all values (more than 100!) and set once for each point the same label symbology. But I hope there's a better solution!

Take a look at my map below.

The layer is "Musei" (Museums) and as you can see on the legend on the left, it has no symbol. On the right you can see the descripted legend symbology, a Dark gray circle with Red text inside taken from the [ID] field. I want to add to my layout a column containing all the circles with IDs and the corresponding label.

Museums

-- UPDATE --

This is the Field Calculator settings I used following the solution proposed by @FelixIP.

Field Calculator

But the points are not positioned in vertical align as I expect. Instead they're moved a bit here and there. I also tried using different step values: 10, 100, 1000, 10000.

2
  • Could you insert a table next to your legend? Commented Nov 18, 2015 at 18:04
  • @whatahitson Do you mean a table frame in the layout view? Commented Nov 18, 2015 at 18:25

1 Answer 1

6

To get this:

enter image description here

I've used 2 dataframes:

enter image description here

STEPS:

a) Create a copy of your museums shapefile; b)Note xMean, yMax of the points and c) Run this field calculator expression multiple times changing step on Shape field until you happy with interval between vertical points

def vertical(fid, shp,xMean,yMax,step):
 y=yMax-step*fid
 pNew=arcpy.Point(xMean,y)
 return pNew

Using

vertical( !FID!, !Shape!, 1563910,5177655,100)

It will create vertical chain of your points to be displayed and labelled in 2nd dataframe === legend

Update: average longitude of the points i used is 1563910, maximum latitude 5177655

6
  • I'm trying but maybe I didn't understand correctly your procedure. I've already have the X and Y coordinates of the points in two fields of the museums table. Do I need to calculate a new X and Y position in a new field? I used Field Calculatore putting on it your function definition followed by the function call but I get a 999999 undefined error and "missing istruction end" message. Commented Nov 19, 2015 at 10:38
  • No new fields. Run calculator on SHAPE field of the backup copy. If you don't understand what function does, simply draw vertical line in your view and snap points to it, fid=0 on the top, fid=1 below etc
    – FelixIP
    Commented Nov 19, 2015 at 16:51
  • I tried you solution, please take a look at my question update. Commented Nov 20, 2015 at 13:50
  • 1
    You are not reading my solution carefully. When you call expression, you must use SINGLE numerics fo 3rd and 4th parameter, not coordinates of indiv.points stored in fields. If you have 3 points with x-s 1,2,3 your 3rd parameter has t be 2. Take a pen and write down AVEARAGE longitude and MAXIMUM latitude of your points
    – FelixIP
    Commented Nov 20, 2015 at 17:52
  • Alternatively, export the rows from the shapefile you are trying to label, pull them into excel, add x,y points for a series of vertically distributed points, (1,9; 1,8; 1,7, etc.), and put it into the additional dataframe with "Add X,Y data." Also make sure that the label placement for your two label shapefiles are set appropriately - i.e., one is "Top Right ONLY" and the other is "Top Left ONLY."
    – Carl
    Commented Nov 20, 2015 at 20:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.