Nos vamos a wordpress!
http://masquesig.wordpress.com/
jueves, 15 de agosto de 2013
TEDx: Darle sentido a los mapas
El diseñador de mapas Aris Venetikidis está fascinado por los mapas que dibujamos en nuestra mente cuando nos movemos por la ciudad –no tanto como mapas de calles, sino como esquemas o diagramas, imágenes abstractas de las relaciones entre las partes. ¿Cómo podemos aprender de estos mapas mentales para hacer mejores mapas reales? Como caso de prueba, rehace el famoso mapa de autobuses de Dublín.
Scripting en gvSIG: csv y buffer
Vamos a realizar una pequeña modificación a nuestro script anterior, en vez de crear una geometría de punto, lo que haremos será marcar el área de influencia (buffer) de cada entidad. El área de influencia se calcula a partir de la geometría y con una distancia que nosotros determinamos de la forma:
geometria.buffer(distancia)
Para que funcione este script modicaremos la nueva capa newLayer como tipo de geometria "SURFACE" para que permita almacenar superficies.
newLayer = createShape( schema,
ruta,
CRS = crs,
geometryType = SURFACE
)
Añadiremos la linea "buf" para dar el valor de distancia que en este caso lo tomamos de la columna [4] o "Intensidad". Al añadir la geometría punto a la entidad, le añadimos el .buffer() de la forma que quedaría así:
buf = float(values[4])
values[indice] = punto.buffer(buf)
De esta forma ejecutaremos el script y lo que obtendremos es una nueva capa de tipo SURFACE con el área de influencia alrededor de cada punto.
Más adelante realizaremos un script independiente que calcule el buffer de las entidades que seleccionemos de una capa ya creada.
miércoles, 14 de agosto de 2013
Scripting en gvSIG: Importar CSV y adjuntar la geometría a cada entidad
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. para agregar 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 añadir los datos a continuacion en 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
Síguenos en: @masquesig
Suscribirse a:
Entradas (Atom)