Por que aprender / usar as caixas de ferramentas Python sobre as ferramentas de script Python? [fechadas]

25

Escrevi algumas caixas de ferramentas Python (que são novas no ArcGIS 10.1), mas ainda estou para decidir se devo escrevê-las em vez das ferramentas de script Python em uma caixa de ferramentas padrão.

Eu pensei que a Ajuda on - line pudesse me esclarecer quando preceder alguns pontos com:

Uma vez criadas, as ferramentas em uma caixa de ferramentas Python oferecem muitas vantagens

No entanto, todas as cinco vantagens listadas parecem não ser capazes de usar o Python para escrever ferramentas, e nenhuma parece especificar uma vantagem das caixas de ferramentas do Python sobre as ferramentas de script do Python.

As duas vantagens em que consigo pensar são:

  • Agora, eu posso escrever uma ferramenta Python "pura" em um único script Python sem precisar conectá-la a um diálogo de autoria separado com sua Validação de Ferramenta parecendo ter sido implementada, mas estou feliz por ser mais pragmático do que puro a esse respeito.
  • Agora eu poderia usar o código (Python ou qualquer linguagem capaz de gravar arquivos de texto) para automatizar a gravação das caixas de ferramentas Python, mas ainda preciso encontrar um requisito para fazer isso

Estou ignorando o caso convincente que levou a Esri a fornecer o recurso Python Toolbox e, em caso afirmativo, qual é?

PolyGeo
fonte

Respostas:

34

Os dois são muito, muito próximos em funcionalidade, mas não completamente equivalentes.

Comum a ambos

  • Inclui um conjunto de ferramentas com um alias exclusivo para identificação
  • Pode ligar de arcpy
  • Obtenha gratuitamente um diálogo da ferramenta de geoprocessamento (essencialmente uma interface do usuário completa) para cada ferramenta
  • Pode manter todo o código Python em um arquivo (incorporar a fonte da ferramenta TBX, mantendo toda a implementação em um PYT) e distribuir por email ou unidades de rede compartilhadas
  • Sempre execute na configuração de primeiro plano para aplicativos da área de trabalho. Definindo "Sempre executar em primeiro plano" no código ArcPy?

Exclusivo para arquivos TBX:

  • Pode incluir referências a caixas de ferramentas do sistema, ferramentas COM personalizadas e ferramentas .Net personalizadas
  • As ferramentas do Model Builder podem ser incluídas na caixa de ferramentas
  • A documentação da ferramenta é armazenada dentro do arquivo .tbx
  • Interface do usuário fácil do assistente para configurar parâmetros e executar o código de validação
  • Executar script Python na propriedade da ferramenta Processo
  • Desvantagem: formato binário opaco, as versões mais recentes dos arquivos TBX precisam ser salvas explicitamente como versões mais antigas para funcionar nas versões anteriores do software; a interface do usuário pode ser uma faca de dois gumes, pois você precisa alternar entre as páginas de propriedades para ver se perdeu um configuração (como caminhos relativos)

Exclusivo para caixas de ferramentas Python:

  • Texto puro, então caixas de ferramentas podem ser tratados da mesma forma que qualquer outro código (útil em ambientes onde o controle de boa revisão de ferramentas é usado como você pode traçar a sua história de desenvolvimento - olhada em como muitos projetos no GitHub usar PYTmais TBX.)
  • Tenha mais controle sobre determinados tipos de parâmetros (ou seja, você pode criar tipos de dados compostos e definir esquemas de tabelas de valores)
  • A propriedade isLicensed pode ser usada para desativar uma ferramenta se um produto ("ArcInfo") ou extensão ("espacial") não estiver disponível.
  • A documentação da ferramenta é armazenada em arquivos XML na mesma pasta que o arquivo .pyt
  • Desvantagem: Nenhuma interface do usuário do assistente para configurar parâmetros da ferramenta, significativamente mais código de andaime no Python, transforma o desenvolvimento do Toolbox em mais uma tarefa formal de desenvolvimento de software do que simplesmente adicionar um script de implementação. Recarregar um pyt para carregar mudanças durante o desenvolvimento pode ser lento se o pyt for grande (isso pode ser evitado colocando ferramentas em outros arquivos e importando para que eles não precisem ser recompilados).

Há um tempo atrás, quando eu estava trabalhando nas minhas primeiras dezenas de PYTcaixas de ferramentas, fiquei perturbado com a quantidade de aborrecimentos necessários para configurar um PYTpela primeira vez, então desenvolvi uma ferramenta chamadatbx2pyt . Vai pegar uma TBXcaixa de ferramentas e convertê-la em uma PYTcom uma perda mínima de código. De fato, o PYTpoder que era o primeiro a TBX. Essa pode ser uma boa maneira de fazer a transição das ferramentas existentes para o formato Python Toolbox, se você desejar. No mínimo, torna possível configurar os parâmetros das suas ferramentas usando a interface do usuário antes de mudar para o código.

Jason Scheirer
fonte
15

A seção de ajuda intitulada Comparando caixas de ferramentas personalizadas e Python tem uma boa comparação de por que você pode escolher uma sobre a outra, embora eu esteja curioso para ouvir vantagens / desvantagens do "mundo real" daqueles experientes na criação de caixas de ferramentas Python.

Uma clara desvantagem que li é a incapacidade de combinar / combinar modelos e scripts em uma caixa de ferramentas Python, como você pode em uma caixa de ferramentas personalizada padrão.

RyanDalton
fonte
11

Meu principal motivo para inclinar-se para caixas de ferramentas python é o controle de versão e o gerenciamento de código-fonte (consulte Aplicando o controle de versão ao ArcGIS Models ), seguido de perto por poder usar um editor de código / IDE com preenchimento de guia, expressões regulares, bibliotecas de trechos, etc.

No entanto, como observa Ryan Dalton , ao fazer isso, você perde a capacidade de usar o Model Builder e as ferramentas de estilo antigo - a menos que esteja disposto a fazer o esforço de criar o modelo como de costume e depois exportar para python e reescrever para ajustar no .pyt. (Se você fizer isso, consulte as Diretrizes para organizar as caixas de ferramentas Python (.pyt) no ArcGIS ). No momento, essa desvantagem é grande o suficiente para que eu ainda comece a usar seriamente as caixas de ferramentas python.

Se você possui caixas de ferramentas existentes que gostaria de converter para .pyt, poderá achar útil o conversor parcial tbxtopyt de Jason Scheirer .

Quanto ao "caso convincente?" parte da pergunta: se você já possui algumas dicas de desenvolvimento de software, sim, definitivamente. Se como eu, você tem 3 partes de GIS Tech / Analyst e 1 parte ou menos pythonista, nem tanto. (Pelo menos ainda não - eu realmente espero que essa natureza binária ou a outra das duas abordagens mude em um futuro próximo).

Matt Wilson
fonte