Quais são os prós e os contras dos suplementos Python versus .NET para ArcGIS for Desktop?

11

Encontrei na ajuda do ESRI .NET:

Pitão

Todos os aplicativos ArcGIS Desktop incluem uma linguagem de script incorporada chamada Python. Muitas áreas do ArcGIS - particularmente o geoprocessamento - são acessíveis por meio de APIs (interfaces de programação de aplicativos) Python simplificadas, facilitando a criação e a automação de tarefas comuns. Os scripts Python são facilmente compartilhados e podem ser produzidos sem um ambiente de desenvolvimento externo. Há uma variedade de módulos Python de domínio público focados em áreas como ciência, engenharia e matemática. Com todos os seus pontos fortes, o Python não é adequado para todas as tarefas de programação. Embora a cobertura esteja melhorando, nem todas as áreas do ArcGIS estão atualmente expostas ao Python. Além disso, a experiência de edição e depuração no Python não é tão sofisticada ou fácil de usar quanto as incluídas em ambientes de desenvolvimento comercial, como o Visual Studio.Por fim, você não pode ouvir e responder a eventos do ArcGIS, implementar uma interface COM ou conectar-se aos diversos pontos de extensibilidade COM da ESRI usando Python.

e na ajuda do ArcGIS Desktop:

O ArcGIS 10.1 apresenta ao Python a lista de idiomas para a criação de suplementos de área de trabalho, fornecendo uma solução fácil para estender a funcionalidade da área de trabalho. Para simplificar o desenvolvimento de suplementos do Python, você deve baixar e usar o Assistente de Suplemento do Python para declarar o tipo de personalização. O assistente irá gerar todos os arquivos necessários para o suplemento funcionar.

Se os suplementos Python e .NET tiverem a mesma funcionalidade? Isso significa que eu posso fazer a mesma coisa em Python que o .NET?

user7172
fonte
Onde se diz que "Python e .NET têm os mesmos recursos para criar suplemento"?
PolyGeo
desculpe, eu expressei mal o que quero dizer (eu atualizo a postagem)
user7172 29/07
1
implement a COM interface, or plug into ESRI’s many COM extensibility points using PythonIsso é estranho. Python pode funcionar bem com COM.
21713 Nathan W
De fato, eu criei suplementos Python (triviais) que usam ArcObjects através de comtypes. No entanto, eu não tentei implementar interfaces COM em Python. Não tenho certeza se isso é possível ou quão difícil seria comparado ao .NET. Além disso, nenhum tipo de suplemento permite o registro automático no COM, portanto, algumas das coisas mais avançadas são melhor atendidas com um componente COM tradicional que pode ser registrado pelo instalador ou pelo RegAsm (ESRI).
blah238
1
Isso não é ArcGIS, mas foi assim que implementei uma interface COM usando Python para MapInfo nathanw.net/2011/04/07/using-python-and-mapinfo-with-callbacks. Eu diria que é mais fácil do que o .NET: )
Nathan W

Respostas:

24

A resposta a esta pergunta é sim e não. É possível, com algum esforço, fazer tudo em Python que você possa fazer no .Net, mas fácil e possível são duas coisas muito diferentes. Depois disso, a interpretação mais simples é não , os suplementos Python não podem fazer tanto quanto os suplementos .Net. No entanto, as tarefas que os suplementos do Python podem realizar são muito mais fáceis e rápidas de implementar e testar.

Do ponto de vista puramente técnico, o ArcGIS Desktop Add-In Framework oferece a seguinte funcionalidade:

  • Um esquema bem definido, baseado em XML, para descrever uma série de pontos e componentes comuns de integração da área de trabalho: botões, barras de ferramentas, menus, ferramentas, menus e extensões com vários itens, além de uma maneira de conectá-los facilmente de maneira declarativa. seu código para o ArcGIS desktop
  • Um formato de arquivo e estrutura de arquivo ( .esriaddin) para distribuir o código de personalização da área de trabalho.
  • Um mecanismo para instalar, verificar e armazenar em cache instalado .esriaddins. Portanto, se o arquivo de origem do suplemento instalado for alterado, ele será recarregado no arquivo de suplemento da área de trabalho local.
  • Um conjunto de mecanismos de segurança e autenticação para o código em Suplementos: assinatura digital de .esriaddinarquivos, controle administrativo sobre o nível de autenticação necessário para permitir a instalação de um Suplemento.

O que falta na estrutura de suplementos aqui é qualquer contrato formal de comportamento ou funcionalidade por trás dos botões, etc. Ao instalar o .Net SDK for ArcGIS, você obtém a integração do Visual Studio na forma de assistentes de suplemento nas caixas de diálogo de gerenciamento de projetos. , documentação, trechos de código, ligações ao ArcObjects etc. Assim que você passar pelos pontos de entrada que a estrutura de suplementos fornece, um suplemento .Net permite percorrer o resto do caminho com as APIs do ArcObjects, que também são fornecidas com , além de conter uma biblioteca de trechos de código de tarefas comuns já existentes para usar. Não existe um SDK de desenvolvedor Python no ArcGIS: toda a funcionalidade do Python é exposta por meio de arcgisscripting / arcpy e já está incluída no produto. Portanto, onde o .Net SDK vem como um download grande, a coisa mais próxima do Python é o download relativamente pequeno do Assistente de Complementos.

Por outro lado, o Python é capaz de consumir / implementar interfaces COM , mas o uso do COM do Python não é fornecido com nenhum ArcGIS SDK ou documentado no sistema de ajuda do ArcGIS. Se você é novo no desenvolvimento no ArcGIS, isso deve ser uma barreira suficiente para afastá-lo, a menos que você realmente saiba o que está fazendo. Você pode fazer COM em Python aqui, mas é quase o suficiente para um Turing Tarpit que será difícil justificar o tempo gasto, a menos que você seja um usuário de nível especialista já familiarizado com os meandros do COM e do ArcObjects.

Eu recomendo que você analise o que você pode fazer com o arcpy . Você pode automatizar muitas tarefas, como chamar ferramentas de Geoprocessamento e manipular lotes de documentos de mapa , e os Suplementos do Python permitem usar certos coletores de eventos bem definidos e alguns controles de diálogo, além dos recursos básicos do arcpy. Se você não consegue encontrar uma maneira de realizar sua tarefa no Python com base no que a documentação diz (você precisa de alguma interação complexa da interface do usuário ou se conectar a eventos não expostos no Assistente de Complemento do Python ou usar algo disponível apenas no ArcObjects) , faça seu desenvolvimento em um suplemento .Net.

Desculpe, isso é mais matizado do que uma resposta direta ou indireta, mas você deve ter alguma orientação sobre se deve seguir a rota Python ou .Net no seu suplemento.

Suponho que devo adicionar esta divulgação: projetei e desenvolvi grande parte da funcionalidade específica do Python para suplementos no ArcGIS.

Jason Scheirer
fonte
1

Você está olhando para o ambiente da área de trabalho, então o .NET é certamente uma opção. No entanto, você ficará limitado ao que pode fazer com o .NET agora que grande parte do ArcGIS Server está disponível para execução em várias plataformas.

Meus dois centavos: se você estiver fazendo um trabalho profundo da interface do usuário, sugiro o .NET, pois você pode criar uma interface do usuário com bastante facilidade. Se você realmente é apenas um script e está usando as partes mais profundas da análise do ArcGIS Python, você poderá mudar para o Servidor (ou a "nuvem") muito, muito mais fácil.

Darrell O'Donnell
fonte
1

Uma das desvantagens do desenvolvimento de suplementos no .NET é que cada nova versão do ArcGIS usa uma versão incompatível diferente do ArcObjects e uma versão incompatível diferente do Visual Studio. Os binários gerados pelos suplementos do .NET geralmente são compatíveis com versões posteriores do ArcGIS, mas apenas se você não quiser fazer alterações no seu suplemento em uma versão do ArcGIS posterior à versão original. desenvolvido.

Desenvolvi um suplemento .NET para carregar as camadas TIGER / Line Data do Census Bureau em um mapa no ArcGIS 10.0, e o suplemento binário ainda funciona no ArcGIS 10.4. Infelizmente, quando desejei fazer modificações no suplemento, tentei trazer a solução para a versão do Visual Studio compatível com o ArcGIS 10.4 e fui inundada por um grande número de mensagens de erro devido a chamadas incompatíveis ao ArcObjects e aos recursos do Estúdio visual.

O desenvolvimento de suplementos no Python envolve o uso do ArcPy em vez do ArcObjects, portanto a documentação fica mais acessível e o processo de revisão do código para uma nova versão do ArcGIS deve ser muito mais fácil.

A principal desvantagem do uso do Python em vez do .NET é que a criação de uma interface GUI no Python é muito mais difícil. Pacotes como o wxPython podem ser usados, mas há muitas dificuldades em fazê-los funcionar no ArcGIS. A interface do usuário do Toolbox é muito mais limitada do que as caixas de diálogo que podem ser criadas no .NET.

JDMorganArkansas
fonte