Resumen del problema
El marco de geoprocesamiento es una de las mayores fortalezas de ArcGIS Pro, y los desarrolladores externos son correctamente dirigidos hacia él: una herramienta construida como herramienta de script o caja de herramientas Python obtiene historial de geoprocesamiento, configuraciones de entorno, reporte de progreso y mensajes, modo por lotes, composibilidad con ModelBuilder, y arcpy scripting — un ecosistema que ningún diálogo personalizado podría reconstruir.
Pero ese ecosistema viene con exactamente una interfaz de usuario: el panel de geoprocesamiento autogenerado. No existe ninguna forma soportada para que una herramienta externa presente otra interfaz de usuario mientras sigue siendo una herramienta real de geoprocesamiento. Para herramientas simples el panel generado está bien. Para flujos de trabajo interactivos y ricos en retroalimentación es muy limitante, y los desarrolladores enfrentan un innecesario dilema:
- Permanecer como herramienta GP y aceptar las limitaciones del panel generado (sin widgets personalizados, sin vistas previas en vivo, control limitado del diseño y una larga lista de peculiaridades en el comportamiento de validación), o
- Construir un dockpane/ventana personalizada con la interfaz exacta — y perder completamente el historial de geoprocesamiento, entornos, ModelBuilder, modo por lotes y scripting.
Los propios flujos interactivos emblemáticos de Esri demuestran el problema: Suitability Modeler, el asistente Classification Wizard y Georeferencing son todos paneles personalizados, no diálogos generados de geoprocesamiento. Cuando la interacción rica importa, Esri evita el panel GP. Los desarrolladores externos no tienen forma soportada para hacer lo mismo sin abandonar el marco de geoprocesamiento.
Mejora solicitada
Desacoplar la interfaz de usuario de la herramienta. Dos niveles, cualquiera de los cuales sería un gran avance:
Nivel 1 — diálogos personalizados para herramientas (la solicitud completa). Permitir que un add-in registre un diálogo/panel WPF como la interfaz Pro para una herramienta específica de geoprocesamiento (herramienta script, .pyt, o .atbx). La herramienta sigue siendo una herramienta GP de primera clase en todos los demás aspectos:
- El diálogo personalizado recopila y valida parámetros, luego entrega un arreglo estándar de parámetros a la tubería normal de ejecución GP — así la ejecución se registra en el historial de geoprocesamiento, respeta configuraciones del entorno, reporta progreso/mensajes y añade metadatos exactamente como hoy.
- Los contextos que no pueden alojar el diálogo personalizado — ModelBuilder, modo por lotes, ejecuciones programadas, publicación en servidor,
arcpy — automáticamente vuelven al panel autogenerado y a los objetos existentes de parámetros. Nada se rompe. - Si no se registra ningún diálogo personalizado, el comportamiento es exactamente el actual (totalmente compatible hacia atrás).
Nivel 2 — controles personalizados para parámetros (una solicitud menor pero aún transformadora). Permitir que un desarrollador registre un control WPF personalizado para un parámetro individual (o un tipo de dato personalizado), alojado dentro del panel generado. Incluso esto eliminaría la mayor parte del dolor: una tabla de valores podría convertirse en una cuadrícula real con retroalimentación en vivo; un parámetro remap podría mostrar un histograma del ráster de entrada; un umbral podría mostrar qué celdas selecciona.
Por qué importa
Las cajas de herramientas Python personalizadas son una vía extensible de primera clase para ArcGIS Pro, y organizaciones y terceros construyen suites serias y comerciales sobre ellas. La calidad de lo que ve el usuario está limitada no por el esfuerzo del desarrollador sino por el panel generado. Los desarrolladores que se preocupan por la experiencia del usuario se ven forzados a abandonar el marco de geoprocesamiento — perdiendo procedencia, reproducibilidad y capacidad de scripting, justamente lo que hace confiables las herramientas Pro. Un punto soportado para extender la interfaz acabaría con ese compromiso, elevaría el nivel general del ecosistema externo y no costaría nada en compatibilidad hacia atrás.