Scripting: exprime tu gvSIG

Una de las novedades que introduce la versión 2.0 de gvSIG es la inclusión de un pequeño entorno para el desarrollo y ejecución de scripts que interactúen con la aplicación. Estos scripts nos permiten automatizar pequeñas tareas o añadir alguna funcionalidad que echemos en falta y que seamos capaces de implementar.

El lenguaje elegido desde el proyecto gvSIG para dar soporte al scripting es Jython , que es una implemetación del lenguaje Python que se ‘ejecuta’ en la máquina virtual de Java (JVM), lo que permite que esté completamente integrado con gvSIG.

La instalación por defecto de gvSIG no lleva de base el plugin que nos aportara el soporte de scripting, así que lo primero que tendremos que hacer será instalarlo, puedes consultar cómo en la documentación del administrador de complementos de gvSIG .

El plugin de scripting aporta dos herramientas, por un lado un editor y organizador de nuestros scripts, Scripting Composer, y por otro un lanzador de estos, Scripting Launcher. Estas dos herramientas están disponibles en el menú Herramientas -> Scripting así como en dos botones en la barra de botones de gvSIG.

images/scripting-composer.png

Como podéis ver en la imagen el Composer se divide en 3 zonas principales, un explorador de archivos, desde el que podemos ver los scripts que tenemos disponibles, un área de edición, y un área de notificaciones dónde podremos ver las incidencias que ocurran durante la ejecución de nuestros scripts.

Una de las ventajas que ofrece que la extensión de scripting esté integrada en gvSIG es que nos permite acceder a los documentos que tenemos cargados en la aplicación e interactuar con ellos, lo que junto con el refactoring de los APIS de gvSIG 2.0 y las librerías que se han creado, permite crear scripts de forma sencilla. Veámoslo con un ejemplo.

Supongamos que tenemos una capa cargada cuya estructura de datos tiene un campo llamado ELEVATION y nosotros queremos obtener los valores máximo y mínimo de este campo. Para ello debemos recorrer todas las features de la capa y comprobar los valores de este campo, almacenar el valor máximo y el mínimo y mostrarlos mediante una ventana.

from gvsig import *
from commonsdialog import *

def main(): 
  layer = currentLayer()
  if layer == None:
    msgbox("Deberá haber cargada y 
             seleccionada una capa.", "AVISO", 1)
    return

  emax = 0.0
  emin = 0.0

  for feature in layer.features():
    if feature.ELEVATION > emax :
      emax = feature.ELEVATION
    if feature.ELEVATION < emin or emin ==0.0:
      emin = feature.ELEVATION
  msgbox("Elevación máxima=%s y mínima=%s" % (emax, emin),
         "Elevation", 0)

El resultado de ejecutar el script es el que puede verse en la imágen siguiente.

images/script-ejecuted.png

Espero que os haya gustado y que os anime a empezar a programar vuestros propios scripts en Python y si es así, y os volvéis algo pythonicos tal vez os guste leer el zen de python o mejor aún leerlo ejecutando vuestro propio script en gvSIG. ¿Nos contáis cómo?

This entry was posted in gvSIG Desktop, scripting, spanish. Bookmark the permalink.

6 Responses to Scripting: exprime tu gvSIG

  1. filippov70 says:

    Good day!
    I use gvSIG in my University (Tomsk Polytechnic University), I teach students to use GIS for land use planning.
    Our task is, we know the area of the parcel we need to make it editable in the active layer.
    For example, you can specify the length of one side, to calculate the other side – it’s simple math. Then, create the rectangle on the current layer.
    Could you help to create such a script for Jython, to set an example?
    I am familiar only with Java (geotools.org).

  2. Pingback: “Curso de Scripting en gvSIG 2.0 (I) – Tratamiento de datos vectoriales” en la plataforma gvsig-training | gvSIG blog

  3. Pingback: Inscripciones abiertas para el curso de scripting en gvSIG | MundoGEO

  4. Pingback: Nuevas fechas para el curso de Scripting en gvSIG 2.0 | MundoGEO

  5. Pingback: Anonymous

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s