Scripting en gvSIG: Unir puntos en una línea

unirpuntos

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)

 

2 comentarios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: