En el próximo ejemplo aprenderemos a unir los puntos que tenemos en una capa, en una línea que añadiremos a una nueva capa. Este ejemplo podemos utilizarlo a continuación del creado aquí.
En este caso unirá todos los puntos de la capa en el orden que vienen. Si lo que necesitamos es tan solo unir en una linea ciertos puntos, deberíamos hacer tan solo alguna pequeña modificación.
Ejemplo: unir puntos en una línea
unirPuntoEnUnaLinea.py
from gvsig import * from geom import * def main(): """Crear una linea uniendo los puntos de la capa activa""" #Teniendo una capa de puntos activa en la Vista #Almacenamos todas las entidades features = currentLayer().features() #Creamos una geometria de tipo linea geom = createGeometry(LINE) #for: por cada entidad (o puntos) que tengamos en la capa for i in features: #Sacamos las coordendas x = i.geometry().getX() y = i.geometry().getY() #Creamos un punto para.. punto = createPoint(x,y) #..añadirlo como vertice a la linea linea = geom.addVertex(punto) #Almacenmos los valores de la nueva entidad creada #La añadiremos a la nueva capa values = dict() values["ID"]=101 values["CODIGO"]="linea" #geom corresponde a la linea creada en el for: values["GEOMETRY"]=geom #Creamos esquema schema = createSchema() schema.append("ID","INTEGER", size=7, default=0) schema.append("CODIGO", "STRING", size=5, default="m") schema.append("GEOMETRY", "GEOMETRY") #Creamos capa con nuestro nuevo esquema crs = currentProject().getProjectionCode() capa = "linea_union.shp" ruta1 = "C:\gvsig\\" ruta = ruta1 + capa newLayer = createShape(schema, ruta, CRS = crs, geometryType=LINE) newLayer.append(values) #Guardamos y añadimos la capa a la vista newLayer.commit() currentView().addLayer(newLayer)
Lovely bllog you have here