Mais

ArcGIS convertendo lista de enumeração em campo único de dados s-57?


Estou armazenando dados do s-57 em um MDB que está sendo simbolizado por meio de uma camada. Alguns atributos em dados s-57 podem ser uma lista de enumerações e eu quero encontrar uma maneira de mostrar os valores reais que a enumeração representa, por favor veja o exemplo abaixo.

Meu recurso tem uma coluna chamada cor, que pode ser representada como um único número (ou seja, 1 = branco) ou pode ser representado por uma lista (ou seja, 2,3,2 = preto, vermelho, preto).

Incluí a tabela de enumeração no MDB, que possui valores semelhantes aos mostrados abaixo.

COR DO VALOR

1 branco

2 pretas

3 vermelho

onde uma única cor é listada no campo, uma simples junção à tabela de enumeração funciona bem e posso configurá-la para que os usuários vejam os valores completos dos atributos em vez da enumeração, mas quando uma lista de enumerações ainda preciso convertê-la em completa valores de atributos, isso é possível?

Então, em resumo, se eu tiver um campo de cor que contém '2,3,2' usando a tabela de enumeração acima, eu gostaria de ser capaz de fazer a camada exibir preto, vermelho, preto em vez de 2,3,2 no atributo mesa, isso é possível?


Na Calculadora de campo, você pode tentar este código Python:

",". join ({"1": "Branco", "2": "Preto", "3": "Vermelho"} [val.strip ()] para val em! INPUT_FIELD_NAME! .split ("," ))

Tudo que você precisa fazer é escolher o campo de enumeração para! INPUT_FIELD_NAME! e certifique-se de usar o Python Parser!

ATUALIZAR


OK, a seguir está outra solução criando uma tabela de consulta (tabela dbf neste caso) para juntar seus dados originais no ArcMap. Eu não testei, mas deve funcionar no intérprete Python embutido.

Crie um arquivo dbf em um local temporário e adicione dois campos para consulta.

look_up_table = arcpy.CreateTable_management (r "C:  Temp", "s_57_LookUp.dbf") [0] look_up_fields = ["Color_Coded", "Color_Expanded"] para o campo em look_up_fields: arcpy.AddField_management (look_up_table, campo, "TEXT , field_length = 255)

Colete entradas de cores exclusivas e adicione-as à tabela de consulta.

source_s_57_file = r'C:  Temp  Scratch.mdb  My_s57_file '#YOUR TABLE look_up_values ​​= [] ins_cursor = arcpy.InsertCursor (look_up_table) com arcpy.da.SearchCursor (source_s_57_file, "Color") como cursor: #THE FIELD INFORMAÇÕES DE COR SÃO CODIFICADAS para a linha no cursor: se a linha [0] não estiver em look_up_values: look_up_values.append (linha [0]) ins_row = ins_cursor.newRow () [ins_row.setValue (campo, val) para campo, val em zip (look_up_fields, [row [0], ",". join ({"1": "White", "2": "Black", "3": "Red"} [val.strip ()] para val em linha [0] .split (","))])] ins_row.insertRow (ins_row) del ins_cursor

Espero que você não encontre nenhum problema de geoprocessamento de 64 bits conforme explicado aqui.


Assista o vídeo: GeoSuite (Outubro 2021).