Adicionando etiquetas com símbolos à legenda no ArcMap?

10

Estou criando um mapa com o ArcGIS Desktop v10.2.2 , mostrando museus como pontos. A camada dos museus não possui símbolo e os rótulos são feitos de um círculo preenchido com cores com o ID interno, retirado do [ID]campo.

Quero adicionar a lista inteira de museus na legenda do mapa de layout, tendo uma lista dos meus símbolos com seus IDs e a descrição (seu nome) tirada do [LABEL]campo, sem criá-lo manualmente.

Eu sei que uma possível solução manual seria definir a simbologia da camada como "Valores exclusivos", adicionar todos os valores (mais de 100!) E definir uma vez para cada ponto a mesma simbologia de rótulo. Mas espero que exista uma solução melhor!

Dê uma olhada no meu mapa abaixo.

A camada é "Musei" (Museus) e, como você pode ver na legenda à esquerda, não possui símbolo. À direita, você pode ver a simbologia da legenda descrita, um círculo cinza escuro com texto em vermelho retirado do [ID]campo. Desejo adicionar ao meu layout uma coluna contendo todos os círculos com IDs e o rótulo correspondente.

Museus

- ATUALIZAÇÃO -

Estas são as configurações da Calculadora de Campo que usei após a solução proposta pelo @FelixIP.

Calculadora de campo

Mas os pontos não estão posicionados em alinhamento vertical, como eu esperava. Em vez disso, eles são movidos um pouco aqui e ali. Eu também tentei usar diferentes valores de etapa: 10, 100, 1000, 10000.

Gato de Cheshire
fonte
Você poderia inserir uma tabela ao lado da sua legenda?
whatahitson
@whatahitson Você quer dizer um quadro de tabela na exibição de layout?
Gato Cheshire

Respostas:

6

Para conseguir esta:

insira a descrição da imagem aqui

Eu usei 2 quadros de dados:

insira a descrição da imagem aqui

PASSOS:

a) Crie uma cópia do seu shapefile dos museus; b) Observe xMean, yMax dos pontos ec) Execute esta expressão da calculadora de campo várias vezes, alterando a etapa no campo Shape até ficar satisfeito com o intervalo entre os pontos verticais

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

Usando

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

Ele criará uma cadeia vertical de seus pontos a serem exibidos e rotulados na 2ª legenda do dataframe ===

Atualização: a longitude média dos pontos que usei é 1563910, longitude máxima 5177655

FelixIP
fonte
Estou tentando, mas talvez não tenha entendido corretamente seu procedimento. Eu já tenho as coordenadas X e Y dos pontos em dois campos da tabela de museus. Preciso calcular uma nova posição X e Y em um novo campo? Usei o Field Calculatore colocando sua definição de função seguida pela chamada de função, mas recebo um erro indefinido 999999 e a mensagem "falta de final de instrução".
Gato Cheshire
Não há novos campos. Execute a calculadora no campo SHAPE da cópia de backup. Se você não entender o que a função faz, simplesmente desenhar linha vertical na sua opinião e tirar pontos a ele, FID = 0 no topo, fid = 1 abaixo etc
FelixIP
Eu tentei sua solução, dê uma olhada na minha atualização de perguntas.
Gato Cheshire
1
Você não está lendo minha solução com cuidado. Ao chamar expressão, você deve usar os números ÚNICOS para o terceiro e o quarto parâmetros, não as coordenadas dos pontos individuais armazenados nos campos. Se você tem 3 pontos com xs 1,2,3 seu terceiro parâmetro tem t ser 2. Pegue uma caneta e anote longitude e latitude avearage MÁXIMO de seus pontos
FelixIP
Como alternativa, exporte as linhas do shapefile que você está tentando rotular, puxe-as para o Excel, adicione x, y pontos para uma série de pontos distribuídos verticalmente (1,9; 1,8; 1,7, etc.) e coloque-o no dataframe adicional com "Adicionar dados X, Y". Certifique-se também de que o posicionamento da etiqueta para seus dois shapefiles da etiqueta esteja definido adequadamente - ou seja, um é "SOMENTE Canto Superior Direito" e o outro é "SOMENTE Canto Esquerdo".
Carl