Scripting: exprime tu gvSIG (II). Crear un buffer

En anteriores entradas hemos visto cómo crear un script muy sencillito en gvSIG 2.0.

En esta entrada os traemos un vídeo en el que implementaremos un script que crea una capa shape de polígonos que se obtienen de aplicar un buffer a las geometrías de una capa de puntos. La distancia del buffer se obtiene de uno de los campos de la capa de puntos.

Los pasos que se siguen en el script son:

  • Obtener la capa de entrada
  • Crear la definición de datos (Schema) de la nueva capa
  • Obtener los datos de creación de la nueva capa
  • Crear la nueva capa
  • Recorrer los fenómenos de la capa de entrada (puntos)
  • Generar las nuevas geometrías
  • Añadir las nuevas geometrías a la nueva capa
  • Terminar la edición de la capa nueva
  • Liberar el conjunto de fenómenos de la capa de entrada

El código con comentarios es el siguiente

from gvsig import *

def main():
  #Obtenemos la capa activa
  layer = currentLayer()

  #Creamos la definición de los datos
  schema = createSchema(layer.getSchema())
  schema.modify()

  #Obtenemos la proyeccion
  crs = currentProject().getProjectionCode()

  #Definimos la ruta de la nueva capa
  ruta = "/home/victor/carto/influencia.shp"

  #Creamos la capa
  newLayer = createShape(
    schema,
    ruta,
    CRS = crs,
    geometryType = SURFACE
  )

  #Obtenemos los fenomenos de la capa de entrada
  features = layer.features()

  #Recorremos los fenomenos 
  for feature in features:

    # Obtenemos el valor del area de influencia
    influencia = feature.get("Influencia")

    #Creamos la nueva geometria aplicando un buffer sobre la geometria del fenomeno de entrada
    geom = feature.geometry().buffer(influencia)

    # Obtenemos los valores de los atributos del fenomeno de entrada
    values = feature.getValues()

    # Insertamos la nueva geometria en la capa nueva
    values["GEOMETRY"] = geom
    newLayer.append(values)

  # Terminamos la edicion de la nueva capa guardando los cambios
  newLayer.commit()

  # Liberamos el conjunto de fenomenos de la capa de entrada
  features.dispose()

Debes tener en cuenta que para que funcione es necesario tener la última versión de gvSIG 2.0 y la extensión Scripting Framework instaladas. Además, la vista debe tener una capa activa y esta capa debe tener un campo llamado Influencia de tipo double. Y au mejor, podéis modificar el script para que se adapte a vuestros datos.

Espero que os haya gustado y recordad; nos vemos en las próximas Jornadas internacionales de gvSIG!

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

One Response to Scripting: exprime tu gvSIG (II). Crear un buffer

  1. Nacho Varela says:

    Esto tiene una pintaza!!

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