Criando uma tabela resumida de simbologia de todos os conjuntos de dados em vários MXDs?

9

Isso está relacionado à seguinte simbologia Reter ESRI no TAB do Mapinfo . Como passo inicial (no arcpy), desejo acessar a simbologia de todos os conjuntos de dados e criar um documento que tenha os detalhes da simbologia conforme o gráfico abaixo. insira a descrição da imagem aqui

Isso é possível (devo investir tempo para resolvê-lo) ou, se não for possível, precisarei apenas fazer isso manualmente em centenas de MXDs (: -

Para quebrar as etapas, espero que eu possa automatizar pelo menos parte do processo.

  1. percorrer os MXDs e obter os conjuntos de dados que estão ativados não é problema

    lyrFile = arcpy.mapping.Layer se lyrFile.visible == True:

  2. como ele encontra um conjunto de dados, ele deve criar um arquivo .lyr (como a maioria são apenas arquivos shp / gdb) e, em seguida, AttribXXX = lyrFile.xxx

onde XXX e xxx são

BRIGHTNESS = lyrFile.brightness

(acima do formato para o seguinte)

CONTRAST contrast
DATASETNAME datasetName
DATASOURCE dataSource
DESCRIPTION description
LABELCLASSES labelClasses
LONGNAME longName
NAME name
SHOWLABELS showLabels
TRANSPARENCY transparency
WORKSPACEPATH A layer's workspace or connection file path

O problema é que não consigo encontrar nada que obtenha RGB, tipo de linha / ponto / polígono, pesos de linha, fonte etc.

  1. escreva cada um dos valores acima em um CSV (fácil) ... por exemplo (isso precisa ser expandido)

                    f = open(origPath+'\\LayerAtrributes_LOG.txt', 'a')
                    f.write(str(DATASETNAME)+","+str(DATASOURCE)+","+str(DESCRIPTION)+","+str(MXDName)+"\n")
                    f.close()
    
  2. Se possível, um jpg da simbologia deve ser produzido como no exemplo e o link a ele adicionado ao csv.

Estou pedindo muito do arco-íris?

GeorgeC
fonte
Isso pode ser possível com o ArcObjects, mas definitivamente não é complicado.
blah238
obrigado. Alguém pode ajudar no processamento de objetos de arcada então?
GeorgeC
Somente você pode indicar por onde começar: Ajuda do ArcObjects .NET SDK ; Trabalhando com símbolos e cores e Trabalhando com camadas e renderizadores . Se nada mais, talvez depois de lermos esses itens, você possa definir seus requisitos com mais precisão e limitar o escopo do trabalho, porque será muito trabalho, eu acho.
blah238
Aqui está um exemplo antigo do VB6 para exportar símbolos de estilo: Despejo de Estilo . Verifique StyleDump.bas para a carne dele.
blah238

Respostas:

3

Eu resolvi um problema semelhante convertendo um documento MXD em um MSD (que é apenas um arquivo zip). Se você alterar a extensão para ".zip" e abri-lo, encontrará alguns documentos .xml que contêm muitas informações sobre como cada camada dentro do mxd é exibida. arcpy.ConvertToMSD Pode haver algum trabalho envolvido na obtenção das informações desejadas, mas elas devem estar em algum lugar. Espero que ajude!

dango
fonte
Obrigado por essa idéia seminal. É realmente útil. O código gerado no xml é bastante complexo, você programou a captura automática do xml relevante e, se sim, pode compartilhá-lo, caso contrário, começarei a trabalhar nesse aspecto.
31912 GeorgeC
Eu estava interessado apenas em dois valores no xml, então qualquer coisa que eu tivesse será muito difícil de construir. Mas existem muitos tutoriais python xml realmente bons por aí. Se você estiver preparado para passar algum tempo lendo, tenho certeza de que resolverá o problema. Feliz codificação :)
dango