Quando usar o ModelBuilder sobre scripts Python e vice-versa?

71

Eu sou novo no Python no ArcGIS, mas não sou novo no ModelBuilder.

Gostaria de conhecer os benefícios do Python vs ModelBuilder.

Quando devemos escrever um script Python para automação GIS em vez de usar o ModelBuilder?

Quais são os recursos de automação do Python que não conseguimos encontrar no ModelBuilder?

BBG_GIS
fonte

Respostas:

82

Acredito que o usuário deve definir claramente seus objetivos antes de decidir qual conjunto de ferramentas usar. Os scripts ModelBuilder e Python são excelentes em tarefas diferentes. Algumas reflexões:

  1. O ModelBuilder não possui recursos de mapeamento, enquanto o arcpy.mapping possui.
  2. O Python pode ser usado para otimizar os fluxos de trabalho, como no pacote de multiprocessamento ou no processamento paralelo .
  3. O Python permite loops aninhados e outras ferramentas lógicas iterativas úteis. Para obter um resultado semelhante no ModelBuilder, você teria que construir modelos aninhados intricados e complicados.
  4. A manipulação simples de texto é muito fácil com o Python e muito difícil ou impossível com o ModelBuilder.

    por exemplo, renomear uma lista de nomes de arquivos de, por exemplo, "m_2010_naip_2310345_nw.img" para "2310345nw.img" pode ser facilmente realizada com o Python usando o os.pathmódulo.

Por outro lado:

  1. O ModelBuilder é muito útil para reunir rapidamente ferramentas comuns e eliminar a necessidade de scripts de depuração.

  2. O ModelBuilder possui um iterador recursivo muito útil, fácil de implementar, a fim de percorrer pastas e subpastas.

  3. O ModelBuilder se destaca por representar visual e intuitivamente o fluxo de trabalho para tarefas complicadas .

  4. O ModelBuilder pode incorporar ferramentas de script Python .

Aaron
fonte
5
Diferenças descritas entre Python e Model Builder no ArcGIS claramente. Obrigado
BBG_GIS
24
Eu acrescentaria também: 1. você pode executar seu script Python fora do ArcMap 2. Você pode usar ArcObjects no Python, 3. Pode haver algumas diferenças de velocidade.
Tomek
3
+1 LOES NESTED e arcpy.mapping! Gosto da capacidade de fazer cálculos em um script e adicioná-los a tabelas de atributos ou, melhor ainda, ao layout do mapa (área de cada tipo de zona úmida, por exemplo).
9133 Roy
2
Eu li scripts em python para o livro ArcGIS. Também adiciono mais recursos: 1- Os cursores de script permitem percorrer os registros em uma tabela, lendo as linhas existentes e inserindo novas linhas. O script 2 pode ser usado para agrupar outro software - ou seja, para colar o aplicativo. por exemplo, python pode ser usado para acessar funções no Microsoft Excel ou no pacote estatístico R. O script 3-A pode ser executado como um script independente em disco fora do ArcGIS. você não precisa executar o ArcMap ou o ArcCatalog para obter o script. trabalhos. (Script em Python para ArcGIS, capítulo 2, página 39)
BBG_GIS 13/13
24

Se você estiver trabalhando exclusivamente dentro dos limites do ArcGIS, há algumas considerações que eu consideraria ao tentar determinar a abordagem a ser adotada.

  • O que você está tentando realizar,
  • Quais são seus conjuntos de habilidades atuais,
  • Você compartilhará seu trabalho com outras pessoas para usar, aprender ou manipular e
  • Quem é o seu público-alvo?

Dadas essas considerações:

  1. Geralmente, é mais rápido e fácil criar um processo no ModelBuilder do que no Python, a menos que parte do seu processo não possa ser replicada no ModelBuilder.
  2. Se você não conhece o Python e não pretende aprendê-lo, o ModelBuilder é uma ótima opção.
  3. Se você não conhece o Python e deseja aprender a incorporá-lo ao seu conjunto de habilidades, o ModelBuilder é uma ótima maneira de começar criando modelos simples e exportando-os para o Python, para que você tenha o esqueleto do seu processo final pré-construído para você. . Esse método tem um custo, pois há muitas informações e variáveis ​​estranhas que geralmente são criadas durante o processo de conversão, mas ainda é uma ótima maneira de começar a aprender.
  4. Se você estiver construindo ferramentas para uso pessoal, usar o método com o qual se sentir mais confortável geralmente é o caminho a seguir. Eu pessoalmente uso os dois, dependendo das minhas necessidades.
  5. Se você planeja compartilhar sua análise com outras pessoas e deseja compartilhar seu modelo / script com outras pessoas fazem parte da documentação do processo, geralmente é muito mais fácil seguir e entender um modelo para pessoas não técnicas.

Provavelmente, não há resposta para "o que é melhor" para uso pessoal, mas se você estiver buscando oportunidades de emprego a longo prazo, aprendendo Python, você se destacará daqueles que sabem apenas usar as ferramentas pré-programadas ou apenas saiba como usar o ModelBuilder. Você também tem a capacidade de sair dos limites do Python para ArcGIS (ArcPy) e começar a automatizar muito mais tarefas e projetos usando outras bibliotecas GIS de código aberto e proprietárias, bem como muitas bibliotecas não GIS (ou seja, banco de dados manipulação de imagem, estatísticas, etc.).

RyanDalton
fonte
20

O Model Builder é uma linguagem de programação visual excelente e fácil de aprender e uma boa entrada para a programação GIS em geral. Mas, em algumas coisas, o python pode fazer mais.

Um exemplo é a integração de bibliotecas não ESRI GIS. Quase todo o GIS de código aberto também pode ser endereçado via python (por exemplo , GRASS , Sextante , QGIS , SAGA ). Isso me ajudou muito, porque eu só tenho uma licença do ArcView. Portanto, toda vez que não posso usar uma determinada ferramenta de geoprocessamento no ArcGIS, procuro outras opções disponíveis no GIS de código aberto. Depois, pego essas ferramentas OpenSource e as combino com as ferramentas do ArcGIS em um script python maior ou as integro no ModelBuilder por meio de um script python menor.

Tenho certeza que outros membros podem citar mais vantagens.

Martin
fonte
9

Ao usar o Python e o ArcGIS, você obtém toda a funcionalidade do Python, além da que você já possuía no ArcGIS. Se você precisar desse tipo de poder e flexibilidade, depende de seus desejos. Além disso, conhecer e realmente alavancar uma linguagem de programação como o Python leva tempo. Se esse investimento vale a pena, você decide. No entanto, para o processamento sério de dados, uma linguagem de script real é uma adição muito boa ao seu arsenal.

Além de qualquer funcionalidade que o ModelBuilder possa perder, também há uma discussão mais fundamental. Em geral, os scripts são muito mais adequados para criar fluxos de trabalho complexos. O código é processado de cima para baixo, e tarefas complexas podem ser subdivididas em subtarefas menores usando, por exemplo, funções. ou objetos. Uma ferramenta gráfica como o construtor de modelos tende a se tornar um grande espaguete.

Paul Hiemstra
fonte
7

Eu sou parcial em criar scripts Python. É mais divertido escrever código do que mexer nas linhas de conexão de caixas e coisas assim, pelo menos para mim.

O que é realmente ótimo nos scripts Python é que você pode agendar seus scripts para serem executados em um momento conveniente para você. Se você tiver um script que demora um pouco para concluir ou precisa ser executado fora do horário comercial, isso é realmente conveniente. Você pode ver um exemplo de como agendar um script aqui .

E como o @Aaron menciona, você pode configurar facilmente o loop em um script Python.

Se você está apenas começando o script Python, pode criar um modelo com o Model Builder e exportá-lo como um script Python. Às vezes, faço isso se estiver com problemas para entender como usar várias ferramentas em um script. Isso pode ajudá-lo a entender como montar scripts.

Patty Jula
fonte
5

Descobri que pareço ficar sem solução com o construtor de modelos do que com os scripts python. A natureza um tanto de 'caixa preta' do construtor de modelos para mim torna mais difícil encontrar onde o problema está localizado.

Também descobri que posso encontrar muito mais ajuda em python. Costumo encontrar muitos tópicos e tópicos sobre becos sem saída sobre o construtor de modelos. Também há menos exemplos, onde, como no python, você provavelmente pode encontrar pequenos trechos da maioria das partes de qualquer script que estiver escrevendo.

Rex
fonte