Cómo ejecutar grass.script en python sin necesidad de iniciar GRASS-QGIS

Hasta ahora, todos los script que he venido desarrollando en python tenían que ser corridos desde la cónsola de GRASS-QGIS por lo que había que tener en ejecución el QGIS. Para producir código sin necesidad de probarlo en este último por fin encontré la siguiente referencia:

Python Scripts For GRASS GIS

donde se detallan los pasos para hacerlo, sin embargo, como tiene mucha más información sobre otros tópicos voy a resumirlo. Lo primero que hice fue copiar todas estás líneas:

export GISBASE="/usr/lib/grass64"
export PATH="$PATH:$GISBASE/bin:$GISBASE/script:$GISBASE/lib"
export PYTHONPATH="${PYTHONPATH}:$GISBASE/etc/python/"
export PYTHONPATH="${PYTHONPATH}:$GISBASE/etc/python/grass"
export PYTHONPATH="${PYTHONPATH}:$GISBASE/etc/python/grass/script"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$GISBASE/lib"
export GIS_LOCK=$$
export GISRC="$HOME/.grassrc6"

al final de mi .bashrc porque tengo esa versión de GRASS. La ejecución del comando:

dpkg -l grass 

produjo esta salida:

zeito@debian:~$ dpkg -l grass
Deseado=Desconocido/Instalar/Eliminar/Purgar/Retener
| Estado=No/Instalado/Config-files/Desempaquetado/Medio-conf/Medio-inst/espera-disparo/pendiente-disparo
|/ Err?=(ninguno)/Requiere-reinst (Estado,Err: mayúsc.=malo)
||/ Nombre               Versión             Descripción
+++-====================-====================-========================================================
ii  grass                6.4.0~rc6+42329-3    Geographic Resources Analysis Support System

que lo corrobora. Después modifiqué el .grassrc6 (home de usuario) con esta información:

GISDBASE: /home/zeito/datagrass
LOCATION_NAME: tiznados2
MAPSET: jose
GRASS_GUI: tcltk

porque el anterior apuntaba a la creada por el plugin sextante de QGIS; que nunca me ha funcionado.

Finalmente, corrí este script:

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

import grass.script as grass

def getVectorMap():
	# Parse el comando y obtiene resultados de la ejecución del módulo de GRASS.
	parse = dict.keys(grass.parse_command("g.list", _type="vect"))[9].split(" ")
	# Crea un objeto nulo para almacenar los nombres de los mapas vectoriales.
	result = []
	#Añade un nombre de mapa vectorial cuando el value no es vacio
	for i in range(len(parse)):
		if not parse[i] == "":
			result.append(parse[i])

	return result

print getVectorMap()

que adapté de la referencia y lo ejecuté en cónsola de bash. El resultado fue similar al de la referencia pero ajustado a los valores de mi dataset:

zeito@debian:~$ python py_vector.py
['centroide', 'cuenca_puntos_centroide', 'rotado4']
zeito@debian:~$ 
Esta entrada fue publicada en Código Python, GRASS, QGIS, SIG, Software Libre. Guarda el enlace permanente.

3 respuestas a Cómo ejecutar grass.script en python sin necesidad de iniciar GRASS-QGIS

  1. Pingback: Cómo incorporar código externo desarrollado por el usuario en un script de python |

  2. Pingback: Script de python para determinar sucesivamente NDVI, SAVI, LAI y εNB lanzado en cónsola de bash (Linux Debian) |

  3. Pingback: Cómo transformar los centroides de una cuadrícula en una capa vectorial de puntos con GRASS-QGIS |

Responder

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