O ArcGIS ModelBuilder pode abrir o arquivo do Excel para edição manual e depois alimentar essas edições no modelo?


10

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).

O modelo pausará enquanto o arquivo do Excel é editado e continuará assim que for salvo e fechado

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.


1
Tenho certeza de que, com as ferramentas padrão do construtor de modelos, você não poderá fazer isso, pois não há como pausar o modelo; você também precisará de algum tipo de gatilho para acionar para dizer que o usuário fechou o Excel para reiniciar o modelo. Você pode conseguir isso com algum tipo de script enviado em um loop infinito olhando para um sinalizador em um arquivo de texto depois de gerar um processo separado (Excel)? Eu nunca fiz isso e não sei quais são as armadilhas. Se você deseja mantê-lo no modelbuilder, eu faria as edições do excel primeiro e depois executava o modelo.
precisa saber é o seguinte

Obrigado @Hornbydd - tive os mesmos pensamentos. Editando o arquivo primeiro e depois executar o modelo é o que sugeri, mas eu tenho dito que é necessidades a ser um, modelo integrado ...
the_bonze

1
Eu acho que um script pode olhar para a data e hora de um arquivo para saber se ele foi editado e depois retomar o modelo a partir daí. Pausar é o problema, eu acho.
the_bonze

Sim, o construtor de modelos foi projetado para automatizar um fluxo de trabalho para acelerar o processamento e não ter uma pausa indeterminada no meio. O que acontece se esse usuário sair para almoçar, por exemplo? :) Assim como eu agora!
precisa saber é o seguinte

Respostas:


1

Parece que você precisa desenvolver mais uma ferramenta Python personalizada do que um modelo no ModelBuilder. xlwtou xlutilsem http://www.python-excel.org/ permitirá que você escreva no seu arquivo do Excel ( XlsxWritermanipulará 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.


Os Python AddIns já oferecem opções sofisticadas de GUI em 10.1+? Eu pensei que apenas .NET e Java AddIns fornecem esses ... O Python oferece apenas AddIns sem nenhuma GUI (comandos, ferramentas).
Jürgen Zornig

1
@ JürgenZornig Não é tão fácil: anothergisblog.blogspot.com/2013/07/…
Chad Cooper

Obrigado @ChadCooper. Eu preciso manter o modelo no construtor de modelos, para que os suplementos do Python sejam bons, mas o modelo como entidade precisa estar no construtor de modelos, em vez de uma ferramenta completa do Python.
precisa saber é o seguinte

@Chad Obrigado de qualquer maneira por este bom tutorial de iniciação rápida do ArcPy / Tkinter ... tem que tentar isso!
Jürgen Zornig

1

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:

  1. Não requer bibliotecas externas
  2. a função de chamada não permite a continuação do script até que o Excel seja fechado
  3. Você pode especificar o documento do excel como o segundo argumento
  4. É 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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.