La risposta a questa domanda è sì e no. In Python è possibile fare tutto ciò che si può fare in .Net, ma facile e possibile sono due cose molto diverse. Successivamente, l'interpretazione più semplice è no , i componenti aggiuntivi di Python non possono fare quanto i componenti aggiuntivi .Net. Tuttavia, le attività che i componenti aggiuntivi di Python possono svolgere sono molto più semplici e veloci da implementare e testare.
Da un punto di vista puramente tecnico, ArcGIS Desktop Add-In Framework offre le seguenti funzionalità:
- Uno schema ben definito basato su XML per la descrizione di una serie di punti e componenti di integrazione desktop comuni: pulsanti, barre degli strumenti, menu, strumenti, menu ed estensioni multi-articolo, nonché un modo per collegarli facilmente in modo dichiarativo da il tuo codice sul desktop ArcGIS
- Un formato e una struttura di file (
.esriaddin
) per la distribuzione del codice di personalizzazione del desktop.
- Un meccanismo per l'installazione, la verifica e la memorizzazione nella cache installati
.esriaddins
, quindi se il file di origine del componente aggiuntivo installato è cambiato, ricaricherà il file modificato nella cache del componente aggiuntivo del desktop locale.
- Una serie di meccanismi di sicurezza e autenticazione per il codice nei componenti aggiuntivi: firma digitale dei
.esriaddin
file, controllo amministrativo su quale livello di autenticazione è necessario per consentire l'installazione di un componente aggiuntivo.
Ciò che manca al framework del componente aggiuntivo è qualsiasi contratto formale del comportamento o della funzionalità dietro i pulsanti, ecc. Quando si installa .Net SDK per ArcGIS, si ottiene l'integrazione di Visual Studio sotto forma di procedure guidate del componente aggiuntivo nelle finestre di dialogo di gestione del progetto , documentazione, frammenti di codice, collegamenti ArcObjects, ecc. Quindi, una volta superati i punti di ingresso forniti dal framework del componente aggiuntivo, un componente aggiuntivo .Net consente di fare il resto con le API di ArcObjects e viene fornito in bundle con , oltre a contenere una libreria di frammenti di codice di attività comuni già lì da usare. In ArcGIS non esiste un simile SDK per sviluppatori Python: tutte le funzionalità di Python sono esposte tramite arcgisscripting / arcpy ed è già inclusa nel prodotto. Quindi, dove .Net SDK viene fornito come download di grandi dimensioni, la cosa più vicina in Python è il download della procedura guidata del componente aggiuntivo relativamente piccolo.
D'altra parte, Python è in grado di utilizzare / implementare interfacce COM , ma l'utilizzo di COM da Python non è in bundle con alcun ArcKIS SDK o documentato nel sistema di aiuto di ArcGIS. Se sei nuovo allo sviluppo in ArcGIS, questo dovrebbe essere abbastanza una barriera all'ingresso per respingerti a meno che tu non sappia davvero cosa stai facendo. Puoi fare COM in Python qui, ma è abbastanza vicino a un Tarpit di Turing che è difficile giustificare il tempo trascorso a meno che tu non sia un utente di livello esperto che abbia già familiarità con i dettagli di COM e ArcObjects.
Ti consiglierei cosa puoi fare con arcpy . Puoi automatizzare molte attività come la chiamata agli strumenti di Geoprocessing e la manipolazione in batch dei documenti della mappa , mentre i componenti aggiuntivi di Python ti consentono di utilizzare alcuni sink di evento ben definiti e alcuni controlli delle finestre di dialogo oltre alle funzionalità di base di arcpy. Se non riesci a pensare a un modo per eseguire la tua attività in Python in base a ciò che dice la documentazione (hai bisogno di alcune interazioni dell'interfaccia utente complessa o di agganciarti ad eventi non esposti nella procedura guidata del componente aggiuntivo Python o utilizzare qualcosa disponibile solo in ArcObjects) , quindi esegui lo sviluppo in un componente aggiuntivo .Net.
Mi dispiace che questo sia più sfumato di una risposta sì o no dura e veloce, ma dovrebbe darti un'idea del fatto che dovresti andare sul percorso Python o .Net nel tuo componente aggiuntivo.
Suppongo che dovrei aggiungere questa informativa: ho progettato e sviluppato gran parte delle funzionalità specifiche di Python per i componenti aggiuntivi in ArcGIS.