Adicionando nome de arquivo ao campo de atributo usando o campo Calcular?

9

Alguém sabe como adicionar o nome do shapefile a um campo na tabela de atributos do arquivo?

Encontrei uma descrição:

'Você precisa usar a variável embutida no CalculateField como% Name% na expressão, para que, seja qual for o nome do arquivo, a string será inserida com base no nome do arquivo dbase!'

Eu tentei a ferramenta CalculateField com% Name%, mas recebi a mensagem:

Executing: CalculateField "2011-11-6 15_41_point" DBFName %Name% PYTHON #
Start Time: Thu Dec 08 23:34:23 2011
WARNING 000405: No records within table
Succeeded at Thu Dec 08 23:34:24 2011 (Elapsed Time: 1.00 seconds)

Onde está meu erro?

Nadiia
fonte

Respostas:

11

Esse código python adiciona o campo FILENAME a todas as classes de recurso (exceto os dos conjuntos de dados) e é preenchido com o nome da classe de recurso.

# Import standard library modules
import arcpy, os, sys
from arcpy import env

# Allow for file overwrite
arcpy.env.overwriteOutput = True

# Set the workspace directory 
env.workspace = r"P:\geodatabase.gdb\filename" 

# Get the list of the featureclasses to process
fc_tables = arcpy.ListFeatureClasses()

# Loop through each file and perform the processing
for fc in fc_tables:
    print str("processing " + fc)

    # Define field name and expression
    field = "FILENAME"
    expression = str(fc) #populates field   

    # Create a new field with a new name
    arcpy.AddField_management(fc,field,"TEXT")

    # Calculate field here
    arcpy.CalculateField_management(fc, field, '"'+expression+'"', "PYTHON")
Nate Bradshaw
fonte
funciona na versão 10.2. mas não funciona na versão 10.2.2.
Nate Bradshaw
Nada acontece se eu digitar o código no console python do arc map (10.6). Parece que não funciona com esta versão (?) #
David David
6

Existe um script no site arcscripts que deve ajudá-lo a fazer isso

http://arcscripts.esri.com/details.asp?dbid=14534

Resumo Um script simples para criar um campo chamado "FILENAME" e anexar o nome do arquivo shapefile a cada entrada na tabela de atributos. Use com tantos shapefiles em um diretório especificado. Útil ao separar entradas do shapefile e combiná-las em um arquivo separado para manter uma trilha de navegação do nome do shapefile original.

Execute o arquivo dentro de um diretório contendo todos os shapfiles que precisam de modificação

Espero que seja isso que você procura

Loz
fonte
Para informações: não funciona no Arcgis 10.X (a sintaxe do código Python mudou após o Arcgis 9.x).
Gisnside #
1

Se todas as opções acima não funcionarem para você, devido à incompatibilidade de versão ou falta de conhecimento (como é para mim), tente esta solução alternativa:

  • use a ferramenta de conversão Exportar para CAD e exporte todas as suas classes de recursos do seu geodatabase para um arquivo DWG
  • o nome da classe de recurso será usado para preencher o campo Camada do arquivo CAD
  • use a ferramenta de conversão CAD para Geodatabase para exportar seus recursos de volta para um GDB
  • agora você terá os campos de nome da camada na sua tabela para cada recurso
  • use a ferramenta Mesclar para combinar suas classes de recurso do GDB em um único arquivo de forma, que terá o campo de atributo da camada com o nome da classe de recurso original para identificar os itens
BeBre
fonte
0

Encontrei este link para uma ferramenta ArcGIS do US Fish and Wildlife Service que faz exatamente o que você está procurando. Funcionou como um encanto!

Anna Riling
fonte
Esta é a mesma ferramenta descrita em uma resposta anterior.
PolyGeo
A ferramenta do US Fish and Wildlife Service só funciona se o nome do campo for "NAME". Ele pode ser flexibilizado pela atualização da ferramenta de cálculo de campo 'Nome do campo' com% Nome do campo%
Eleza Kollannur