Cómo importar archivos *.csv (comma separated values) en GRASS mediante un script de python

Los join a la tabla atributiva de vectoriales en GRASS no es posible porque no está soportado para el driver dbf. Sin embargo, es posible copiar columnas de otras databases en la tabla atributiva de vectoriales a través de la ejecución del módulo db.execute con la opción UPDATE de SQL. No obstante, si se requiere usar los valores de una tabla externa no es necesario el join en el modo “clásico”. En GRASS, cada espacio de trabajo tiene asignado un directorio dbf donde se almacenan las tablas atributivas de los vectoriales y cualquier tabla externa con este driver que tengamos a bien alojar allí. Si cualquiera de esas tablas externas es requerida para su uso con un vectorial simplemente se conecta con ella a través de v.db.connect.

Para poblar con databases externas los directorios dbf de los espacios de trabajo se puede hacer uso del módulo db.in.ogr. Los formatos aceptados por el driver ogr son DBF, CSV, PostgreSQL, SQLite, MySQL, ODBC; entre otros. Para probar el uso del comando se va a considerar la tabla en formato *.csv de este artículo:

Hacer join a tablas externas en QGIS

que corresponde a (tabla_join.csv):

ID,a,b,c
1,5.01,2.33,2.33
2,5.01,2.33,2.33
3,5.01,2.33,2.33
4,5.01,2.33,2.33
5,5.01,2.33,2.33

con su respectivo *.csvt asociado:

Integer,Real,Real,Real

La ejecución del siguiente código en python:

#!/usr/bin/env python
# -*- coding: utf-8

import grass.script as grass
from os import system

system("clear")

print "Archivos *.csv y *.csvt\n"

path1="/home/zeito/Desktop/PRUEBAS_QGIS/"

system("cd "+path1+"; ls *.csv*")

print

file=str(raw_input("Nombre del archivo csv = ? "))

path2=path1+file

salida=str(raw_input("Nombre del archivo de salida = ? "))

grass.run_command("db.in.ogr",
					dsn=path2, 
					output=salida,
					overwrite="true")

produce esta salida; donde se integra el uso del comando db.select para corroborar que la importación fue exitosa.

Archivos *.csv y *.csvt

tabla_join.csv  tabla_join.csvt

Nombre del archivo csv = ? tabla_join.csv
Nombre del archivo de salida = ? datos
Imported table <datos> with 5 rows
zeito@debian:~$ db.select datos
ID|a|b|c
1|5.01|2.33|2.33
2|5.01|2.33|2.33
3|5.01|2.33|2.33
4|5.01|2.33|2.33
5|5.01|2.33|2.33
zeito@debian:~$
About these ads
Esta entrada fue publicada en Código Python, GRASS, QGIS, SIG. Guarda el enlace permanente.

2 respuestas a Cómo importar archivos *.csv (comma separated values) en GRASS mediante un script de python

  1. Pingback: Cómo importar archivos *.csv (comma separated values) en GRASS mediante un script de python | #Geoprocessamento em Foco | Scoop.it

  2. Pingback: Cómo conectar bases de datos externas en GRASS a archivos vectoriales |

Deja un comentario

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

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