El marco de geoprocesamiento
El marco de geoprocesamiento es un conjunto de ventanas y cuadros de diálogo que se utilizan para administrar y ejecutar herramientas. En el presente documento se hace referencia a los conceptos e ideas más importantes que abarca este marco, dejando de lado la mecánica de su uso.
La idea principal detrás del geoprocesamiento es permitirle implementar sus ideas rápida y fácilmente en un software nuevo que se pueda ejecutar, administrar, modificar, documentar y compartir con la comunidad de usuarios de ArcGIS. El concepto de software, en este caso, se refiere a algo que da instrucciones a ArcGIS para hacer lo que el usuario desee. Un modelo de geoprocesamiento, por ejemplo, es un software nuevo creado por el usuario que contiene un lenguaje de programación visual fácil de utilizar denominado ModelBuilder.
El tema principal de esta sección es la noción de geoprocesamiento como procedimiento que el usuario sigue para crear un software útil nuevo. Al hacerlo, se espera que amplíe y profundice su conocimientos acerca de cómo y por qué utilizar el geoprocesamiento.
Para crear un software nuevo de cualquier tipo, se requieren dos elementos esenciales:
- Un lenguaje formal que opere con los datos capturados dentro del sistema.
- Un marco de creación, administración y ejecución del software basado en este lenguaje. Esto incluye editores, buscadores y herramientas de documentación.
El lenguaje del geoprocesamiento es su conjunto de herramientas. El marco de geoprocesamiento es un pequeño conjunto de interfaces de usuario integradas que se utilizan para la organización y administración de herramientas existentes, y para la creación de nuevas herramientas. Los componentes básicos del marco se muestran en el tema Recorrido rápido por el geoprocesamiento, e incluyen los siguientes:
- La ventana Buscar para buscar y ejecutar herramientas, y la ventana Catálogo para buscar cajas de herramientas para administrar o ejecutar las herramientas que contengan
- El cuadro de diálogo para completar de manera interactiva los parámetros de las herramientas y ejecutarlas
- La ventana de Python para ejecutar una herramienta al introducir sus parámetros
- La ventana ModelBuilder para conectar secuencias de herramientas
- Métodos para crear secuencias de comandos y agregarlas a cajas de herramientas.
Modelos de geoprocesamiento y ModelBuilder
Las herramientas se ejecutan por medio de sus cuadros de diálogo. Puede tomarlo como la ejecución de una instrucción única en un lenguaje de programación. A pesar de que la ejecución de una sola herramienta sea un procedimiento definitivamente práctico, el sistema no será muy útil a menos que pueda conectar varias herramientas y utilizar las salidas de cada una con las demás, tal como lo hace un lenguaje de programación.
En el marco de geoprocesamiento, la ventana ModelBuilder es la que le permite implementar sus ideas rápida y fácilmente en un software, por medio de la unión de elementos del lenguaje de geoprocesamiento (las herramientas) en una secuencia. Es importante tener en cuenta que, ya que dan instrucciones al equipo para realizar algún tipo de acción, los modelos son software. El lenguaje de programación es visual (lo que ve en ModelBuilder), en lugar de basado en texto como un lenguaje de programación tradicional.
Lo más importante que se debe tener en cuenta aquí es que los modelos son herramientas. Se comportan del mismo modo que las demás herramientas del sistema. Puede ejecutarlas en la ventana del cuadro de diálogo o en la ventana de Python. Debido a que los modelos son herramientas, puede incorporar modelos dentro de modelos. De hecho, varias de las herramientas del sistema que se proporcionan con ArcGIS son modelos.
Los modelos pueden ser tan complejos como desee. En un modelo puede utilizar cualquier herramienta tanto del sistema como personalizada, incluidos los modelos que haya escrito (ya que los modelos son solo herramientas). También puede utilizar bucles y condiciones para controlar el funcionamiento lógico de un modelo.
Los modelos pueden ser extremadamente simples y a la vez productivos. Puede crear un modelo que contenga una sola herramienta, pero que incorpore algunos de sus parámetros. Por ejemplo, la herramienta Zona de influencia contiene seis parámetros, pero para el conjunto de tareas actuales sabe que tres de ellos son siempre iguales. En lugar de completar estos parámetros cada vez que ejecute esta herramienta, puede crear rápidamente un modelo y establecer estos tres parámetros, guardar el modelo como la herramienta MyBuffer y utilizar directamente el cuadro de diálogo de esta, en lugar del de la herramienta Zona de influencia. Es posible que sólo utilice la herramienta MyBuffer pocas veces antes de eliminarla, pero no significa una pérdida de tiempo, ya que la creación fue fácil y rápida, y fue de gran productividad.
Uso de secuencias de comandos
También puede utilizar un lenguaje de secuencia de comandos para crear un software nuevo y útil. Un programa que utiliza un lenguaje de secuencia de comandos es una secuencia de comandos. En el mundo de la programación de software, los lenguajes se pueden dividir en dos categorías básicas: lenguajes de sistema y lenguajes de secuencia de comandos. Los lenguajes de sistema, como C++ y .NET, se utilizan para crear aplicaciones desde cero por medio de primitivas de bajo nivel y recursos de bajo nivel del equipo. Los lenguajes de secuencia de comandos, como Python y Perl, se utilizan para unir aplicaciones por medio de las funciones integrales de más alto nivel del equipo, al mismo tiempo que ocultan las bases estructurales con las que trabaja el programador de lenguajes de sistema. Comparados con los lenguajes de sistema, los lenguajes de secuencia de comandos son fáciles de aprender y utilizar: solo se necesita comprender los aspectos básicos de la programación para ser productivo.
En el marco de geoprocesamiento, las secuencias de comandos son iguales a los modelos en que se pueden utilizar para crear nuevas herramientas. Los modelos se crean con un lenguaje de programación visual (ModelBuilder), y las secuencias de comandos se crean con un lenguaje basado en texto y editores de texto.
Al igual que los modelos, las secuencias de comandos son herramientas. Puede introducir una secuencia de comandos en una caja de herramientas personalizada mediante un asistente paso a paso, y se convertirá en otra herramienta más que puede utilizar en un modelo o en otra secuencia de comandos. Varias herramientas del sistema son secuencias de comandos. Técnicamente, puede escribir una secuencia de comandos sin introducirla en una caja de herramientas. En este caso, la secuencia no es una herramienta, sino una secuencia de comandos independiente en el disco.
Existen varias razones por las cuales es conveniente utilizar secuencias de comandos:
- Es posible que en algún momento necesite lógica de programación más avanzada, como una ejecución condicional y un manejo de errores avanzado; estructuras de datos más avanzadas, como diccionarios y listas; o más funcionalidad, como funciones de manipulación de cadenas de texto, matemática y archivos. Muchos lenguajes de secuencia de comandos se extienden con bibliotecas de terceros para adecuarse a características como matemática y estadística avanzadas, automatización Web, consultas de bases de datos y utilidades de sistema avanzadas.
- Existen algunas funciones de geoprocesamiento de bajo nivel disponibles solo para secuencias de comandos. Los cursores, por ejemplo, le permiten incluir los registros de una tabla en un bucle al leer o escribir filas, e insertar filas nuevas. Existen funciones que permiten el acceso a las propiedades de los datos de ArcGIS, tales como la extensión de una clase de entidad o la gran cantidad de propiedades de campos individuales en una tabla.
- Las secuencias de comandos son ideales para unir otros tipos de software, es decir, armar conjuntos de aplicaciones. Por ejemplo, puede tener un modelo que genera un simple archivo de texto de direcciones y propietarios de parcelas que se ven afectados por un cambio de ordenanza de zonificación, y desear ejecutar otro programa que lea este archivo y genere cartas oficiales de notificación para los propietarios de las parcelas afectadas. Puede utilizar una secuencia de comandos para armar este programa de generación de cartas, introducir esta secuencia en una caja de herramientas y utilizarla directamente en el modelo.
- Las secuencias de comandos se pueden ejecutar fuera de ArcGIS, es decir que puede ejecutar una secuencia de comandos directamente desde la línea de comandos del sistema operativo. (Sin embargo, debe tener instalado el paquete de sitio de ArcPy en el equipo, ya que debe acceder a las herramientas de geoprocesamiento).
Un marco para crear y administrar software
El marco de geoprocesamiento se construyó para permitirle implementar sus ideas rápida y fácilmente en un software nuevo que el sistema pueda administrar y que se pueda compartir con los usuarios.
El geoprocesamiento es un lenguaje que está compuesto por operadores o herramientas que trabajan con los datos que están dentro de ArcGIS (tablas, clases de entidad, rásteres, TIN y demás) y realizan tareas necesarias para la manipulación y el análisis de información geográfica en una gran variedad de disciplinas.
Puede crear un software nuevo rápida y fácilmente en forma de modelos y secuencias de comandos. Estas herramientas nuevas realizan tareas que no forman parte del paquete de ArcGIS estándar. Por ejemplo, no existe menú, botón ni objeto de programación en ArcGIS que siga el modelo Proyectar y recortar que se muestra en el tema Qué es el geoprocesamiento.
El marco de geoprocesamiento es el que administra las herramientas, y no el usuario. Este es un punto sutil pero importante que no resulta evidente a primera vista.
- Se puede acceder a todas las herramientas, ya sean de sistema o personalizadas (escritas por el usuario), a través de sus cajas de herramientas. Imagine una situación diferente, en la que para acceder a los modelos, secuencias de comandos, herramientas de sistema y herramientas personalizadas se utilicen interfaces y métodos diferentes para cada uno. Su uso y administración serían demasiado complejos. En el geoprocesamiento, todas las cosas se crean y administran de manera igualitaria, ya sean herramientas integradas, herramientas de modelos o herramientas de secuencias de comandos.
- Todas las herramientas se documentan de la misma manera. Una vez que crea una herramienta, puede documentarla en la ventana Catálogo, para que el sistema pueda catalogarla y buscarla. Compare esto con la posibilidad de dejar los estándares y la administración de la documentación como responsabilidad del usuario.
- Las herramientas tienen la misma interfaz de usuario: el cuadro de diálogo. Estos cuadros de diálogo se crean automáticamente de acuerdo a los parámetros de la herramienta. No tiene que realizar ningún tipo de programación de interfaz. Imagine una situación en la que el diseño y programación de la interfaz de usuario sea responsabilidad del autor de la herramienta.
Las herramientas se pueden compartir fácilmente. Una caja de herramientas con todas sus herramientas y conjuntos de herramientas se ubica en un archivo en disco con extensión .tbx o dentro de una geodatabase. Cualquier persona que tenga acceso al archivo o a la geodatabase puede ejecutar las herramientas.
El punto más importante es que las herramientas se convierten en miembros integrales del marco de geoprocesamiento, donde cuentan con documentación, interfaz de usuario, métodos de acceso y métodos de uso coherentes.
El geoprocesamiento y ArcObjects
ArcObjects es una biblioteca extensa de objetos de programación de bajo nivel que se presenta como parte del kit de desarrollo de software (SDK) de ArcGIS. Los desarrolladores utilizan ArcObjects para crear aplicaciones nuevas o extender la funcionalidad existente de las aplicaciones de ArcGIS (a decir verdad, la mayoría de las herramientas de sistema y todo el marco de geoprocesamiento se construyeron con ArcObjects). Al igual que el geoprocesamiento, el SDK de ArcObjects se puede utilizar para crear software nuevo.
El SDK de ArcObjects y el geoprocesamiento son complementarios, es decir que ninguno impide el uso del otro. Como regla general, ArcObjects se utiliza para extender ArcGIS con un comportamiento nuevo, mientras que el geoprocesamiento está diseñado para automatizar tareas. ArcObjects se utiliza para realizar acciones como agregar interfaces de usuario nuevas, agregar un comportamiento personalizado a las clases de entidad o crear un renderizador cartográfico. El geoprocesamiento se utiliza para crear software (modelos y secuencias de comandos) que automatice tareas dentro de los límites de un marco que funcione correctamente.
ArcObjects está pensado para utilizarse con un lenguaje de programación de sistema, en el que el programador necesita tener acceso a las primitivas de bajo nivel para implementar lógicas y algoritmos complejos. Es por esto que ArcObjects contiene miles de objetos y solicitudes diferentes, para permitir al programador el nivel justo de control que estas lógicas y algoritmos requieren. Ya que ArcObjects se utiliza en combinación con un lenguaje de programación de sistema, la aplicación requiere un amplio conocimiento de programación, mucho más que el geoprocesamiento y sus modelos y secuencias de comandos.
Por el contrario, el geoprocesamiento es una capacidad universal que todos los usuarios de SIG pueden utilizar e implementar para automatizar su trabajo, construir métodos y procedimientos repetibles y bien definidos, y diseñar importantes procesos geográficos.