martes

Mas allá de los SIG. Parte II

Mas allá de los SIG. Programación, Conceptos Fundamentales II Parte



Programación dentro de los SIG de escritorio:

Los principales programas SIG de código libre o comercial incluyen una interfaz que permite acceder al lenguaje de programación (script) que sirve para personalizar o incluso desarrollar nuevas herramientas.

Las capacidades de personalización y programación están presentes en los programas SIG más conocidos pero la complejidad, interfaz, capacidades, documentación, varían de un programa a otro, en los softwares comerciales estas capacidades están limitadas a los métodos existentes en la estructura del programa. 

En la actualidad la programación en los SIG tiene un inmenso campo de acción y podemos acceder a esta rama con más facilidad que en años anteriores. 

Personalización: ¿Qué entendemos por personalizar?: modificar la interfaz de usuario con el fin de adaptarlo a necesidades específicas, cambiar el idioma de la interfaz, optimizar espacio o reorganizar herramientas. Alterar la interfaz de un programa, es decir, sus barras de menús, botones, herramientas y demás, con el objeto de hacerlo más amigable al usuario, es una tarea cuya importancia no debe desestimarse si consideramos que uno de los principales problemas que ha atravesado esta tecnología es que sea asimilada e integrada en las diferentes funciones de las empresas donde se utilizan. Un programa personalizado y orientado a una tarea específica, con herramientas propias de la empresa, que permita consultas amigables, puede integrarse más fácilmente que el programa “crudo” y disminuir la curva de aprendizaje por parte de los futuros usuarios.



Ejemplo de personalización de una consulta a una entidad en ArcView3:



Es posible realizar cierta personalización sin programar, muchos programas GIS, más que todo, los SIG comerciales permiten con mucha facilidad cambiar la posición de los botones menús, alterar sus iconos y textos, crear nuevos botones, en si modificar la interfaz de usuario, para ello generalmente se entra a una caja de dialogo que permite acceder a las propiedades de estos “objetos”. Este aspecto es de considerar y ESRI ha ampliado esto, ofreciendo objetos o componentes con los que un usuario puede ensamblar su propio programa deacuerdo a sus necesidades, pudiendo ser un simple visor de su cartografía, la ventaja de esto es que no se accede al código fuente, por lo tanto no hay riesgo de piratería entre otros, así como disminuir la complejidad. 

En cuanto a los complejos análisis espaciales herramientas como los modeladores (Model Builder) ya presente en los SIG libres, crece continuamente permitiendo que el usuario combine múltiples tipos de análisis, raster, vectoriales o su combinación, automatice sus rutinas entre otros 

Modelador de procesos QGis:



Ahora para entender a lo que nos referimos con scripts o Scripting inicialmente debemos abordar el tema de la Programación Orientada a Objetos, con base en ella se han creado la mayoría de los paquete SIG tanto libres como comerciales. 

Programación Orientada a Objetos (POO o OOP en ingles):

Es un tipo especial de programación que apareció a principio de los años 70, es considerado un nuevo paradigma, en el cual se analizan los problemas de programación de forma similar a la vida real. En este tipo de programación todo se organiza en una estructura llamada "Objeto". En la POO todo la interfaz del programa y los elementos necesarios para la solución del "problema" son "Objetos".

Un Objeto: es una abstracción de algún hecho o ente del mundo real, con atributos que representan sus características o propiedades, y métodos que emulan su comportamiento o actividad. Los Objetos se agrupan en "Clases".

Clases:  es como una plantilla, un prototipo para crear Objetos. Para comprender esto consideren que tu (el que esta leyendo :) ) y yo materializamos la Clase: "humano", siendo así tu, yo, y cualquier otra persona son Objetos de la Clase "humano".

Esto se entiende mejor con ejemplos digamos que creamos una clase "vehículo", puede tener muchas propiedades o atributos, así como métodos:

Clase Vehículo 
     Propiedades: nombre, color, modelo, marca, placa, tipo.
     Métodos: desplazarse, tiempo de viaje..............

Para crear un "ejemplar" o "instancia" de la Clase vehículo le asigno los atributos necesarios:
Objeto 1:   nombre: el preferido, modelo: Fiat Uno, marca: Fiat. placa: ......


Hacer clic sobre la imagen para agrandar

Al desarrollar nuestro programa podríamos querer separar Objetos que consideramos diferentes, por ejemplo: los vehículos sedan, de las camionetas, y a su vez de los camiones. O dependiendo del programa separar los vehículos particulares de los de transporte y estos a su vez en otras variantes. Esto nos lleva a separar el problema en clases y crear una "Jerarquía" de las mismas, un aspecto fundamental en la POO es la relación entre las Clases y la "herencia".

Sin embargo, no toda las Clases generan Objetos directamente, pudiéramos requerir crear una Clase que agrupa propiedades y métodos comunes, estas son las llamadas Clases Abstractas. En el ejemplo anterior la Clase Vehículo podría ser una Clase abstracta que posee atributos y métodos comunes que heredaran las diferentes Clases de vehículos.

Veamos un ejemplo más relacionado con nuestro campo:
 Clic en la imagen para agrandar
 
En la imagen un ejemplo de jerarquía de Clases, por supuesto no se detallan cálculos ya que es a modo de ejemplo, como pueden ver las Clases hijas heredan las propiedades comunes de la Clase Abstracta. Las Clases hijas de la Clase Geometria deben implementar todas sus propiedades y metodos, por supuesto pueden tener otros metodos. 

La POO es ideal para la construcción de un SIG y cuando piensas en "Objetos", en este caso espaciales o georeferenciados, se hace más fácil entenderlos, modificarlos o  construirlos

Ahora bien ¿de que nos sirve este conocimiento como programadores SIG? ¿como lo utilizamos? y ¿Que es el Scripting y como se relaciona con esto?

Eso lo veremos en la continuación :)