Fui encarregado de criar um modelo usando o ArcGIS ModelBuilder, que inicialmente executa algumas tarefas de geoprocessamento, antes de juntar uma tabela do Excel ao resultado desses geoprocessos. No entanto, o modelo precisa realmente abrir o arquivo do Excel primeiro, para que o usuário o edite manualmente, antes de salvar as edições e fechar o arquivo. Espera-se então que o modelo junte esse arquivo do Excel à tabela de atributos de um conjunto de dados (ainda parte do modelo) antes que o modelo continue com várias outras tarefas de geoprocessamento.
Incluo um esboço esquemático de alto nível abaixo para ajudar a ilustrar o ponto (entendo que isso pode não fazer muito sentido para começar).
Para que o modelo fosse executado, concluísse algumas tarefas de geoprocessamento, parasse para abrir um arquivo do Excel, esperasse o usuário editá-lo, salve-o e feche-o, antes de continuar a associar esse arquivo do Excel a uma tabela de atributos e, em seguida, executar um número de outras tarefas de geoprocessamento.
Eu imagino que isso exigiria a incorporação de um script Python ou dois no modelo. Atualmente, estou apenas interessado em saber se o conceito é realmente possível ou não.
fonte
Respostas:
Parece que você precisa desenvolver mais uma ferramenta Python personalizada do que um modelo no ModelBuilder.
xlwt
ouxlutils
em http://www.python-excel.org/ permitirá que você escreva no seu arquivo do Excel (XlsxWriter
manipulará os arquivos xlsx). Se as edições forem menores, você provavelmente poderá incorporar isso em uma ferramenta padrão do ArcToolbox (com alguma criatividade). Se você estiver usando 10.1+, poderá criar um suplemento Python ou uma caixa de ferramentas Python para fazer com que a GUI também funcione.fonte
Eu estive pensando sobre isso e é possível que eu tenha encontrado uma solução inovadora. Você configura um script python em uma caixa de ferramentas com dois parâmetros de usuário, primeiro o local do EXE do Excel. Isso pode até ser codificado de maneira inteligente para verificar uma lista de locais prováveis de caminhos de arquivos codificados (Office12, Office13 etc.).
Em seguida, use a função subprocess.call. Existem algumas coisas realmente legais sobre o uso desse método:
É uma linha de código!
import subprocess subprocess.call(["C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE", "Test.xlsx"])
#Replace args with user inputs (sys.argv[1], sys.argv[2] respectively)
A única coisa é que não tenho 100% de certeza se isso funcionará no construtor de modelos, isso precisará ser testado, no entanto, não vejo por que não, mas como tenho certeza de que o Arc está um animal temperamental.
fonte