viernes, febrero 22, 2008

Algunas cositas nuevas

Ahí va un resumen de las cosas nuevas con las que cuenta SEXTANTE después de esta última semana, para aquellos que puedan tener interés.
  • La linea de comandos funciona como calculadora. Esto ya lo mencione en otra entrada y, como lo prometido es deuda, ya está implementado. Ahora en la línea de comandos se puede meter directamente una expresión como "mdt * 2 + 25" y, si existe una capa raster llamada "mdt", se crea una nueva con esa expresión. Lo que hace realmente es convertir esa en una expresión más compleja que llama a la extensión de la calculadora. si la expresión es solo numérica (como, por ejemplo "5 * sqrt(6) "), simplemente se devuelve el resultado de la operación en la consola.
  • Se puede variar el tamaño de letra en la línea de comandos. Básicamente, esto lo he hecho para que sea más fácil dar el curso de Girona sin que los alumnos se dejen los ojos mirando a las letrillas que salen del cañón ;-) .
  • El modelizador maneja salidas que son entradas modificadas. Hay extensiones de SEXTANTE que no generan algo nuevo sino que modifican algo existente. Éste es el caso de las extensiones de selección, por ejemplo (y es probable que muchas de las vectoriales sean de este tipo en un futuro...) Antes no se podían utilizar en el modelizador, porque en la cadena de procesos no se identificaba cuándo un proceso debía ejecutarse antes que otro. Al utilizar dos procesos la misma capa (aunque uno de ellos la altere), no se detectaba la dependencia. He hecho un cambio en la estructura y ahora este tipo de extensiones se integran sin problemas.
  • Se pueden modificar los grupos. Harto de que todo el mundo diga que no sabe donde encontrar una extensión dada, que es fácil perderse y que tal extensión estaría mejor en tal grupo, he añadido la posibilidad de que cada usuario ponga las extensiones en el grupo que desee (tanto de los existentes como de nuevos que se pueden crear). Es más, incluso en la pestaña que desee (que por defecto solo hay una llamada SEXTANTE, pero pueden crearse tantas como se quiera). Así que ahora, que cada cual se lo monte como más le guste.
A estas novedades hay que sumar una grande: hay versión nueva publicada y un primer paquete de ficheros de ayuda contextual. Eso, como requiere más detalles, lo dejo para otra entrada que escribiré dentro de un rato ;-)

viernes, febrero 15, 2008

Modelizando

Me comentaba el otro día Manuel de la Calle que en su opinión lo bueno del modelizador de SEXTANTE es que, aunque hay herramientas similares en software propietario (el ModelBuilder de ArcGIS o el Macro Modeller de Idrisi, por ejemplo), en software libre no hay nada parecido dentro del mundo SIG. La verdad es que, aunque existen diferencias con las herramientas propietarias (para hacer mas similar el modelizador de SEXTANTE al uso desde el gestor de extensiones no hay drag-and-drop, por ejemplo), las funcionalidades son muy parecidas, y ninguna herramienta SIG libre que yo conozca tiene algo así.

A pesar de esto, me he puesto a hacer algunas búsquedas intentando encontrar cómo pueden crearse modelos y automatizar tareas creando esquemas gráficos de flujo de datos, empleando unicamente software libre. Y por supuesto, puesto que todo está ya inventado, lo he encontrado.

El siguiente artículo es una frikada de mucho cuidado que describe como montar un sistema basado en Kepler y procesos de GRASS mediante el cual se pueden hacer modelos gráficos con la misma filosofía que los de SEXTANTE.

Automatic Transformation from Geospatial Conceptual Workflow to Executable Workflow Using GRASS GIS Command Line Modules in Kepler

Es, sin duda, mucho más complejo y poco amigable que lo que hay en SEXTANTE (el objetivo que he perseguido ha sido sobre todo el que estos modelos estén al alcance de todo usuario, y no sean una cosa mas avanzada como quizás sea la linea de comandos), pero posibilidades tiene muchas, ya que Kepler es un software potentísimo.

El que esté interesado que lo lea y ya me contais luego cuál os gusta más ;-)

miércoles, febrero 13, 2008

Historial

Ahora que ya están listos el modelizador y el gestor de procesos por lotes, he añadido un nuevo elemento encaminado a aumentar la productividad de los usuarios de SEXTANTE: el historial. Ahora, cada vez que se ejecuta un comando de SEXTANTE (ya sea desde la linea de comandos o desde el gestor de extensiones), éste se añade al historial y de este modo puede posteriormente consultarse el histórico de todo cuanto se ha hecho con SEXTANTE.

Los comandos del historial se dividen en grupos por días, de modo similar a como aparece por ejemplo en el historial de páginas web de Firefox. Cada acción ejecutada en SEXTANTE se convierte (independientemente del elemento desde el que se haya llamado) en una (o varias, según el caso) expresión de linea de comandos.

Además de poder consultarlo, pueden repetirse los comandos haciendo simplemente doble clic sobre un comando dado. Existe además la opción de ejecutar todos los comandos desde un punto dado, de forma que, implícitamente, el historial va creando una especie de script que después puede ejecutarse sin más que un clic de ratón. Al ejecutar uno o varios comandos desde el historial, se abre la línea de comandos y se lanzan desde ahi los proceso correspondientes.

De este modo, esta línea de comandos canaliza la actividad, tomando cada vez más protagonismo, algo que me gusta mucho porque creo que es una herramienta de gran importancia dentro de SEXTANTE. De hecho, ya hay comandos para abrir vistas o añadir capas, tareas que no son de SEXTANTE sino de gvSIG, y tengo previsto añadir nuevas, ya que todo cuanto se añada sin duda añadirá más versatilidad y productividad a SEXTANTE.

Personalmente, para probar cualquier nueva cosa que hago yo utilizo ya exclusivamente la linea de comandos, y me ahorro mucho tiempo, la verdad. Cierto es que yo soy el creador y soy un poco (sólo un poco) mas friqui que es usuario medio de gvSIG-SEXTANTE, pero la línea de comandos es apta para todo tipo de usuarios. Antonio, que está encargándose de testear lo nuevo que voy haciendo, está encantado con ella y la utiliza siempre que puede, y creo que es un usuario representativo de la gran mayoría. Así que, por el bien de SEXTANTE de cara a los usuarios, le hago caso en las recomendaciones que hace, que no son pocas.

Otra idea que tengo es implementar la calculadora de mapas directamente en la línea de comandos, de forma que metiendo una expresión algebraica la interprete y calcule una nueva capa raster. Y, llevando esto algo más al extremo, tengo una pequeña idea loca para implementar la calculadora de mapas y el uso de extensiones con notación polaca inversa (RPN) y una pila (al estilo Forth), algo que puede ser interesante y novedoso. En realidad, lo tengo ya implementado desde hace tiempo...pero falta adaptarlo al marco de gvSIG-SEXTANTE. Escribiré algo más sobre esto en una entrada más adelante...Por ahora, quédense con lo del historial, que es a lo que venía esta entrada :-)

domingo, febrero 10, 2008

And the winner is...

En mi lista de nuevas extensiones a crear tengo cosas tan extravagantes (a la par que interesantes) como autómatas celulares, algunos parámetros hidrológicos experimentales sobre los que he leído recientemente o análisis textural de imágenes, entre otros. Por ello, la selección de la extensión numero 200 no era sencilla, había mucho donde elegir.

Al final, en lugar de decidirme por este tipo de historias raras que seguro que sólo me interesan a mí y a algún otro tipo raro(que los hay...), he optado por la sencillez y he implementado una nueva extensión muy simple. De hecho, es la mas simple de todas las que SEXTANTE contiene. ¿Qué hace esta extensión? Pues básicamente toma una capa vectorial y genera como resultado...¡la misma capa vectorial!. Sorprendente, ¿verdad?

Si os estáis preguntando para qué sirve esto, os diré que, puesto que SEXTANTE puede guardar los resultados de la extensiones en varios formatos (que se seleccionan en función de la extensión del archivo que se especifique), usando esa extensión se puede guardar una capa en un formato distinto al que tiene. Ahora pensareis que esto ya lo hace gvSIG, que para ello tiene un bonito menu "exportar". Cierto, pero no se vayan todavía que aún hay mas.

Gracias a que todas las extensiones de SEXTANTE se pueden ejecutar por lotes, podemos hacer no una conversión de formato, sino muchas. Es decir, que ahora SEXTANTE es una herramienta de conversión masiva de ficheros vectoriales. Yo acabo de pasar toda una carpeta entera de shapefiles a GML y la cosa parece que funciona ;-)

No está mal como extensión 200, ¿no?

viernes, febrero 01, 2008

Ultimos retoques para la nueva versión

Esta semana apenas he añadido nada nuevo a SEXTANTE, principalmente porque he estado dándoles un curso a la gente de la Junta de Extremadura en Badajoz, y con ir hasta allí y volver cada día ya tenía suficiente. No obstante, he sacado ratillos por las tardes (sacrificando mis horas de toque, snif...) para corregir algunas cosillas que hemos visto durante el curso, principalmente cadenas de texto que faltaban en las traducciones, o añadir sugerencias que me han hecho. Ademas, he añadido algunas extensiones rápidas, por aquello de ir avanzando algo y que no se quede el desarrollo parado

Como consecuencia de esto, el número de extensiones es hoy de 199, y la solidez de SEXTANTE se acerca a unos valores bastante aceptables (no ha fallado ni una vez en el curso a pesar de mi afición a improvisar los ejercicios...). Voy a implementar una extensión más y a lo largo de la semana que viene completar algo de testeo y sacar una nueva versión estable, que al final creo que sera la 0.5, ya que incluye muchas cosas nuevas. Es decir, en una semana habrá versión estable nueva con la bonita cifra de 200 extensiones. A esto habrá que sumar las que está desarrollando la gente de Dielmo, y que lo más probable es que estén incluidas dentro del paquete de SEXTANTE si me da tiempo a revisarlas y probarlas un poco en estos días.

Lo único que tengo que decidir es qué extension será la número 200, que dado lo señalado de la cifra tiene que ser algo chulo. Se me ocurren un par de ideas de mi lista, pero aún no lo tengo del todo claro. Ya lo contaré en su momento ;-)