Résumé du problème
Le cadre de géotraitement est l'un des plus grands atouts d'ArcGIS Pro, et les développeurs tiers y sont à juste titre orientés : un outil construit en tant qu'outil script ou boîte à outils Python bénéficie de l'historique du géotraitement, des paramètres d'environnement, du suivi de progression et des rapports de messages, du mode batch, de la composabilité ModelBuilder, et arcpy scripting — un écosystème qu'aucun dialogue personnalisé ne pourrait jamais recréer.
Mais cet écosystème est livré avec exactement une interface utilisateur : le volet de géotraitement auto-généré. Il n'existe aucune manière prise en charge pour qu'un outil tiers présente une autre interface utilisateur tout en restant un véritable outil de géotraitement. Pour les outils simples, le volet généré convient. Pour des flux de travail interactifs et riches en retours, il est très limitant, et les développeurs font face à un choix inutile :
- Rester un outil GP et accepter les limites du volet généré (pas de widgets personnalisés, pas d'aperçus en direct, contrôle limité de la mise en page, et une longue liste de bizarreries liées à la validation), ou
- Créer un dockpane/fenêtre personnalisé avec exactement l'interface utilisateur souhaitée — et perdre complètement l'historique du géotraitement, les environnements, ModelBuilder, le mode batch et le scripting.
Les propres flux interactifs phares d'Esri démontrent le problème : Suitability Modeler, image Classification Wizard et Georeferencing sont tous des volets personnalisés, pas des dialogues de géotraitement générés. Quand une interaction riche est importante, Esri contourne le volet GP. Les développeurs tiers n'ont aucun moyen pris en charge pour faire de même sans abandonner le cadre de géotraitement.
Amélioration demandée
Dissocier l'interface utilisateur de l'outil. Deux niveaux, chacun représentant une avancée majeure :
Niveau 1 — dialogues d'outil personnalisés (la demande complète). Permettre à un add-in d'enregistrer un dialogue/volet WPF comme interface Pro pour un outil spécifique de géotraitement (outil script, .pyt, ou .atbx). L'outil reste un outil GP de première classe à tous égards :
- Le dialogue personnalisé recueille et valide les paramètres, puis transmet un tableau standard de paramètres au pipeline d'exécution GP normal — ainsi l'exécution est enregistrée dans l'historique du géotraitement, respecte les paramètres d'environnement, rapporte la progression/les messages et ajoute les métadonnées exactement comme aujourd'hui.
- Les contextes qui ne peuvent pas héberger le dialogue personnalisé — ModelBuilder, mode batch, exécutions planifiées, publication serveur,
arcpy — basculent automatiquement vers le volet auto-généré et les objets paramètre existants. Rien ne casse. - Si aucun dialogue personnalisé n'est enregistré, le comportement est exactement celui d'aujourd'hui (entièrement rétrocompatible).
Niveau 2 — contrôles de paramètres personnalisés (une demande plus petite mais toujours transformative). Permettre à un développeur d'enregistrer un contrôle WPF personnalisé pour un paramètre individuel (ou un type de paramètre personnalisé), hébergé dans le volet généré. Cela éliminerait déjà la plupart des difficultés : une table de valeurs pourrait devenir une vraie grille avec retour en temps réel ; un paramètre remap pourrait afficher un histogramme du raster d'entrée ; un seuil pourrait montrer quelles cellules il sélectionne.
Pourquoi c'est important
Les boîtes à outils Python personnalisées sont une voie d'extensibilité de premier ordre pour ArcGIS Pro, et les organisations ainsi que les tiers construisent dessus des suites d'analyse sérieuses et commerciales. La qualité de ce que l'utilisateur voit est limitée non par l'effort du développeur mais par le volet généré. Les développeurs soucieux de l'expérience utilisateur sont poussés à abandonner le cadre du géotraitement — perdant ainsi la traçabilité, la reproductibilité et la scriptabilité, qui sont précisément ce qui rend les outils Pro fiables. Un point d'extensibilité UI pris en charge mettrait fin à ce compromis, élèverait le niveau qualitatif de tout l'écosystème tiers et ne coûterait rien en compatibilité ascendante.