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!
Esto tiene una pintaza!!