Scripting en gvSIG: Importar CSV como capa y crear geometría

Teniendo un .csv con nuestros datos crearemos una nueva capa con estas entidades, y utilizando el valor de sus columnas X e Y crearemos una geometría que asociaremos a cada entidad.

 

 

 

creaCapaCsvPuntosRecorrido.py:

from gvsig import *
from commonsdialog import *
from geom import *
import csv
import os.path
def main():
 """Crea Capa de puntos desde un CSV cogiendo como coordenadas las
 dos ultimas columnas X e Y
 """
 #Introducir la direcci?n donde se encuentra el archivo .csv
 rpath = inputbox("Ruta del csv", "Seleccione Parth",QUESTION)
 if not rpath:
   msgbox("Introduzca la ruta al csv", "Error", FORBIDEN)
   return
 #Abre el fichero en modo de lectura
 input = open(rpath, 'r')
 #var reader coge los datos del .csv
 reader = csv.reader(input)
 #Variables auxiliares
 c = 2
 indice = 0
 #Creamos un esquema vacio para la capa, y valores necesarios
 # para crear la capa dentro del for
 schema = createSchema()
 crs = currentProject().getProjectionCode()
 capa = "csv_layer14.shp"
 ruta1 = "C:\gvsig\\"
 ruta = ruta1 + capa
 #For pasando por todas las lineas del csv.
 #Agrega a la capa nueva
 for row in reader:
   #Primera linea la coge como esquema (solo se ejecutar? una vez)
   if c == 2:
     #Añade todas las columnas
     for i in row:
       schema.append(i,"STRING", size=10, default=0)
     #Añadimos la geometria
     schema.append("GEOMETRY", "GEOMETRY")
     #Creamos la capa
     newLayer = createShape( schema,
       ruta,
       CRS = crs,
       geometryType = POINT
     )
     c -= 1
     #Preparamos los valores para el else
     #
     values = dict()
     esquema = schema.getCopy()
     #Lineas en adelante como datos
   else:
     #Añadimos los datos
     for i in row:
       values[indice]=i
       indice += 1
     #Creamos la geometria para cada punto cogiendo las columnas
     #Las columnas X,Y son las dos ?ltimas, usaremos el indice.
     x = indice - 2
     y = indice - 1
     punto = createPoint(int(values[x]),int(values[y]))
     buf = float(values[4])
     values[indice] = punto
     newLayer.append(values)
     indice = 0

#Añadimos y guardamos la capa.
currentView().addLayer(newLayer)
newLayer.commit()
input.close()

Ejemplo de csv que utilizaremos en este ejemplo y en los siguientes:

tornados.csv

ID,CODIGO,NOMBRE,FECHA,INTENSIDAD,VELOCIDAD,X,Y
 1,X159,Gelir,23/06/09,5,30,0,0
 2,X295,Ferla,24/08/09,4,20,10,15
 3,X820,Vurla,25/10/10,7,35,23,44
 4,X810,Bastir,26/04/11,5,24,25,38
 5,X890,Cerstart,27/06/12,"3.5",15,32,14
 6,X183,Xer,28/06/11,"8.1",35,65,73
 7,X105,Gagmor,01/09/10,"7.5",17,13,5
 8,X109,Tristi,30/06/09,"6.4",28,98,15
 9,X852,Marme,20/07/11,"5.3",20,83,45

5 comentarios sobre “Scripting en gvSIG: Importar CSV como capa y crear geometría

Agrega el tuyo

  1. Pingback: masquesig
  2. Buenas, soy una estudiante de la uci que para la tesis tengo que hacer un componente que genere el área de influencia en un SIG, quisiera saber si me pueden dar alguna documentacion respecto a este tema, me sería de gran ayuda

      1. Muchas gracias, busqué ese curso pero necesito el enlace directo del video para poder descargarlo.

Responder a Óscar Martínez Cancelar la respuesta

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. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Blog de WordPress.com.

Subir ↑

A %d blogueros les gusta esto: